Merge pull request #21037 from DougGregor/flatten-abs
[ABI] [stdlib] Remove magnitude-based overload of abs(_:).
diff --git a/benchmark/single-source/Hash.swift b/benchmark/single-source/Hash.swift
index 3767c87..366a8e0 100644
--- a/benchmark/single-source/Hash.swift
+++ b/benchmark/single-source/Hash.swift
@@ -21,7 +21,7 @@
tags: [.validation, .algorithm])
class Hash {
- /// \brief C'tor.
+ /// C'tor.
init(_ bs: Int) {
blocksize = bs
messageLength = 0
@@ -29,7 +29,7 @@
assert(blocksize <= 64, "Invalid block size")
}
- /// \brief Add the bytes in \p Msg to the hash.
+ /// Add the bytes in \p Msg to the hash.
func update(_ Msg: String) {
for c in Msg.unicodeScalars {
data[dataLength] = UInt8(ascii: c)
@@ -39,7 +39,7 @@
}
}
- /// \brief Add the bytes in \p Msg to the hash.
+ /// Add the bytes in \p Msg to the hash.
func update(_ Msg: [UInt8]) {
for c in Msg {
data[dataLength] = c
@@ -65,7 +65,7 @@
final var data = [UInt8](repeating: 0, count: 64)
final var blocksize: Int
- /// \brief Hash the internal data.
+ /// Hash the internal data.
func hash() {
fatalError("Pure virtual")
}
@@ -78,7 +78,7 @@
fatalError("Pure virtual")
}
- /// \brief Blow the data to fill the block.
+ /// Blow the data to fill the block.
func fillBlock() {
fatalError("Pure virtual")
}
@@ -87,7 +87,7 @@
final
var HexTblFast : [UInt8] = [48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102]
- /// \brief Convert a 4-byte integer to a hex string.
+ /// Convert a 4-byte integer to a hex string.
final
func toHex(_ In: UInt32) -> String {
var In = In
@@ -110,13 +110,13 @@
}
}
- /// \brief Left-rotate \p x by \p c.
+ /// Left-rotate \p x by \p c.
final
func rol(_ x: UInt32, _ c: UInt32) -> UInt32 {
return x &<< c | x &>> (32 &- c)
}
- /// \brief Right-rotate \p x by \p c.
+ /// Right-rotate \p x by \p c.
final
func ror(_ x: UInt32, _ c: UInt32) -> UInt32 {
return x &>> c | x &<< (32 &- c)
diff --git a/docs/TextFormatting.rst b/docs/TextFormatting.rst
index 9fbcecc..c7cbf7b 100644
--- a/docs/TextFormatting.rst
+++ b/docs/TextFormatting.rst
@@ -131,11 +131,11 @@
protocol. To change the debug representation for a type, you don't
need to declare conformance: simply give the type a ``debugFormat()``::
- /// \brief A thing that can be printed in the REPL and the Debugger
+ /// A thing that can be printed in the REPL and the Debugger
protocol CustomDebugStringConvertible {
typealias DebugRepresentation : TextOutputStreamable = String
- /// \brief Produce a textual representation for the REPL and
+ /// Produce a textual representation for the REPL and
/// Debugger.
func debugFormat() -> DebugRepresentation
}
@@ -169,11 +169,11 @@
need to do is declare conformance to ``CustomStringConvertible``; there's nothing to
implement::
- /// \brief A thing that can be print()ed and toString()ed.
+ /// A thing that can be print()ed and toString()ed.
protocol CustomStringConvertible : CustomDebugStringConvertible {
typealias PrintRepresentation : TextOutputStreamable = DebugRepresentation
- /// \brief produce a "pretty" textual representation.
+ /// produce a "pretty" textual representation.
///
/// In general you can return a String here, but if you need more
/// control, return a custom TextOutputStreamable type
@@ -181,7 +181,7 @@
return debugFormat()
}
- /// \brief Simply convert to String
+ /// Simply convert to String
///
/// You'll never want to reimplement this
func toString() -> String {
diff --git a/docs/WindowsBuild.md b/docs/WindowsBuild.md
index 205b07e..66bfc7c 100644
--- a/docs/WindowsBuild.md
+++ b/docs/WindowsBuild.md
@@ -166,17 +166,13 @@
cmake -G "Ninja" "%swift_source_dir%/lldb"^
-DCMAKE_BUILD_TYPE=Debug^
-DLLDB_PATH_TO_CMARK_SOURCE="%swift_source_dir%/cmark"^
- -DLLDB_PATH_TO_CMARK_BUILD="%swift_source_dir%/build/Ninja-DebugAssert/cmark-windows-amd64"^
-DLLDB_PATH_TO_LLVM_SOURCE="%swift_source_dir%/llvm"^
- -DLLDB_PATH_TO_LLVM_BUILD="%swift_source_dir%/build/Ninja-DebugAssert/llvm-windows-amd64"^
-DLLDB_PATH_TO_CLANG_SOURCE="%swift_source_dir%/clang"^
- -DLLDB_PATH_TO_CLANG_BUILD="%swift_source_dir%/build/Ninja-DebugAssert/llvm-windows-amd64"^
-DLLDB_PATH_TO_SWIFT_SOURCE="%swift_source_dir%/swift"^
+ -DLLDB_PATH_TO_CMARK_BUILD="%swift_source_dir%/build/Ninja-DebugAssert/cmark-windows-amd64"^
+ -DLLDB_PATH_TO_CLANG_BUILD="%swift_source_dir%/build/Ninja-DebugAssert/llvm-windows-amd64"^
+ -DLLDB_PATH_TO_LLVM_BUILD="%swift_source_dir%/build/Ninja-DebugAssert/llvm-windows-amd64"^
-DLLDB_PATH_TO_SWIFT_BUILD="%swift_source_dir%/build/Ninja-DebugAssert/swift-windows-amd64"^
- -DCMAKE_C_COMPILER="%llvm_bin_dir%/clang-cl.exe"^
- -DCMAKE_CXX_COMPILER="%llvm_bin_dir%/clang-cl.exe"^
- -DCMAKE_C_FLAGS="/Z7"^
- -DCMAKE_CXX_FLAGS="/Z7 -Wno-c++98-compat"^
-DLLVM_ENABLE_ASSERTIONS=YES
popd
cmake --build "%swift_source_dir%/build/Ninja-RelWithDebInfoAssert/lldb-windows-amd64"
diff --git a/docs/doxygen.cfg.in b/docs/doxygen.cfg.in
index ab44073..c17eecd 100644
--- a/docs/doxygen.cfg.in
+++ b/docs/doxygen.cfg.in
@@ -138,7 +138,7 @@
# comments will behave just like the Qt-style comments (thus requiring an
# explicit @brief command for a brief description.
-JAVADOC_AUTOBRIEF = NO
+JAVADOC_AUTOBRIEF = YES
# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
# treat a multi-line C++ special comment block (i.e. a block of //! or ///
diff --git a/include/swift/ABI/Metadata.h b/include/swift/ABI/Metadata.h
index 99832e9..6a2dce4 100644
--- a/include/swift/ABI/Metadata.h
+++ b/include/swift/ABI/Metadata.h
@@ -1957,7 +1957,7 @@
};
using GenericBoxHeapMetadata = TargetGenericBoxHeapMetadata<InProcess>;
-/// \brief The control structure of a generic or resilient protocol
+/// The control structure of a generic or resilient protocol
/// conformance witness.
///
/// Resilient conformances must use a pattern where new requirements
@@ -2008,7 +2008,7 @@
};
using ResilientWitnessTable = TargetResilientWitnessTable<InProcess>;
-/// \brief The control structure of a generic or resilient protocol
+/// The control structure of a generic or resilient protocol
/// conformance, which is embedded in the protocol conformance descriptor.
///
/// Witness tables need to be instantiated at runtime in these cases:
diff --git a/include/swift/AST/ASTContext.h b/include/swift/AST/ASTContext.h
index 438f3cf..c1f56f0 100644
--- a/include/swift/AST/ASTContext.h
+++ b/include/swift/AST/ASTContext.h
@@ -112,16 +112,16 @@
class SyntaxArena;
}
-/// \brief The arena in which a particular ASTContext allocation will go.
+/// The arena in which a particular ASTContext allocation will go.
enum class AllocationArena {
- /// \brief The permanent arena, which is tied to the lifetime of
+ /// The permanent arena, which is tied to the lifetime of
/// the ASTContext.
///
/// All global declarations and types need to be allocated into this arena.
/// At present, everything that is not a type involving a type variable is
/// allocated in this arena.
Permanent,
- /// \brief The constraint solver's temporary arena, which is tied to the
+ /// The constraint solver's temporary arena, which is tied to the
/// lifetime of a particular instance of the constraint solver.
///
/// Any type involving a type variable is allocated in this arena.
@@ -144,14 +144,14 @@
/// entity name.
Optional<KnownFoundationEntity> getKnownFoundationEntity(StringRef name);
-/// \brief Introduces a new constraint checker arena, whose lifetime is
+/// Introduces a new constraint checker arena, whose lifetime is
/// tied to the lifetime of this RAII object.
class ConstraintCheckerArenaRAII {
ASTContext &Self;
void *Data;
public:
- /// \brief Introduces a new constraint checker arena, supplanting any
+ /// Introduces a new constraint checker arena, supplanting any
/// existing constraint checker arena.
///
/// \param self The ASTContext into which this constraint checker arena
@@ -216,13 +216,13 @@
/// it before being set to null.
UnifiedStatsReporter *Stats = nullptr;
- /// \brief The language options used for translation.
+ /// The language options used for translation.
LangOptions &LangOpts;
- /// \brief The search path options used by this AST context.
+ /// The search path options used by this AST context.
SearchPathOptions &SearchPathOpts;
- /// \brief The source manager object.
+ /// The source manager object.
SourceManager &SourceMgr;
/// Diags - The diagnostics engine.
@@ -252,7 +252,7 @@
#define IDENTIFIER_WITH_NAME(Name, IdStr) Identifier Id_##Name;
#include "swift/AST/KnownIdentifiers.def"
- /// \brief The list of external definitions imported by this context.
+ /// The list of external definitions imported by this context.
llvm::SetVector<Decl *> ExternalDefinitions;
/// FIXME: HACK HACK HACK
@@ -270,7 +270,7 @@
llvm::StringMap<Type> RemappedTypes;
private:
- /// \brief The current generation number, which reflects the number of
+ /// The current generation number, which reflects the number of
/// times that external modules have been loaded.
///
/// Various places in the AST, such as the set of extensions associated with
@@ -289,7 +289,7 @@
/// Cache of module names that fail the 'canImport' test in this context.
llvm::SmallPtrSet<Identifier, 8> FailedModuleImportNames;
- /// \brief Retrieve the allocator for the given arena.
+ /// Retrieve the allocator for the given arena.
llvm::BumpPtrAllocator &
getAllocator(AllocationArena arena = AllocationArena::Permanent) const;
@@ -630,7 +630,7 @@
/// Does any proper bookkeeping to keep all module loaders up to date as well.
void addSearchPath(StringRef searchPath, bool isFramework, bool isSystem);
- /// \brief Adds a module loader to this AST context.
+ /// Adds a module loader to this AST context.
///
/// \param loader The new module loader, which will be added after any
/// existing module loaders.
@@ -640,7 +640,7 @@
void addModuleLoader(std::unique_ptr<ModuleLoader> loader,
bool isClang = false);
- /// \brief Load extensions to the given nominal type from the external
+ /// Load extensions to the given nominal type from the external
/// module loaders.
///
/// \param nominal The nominal type whose extensions should be loaded.
@@ -650,7 +650,7 @@
/// one.
void loadExtensions(NominalTypeDecl *nominal, unsigned previousGeneration);
- /// \brief Load the methods within the given class that produce
+ /// Load the methods within the given class that produce
/// Objective-C class or instance methods with the given selector.
///
/// \param classDecl The class in which we are searching for @objc methods.
@@ -675,7 +675,7 @@
unsigned previousGeneration,
llvm::TinyPtrVector<AbstractFunctionDecl *> &methods);
- /// \brief Retrieve the Clang module loader for this ASTContext.
+ /// Retrieve the Clang module loader for this ASTContext.
///
/// If there is no Clang module loader, returns a null pointer.
/// The loader is owned by the AST context.
@@ -686,7 +686,7 @@
/// Does nothing in non-asserts (NDEBUG) builds.
void verifyAllLoadedModules() const;
- /// \brief Check whether the module with a given name can be imported without
+ /// Check whether the module with a given name can be imported without
/// importing it.
///
/// Note that even if this check succeeds, errors may still occur if the
@@ -700,7 +700,7 @@
ModuleDecl *getLoadedModule(Identifier ModuleName) const;
- /// \brief Attempts to load a module into this ASTContext.
+ /// Attempts to load a module into this ASTContext.
///
/// If a module by this name has already been loaded, the existing module will
/// be returned.
@@ -720,7 +720,7 @@
return const_cast<ASTContext *>(this)->getStdlibModule(false);
}
- /// \brief Retrieve the current generation number, which reflects the
+ /// Retrieve the current generation number, which reflects the
/// number of times a module import has caused mass invalidation of
/// lookup tables.
///
@@ -729,14 +729,14 @@
/// with a nominal type.
unsigned getCurrentGeneration() const { return CurrentGeneration; }
- /// \brief Increase the generation number, implying that various lookup
+ /// Increase the generation number, implying that various lookup
/// tables have been significantly altered by the introduction of a new
/// module import.
///
/// \returns the previous generation number.
unsigned bumpGeneration() { return CurrentGeneration++; }
- /// \brief Produce a "normal" conformance for a nominal type.
+ /// Produce a "normal" conformance for a nominal type.
NormalProtocolConformance *
getConformance(Type conformingType,
ProtocolDecl *protocol,
@@ -785,7 +785,7 @@
std::vector<ValueDecl*>
takeDelayedMissingWitnesses(NormalProtocolConformance *conformance);
- /// \brief Produce a specialized conformance, which takes a generic
+ /// Produce a specialized conformance, which takes a generic
/// conformance and substitutions written in terms of the generic
/// conformance's signature.
///
@@ -800,7 +800,7 @@
ProtocolConformance *generic,
SubstitutionMap substitutions);
- /// \brief Produce an inherited conformance, for subclasses of a type
+ /// Produce an inherited conformance, for subclasses of a type
/// that already conforms to a protocol.
///
/// \param type The type for which we are retrieving the conformance.
@@ -848,10 +848,10 @@
const IterableDeclContext *idc,
LazyMemberLoader *lazyLoader);
- /// \brief Returns memory usage of this ASTContext.
+ /// Returns memory usage of this ASTContext.
size_t getTotalMemory() const;
- /// \brief Returns memory used exclusively by constraint solver.
+ /// Returns memory used exclusively by constraint solver.
size_t getSolverMemory() const;
/// Complain if @objc or dynamic is used without importing Foundation.
diff --git a/include/swift/AST/ASTMangler.h b/include/swift/AST/ASTMangler.h
index 9814232..3159c8b 100644
--- a/include/swift/AST/ASTMangler.h
+++ b/include/swift/AST/ASTMangler.h
@@ -198,7 +198,7 @@
void bindGenericParameters(CanGenericSignature sig);
- /// \brief Mangles a sugared type iff we are mangling for the debugger.
+ /// Mangles a sugared type iff we are mangling for the debugger.
template <class T> void appendSugaredType(Type type) {
assert(DWARFMangling &&
"sugared types are only legal when mangling for the debugger");
diff --git a/include/swift/AST/ASTNode.h b/include/swift/AST/ASTNode.h
index 5332fa7..2e39a1a 100644
--- a/include/swift/AST/ASTNode.h
+++ b/include/swift/AST/ASTNode.h
@@ -38,16 +38,16 @@
SourceRange getSourceRange() const;
- /// \brief Return the location of the start of the statement.
+ /// Return the location of the start of the statement.
SourceLoc getStartLoc() const;
- /// \brief Return the location of the end of the statement.
+ /// Return the location of the end of the statement.
SourceLoc getEndLoc() const;
void walk(ASTWalker &Walker);
void walk(ASTWalker &&walker) { walk(walker); }
- /// \brief get the underlying entity as a decl context if it is one,
+ /// get the underlying entity as a decl context if it is one,
/// otherwise, return nullptr;
DeclContext *getAsDeclContext() const;
diff --git a/include/swift/AST/ASTWalker.h b/include/swift/AST/ASTWalker.h
index 69519f8..8cd3dc2 100644
--- a/include/swift/AST/ASTWalker.h
+++ b/include/swift/AST/ASTWalker.h
@@ -45,7 +45,7 @@
Kind(Kind), AccKind(AccKind) {}
};
-/// \brief An abstract class used to traverse an AST.
+/// An abstract class used to traverse an AST.
class ASTWalker {
public:
enum class ParentKind {
@@ -92,7 +92,7 @@
}
};
- /// \brief The parent of the node we are visiting.
+ /// The parent of the node we are visiting.
ParentTy Parent;
/// This method is called when first visiting an expression
@@ -173,26 +173,26 @@
/// returns failure.
virtual bool walkToDeclPost(Decl *D) { return true; }
- /// \brief This method is called when first visiting a TypeLoc, before
+ /// This method is called when first visiting a TypeLoc, before
/// walking into its TypeRepr children. If it returns false, the subtree is
/// skipped.
///
/// \param TL The TypeLoc to check.
virtual bool walkToTypeLocPre(TypeLoc &TL) { return true; }
- /// \brief This method is called after visiting the children of a TypeLoc.
+ /// This method is called after visiting the children of a TypeLoc.
/// If it returns false, the remaining traversal is terminated and returns
/// failure.
virtual bool walkToTypeLocPost(TypeLoc &TL) { return true; }
- /// \brief This method is called when first visiting a TypeRepr, before
+ /// This method is called when first visiting a TypeRepr, before
/// walking into its children. If it returns false, the subtree is skipped.
///
/// \param T The TypeRepr to check.
virtual bool walkToTypeReprPre(TypeRepr *T) { return true; }
- /// \brief This method is called after visiting the children of a TypeRepr.
+ /// This method is called after visiting the children of a TypeRepr.
/// If it returns false, the remaining traversal is terminated and returns
/// failure.
virtual bool walkToTypeReprPost(TypeRepr *T) { return true; }
diff --git a/include/swift/AST/AnyFunctionRef.h b/include/swift/AST/AnyFunctionRef.h
index acd5c04..f308c88 100644
--- a/include/swift/AST/AnyFunctionRef.h
+++ b/include/swift/AST/AnyFunctionRef.h
@@ -24,7 +24,7 @@
namespace swift {
class CaptureInfo;
-/// \brief A universal function reference -- can wrap all AST nodes that
+/// A universal function reference -- can wrap all AST nodes that
/// represent functions and exposes a common interface to them.
class AnyFunctionRef {
PointerUnion<AbstractFunctionDecl *, AbstractClosureExpr *> TheFunction;
diff --git a/include/swift/AST/Attr.h b/include/swift/AST/Attr.h
index 367a198..98e447d 100644
--- a/include/swift/AST/Attr.h
+++ b/include/swift/AST/Attr.h
@@ -1395,7 +1395,7 @@
}
};
-/// \brief Attributes that may be applied to declarations.
+/// Attributes that may be applied to declarations.
class DeclAttributes {
/// Linked list of declaration attributes.
DeclAttribute *DeclAttrs;
diff --git a/include/swift/AST/Availability.h b/include/swift/AST/Availability.h
index 13b1409..58d6f7b 100644
--- a/include/swift/AST/Availability.h
+++ b/include/swift/AST/Availability.h
@@ -329,11 +329,11 @@
static AvailabilityContext inferForType(Type t);
- /// \brief Returns the context where a declaration is available
+ /// Returns the context where a declaration is available
/// We assume a declaration without an annotation is always available.
static AvailabilityContext availableRange(const Decl *D, ASTContext &C);
- /// \brief Returns the context for which the declaration
+ /// Returns the context for which the declaration
/// is annotated as available, or None if the declaration
/// has no availability annotation.
static Optional<AvailabilityContext> annotatedAvailableRange(const Decl *D,
diff --git a/include/swift/AST/AvailabilitySpec.h b/include/swift/AST/AvailabilitySpec.h
index 1794d9a..56a085a 100644
--- a/include/swift/AST/AvailabilitySpec.h
+++ b/include/swift/AST/AvailabilitySpec.h
@@ -58,7 +58,7 @@
void operator delete(void *Data) throw() = delete;
};
-/// \brief An availability specification that guards execution based on the
+/// An availability specification that guards execution based on the
/// run-time platform and version, e.g., OS X >= 10.10.
class PlatformVersionConstraintAvailabilitySpec : public AvailabilitySpec {
PlatformKind Platform;
@@ -100,7 +100,7 @@
}
};
-/// \brief An availability specification that guards execution based on the
+/// An availability specification that guards execution based on the
/// compile-time language version, e.g., swift >= 3.0.1.
class LanguageVersionConstraintAvailabilitySpec : public AvailabilitySpec {
SourceLoc SwiftLoc;
diff --git a/include/swift/AST/Builtins.h b/include/swift/AST/Builtins.h
index e635992..22b6b8c 100644
--- a/include/swift/AST/Builtins.h
+++ b/include/swift/AST/Builtins.h
@@ -90,15 +90,15 @@
getLLVMIntrinsicIDForBuiltinWithOverflow(BuiltinValueKind ID);
-/// \brief Create a ValueDecl for the builtin with the given name.
+/// Create a ValueDecl for the builtin with the given name.
///
/// Returns null if the name does not identifier a known builtin value.
ValueDecl *getBuiltinValueDecl(ASTContext &Context, Identifier Name);
-/// \brief Returns the name of a builtin declaration given a builtin ID.
+/// Returns the name of a builtin declaration given a builtin ID.
StringRef getBuiltinName(BuiltinValueKind ID);
-/// \brief The information identifying the builtin - its kind and types.
+/// The information identifying the builtin - its kind and types.
class BuiltinInfo {
public:
BuiltinValueKind ID;
@@ -106,7 +106,7 @@
bool isReadNone() const;
};
-/// \brief The information identifying the llvm intrinsic - its id and types.
+/// The information identifying the llvm intrinsic - its id and types.
class IntrinsicInfo {
mutable llvm::AttributeList Attrs =
llvm::DenseMapInfo<llvm::AttributeList>::getEmptyKey();
@@ -116,7 +116,7 @@
bool hasAttribute(llvm::Attribute::AttrKind Kind) const;
};
-/// decodeLLVMAtomicOrdering - turn a string like "release" into the LLVM enum.
+/// Turn a string like "release" into the LLVM enum.
llvm::AtomicOrdering decodeLLVMAtomicOrdering(StringRef O);
}
diff --git a/include/swift/AST/CaptureInfo.h b/include/swift/AST/CaptureInfo.h
index 47b49ba..c1cab20 100644
--- a/include/swift/AST/CaptureInfo.h
+++ b/include/swift/AST/CaptureInfo.h
@@ -124,7 +124,7 @@
class DynamicSelfType;
-/// \brief Stores information about captured variables.
+/// Stores information about captured variables.
class CaptureInfo {
const CapturedValue *Captures;
DynamicSelfType *DynamicSelf;
@@ -152,7 +152,7 @@
Count = C.size();
}
- /// \brief Return a filtered list of the captures for this function,
+ /// Return a filtered list of the captures for this function,
/// filtering out global variables. This function returns the list that
/// actually needs to be closed over.
///
diff --git a/include/swift/AST/Decl.h b/include/swift/AST/Decl.h
index 6f01693..49d1603 100644
--- a/include/swift/AST/Decl.h
+++ b/include/swift/AST/Decl.h
@@ -268,40 +268,40 @@
SWIFT_INLINE_BITFIELD_BASE(Decl, bitmax(NumDeclKindBits,8)+1+1+1+1+1+1+1,
Kind : bitmax(NumDeclKindBits,8),
- /// \brief Whether this declaration is invalid.
+ /// Whether this declaration is invalid.
Invalid : 1,
- /// \brief Whether this declaration was implicitly created, e.g.,
+ /// Whether this declaration was implicitly created, e.g.,
/// an implicit constructor in a struct.
Implicit : 1,
- /// \brief Whether this declaration was mapped directly from a Clang AST.
+ /// Whether this declaration was mapped directly from a Clang AST.
///
/// Use getClangNode() to retrieve the corresponding Clang AST.
FromClang : 1,
- /// \brief Whether we've already performed early attribute validation.
+ /// Whether we've already performed early attribute validation.
/// FIXME: This is ugly.
EarlyAttrValidation : 1,
- /// \brief The validation state of this declaration.
+ /// The validation state of this declaration.
ValidationState : 2,
- /// \brief Whether this declaration was added to the surrounding
+ /// Whether this declaration was added to the surrounding
/// DeclContext of an active #if config clause.
EscapedFromIfConfig : 1
);
SWIFT_INLINE_BITFIELD_FULL(PatternBindingDecl, Decl, 1+2+16,
- /// \brief Whether this pattern binding declares static variables.
+ /// Whether this pattern binding declares static variables.
IsStatic : 1,
- /// \brief Whether 'static' or 'class' was used.
+ /// Whether 'static' or 'class' was used.
StaticSpelling : 2,
: NumPadBits,
- /// \brief The number of pattern binding declarations.
+ /// The number of pattern binding declarations.
NumPatternEntries : 16
);
@@ -347,27 +347,27 @@
);
SWIFT_INLINE_BITFIELD(VarDecl, AbstractStorageDecl, 1+4+1+1+1+1,
- /// \brief Whether this property is a type property (currently unfortunately
+ /// Whether this property is a type property (currently unfortunately
/// called 'static').
IsStatic : 1,
- /// \brief The specifier associated with this variable or parameter. This
+ /// The specifier associated with this variable or parameter. This
/// determines the storage semantics of the value e.g. mutability.
Specifier : 4,
- /// \brief Whether this declaration was an element of a capture list.
+ /// Whether this declaration was an element of a capture list.
IsCaptureList : 1,
- /// \brief Whether this vardecl has an initial value bound to it in a way
+ /// Whether this vardecl has an initial value bound to it in a way
/// that isn't represented in the AST with an initializer in the pattern
/// binding. This happens in cases like "for i in ...", switch cases, etc.
HasNonPatternBindingInit : 1,
- /// \brief Whether this is a property used in expressions in the debugger.
+ /// Whether this is a property used in expressions in the debugger.
/// It is up to the debugger to instruct SIL how to access this variable.
IsDebuggerVar : 1,
- /// \brief Whether this is a property defined in the debugger's REPL.
+ /// Whether this is a property defined in the debugger's REPL.
/// FIXME: Remove this once LLDB has proper support for resilience.
IsREPLVar : 1
);
@@ -385,7 +385,7 @@
);
SWIFT_INLINE_BITFIELD(EnumElementDecl, ValueDecl, 1,
- /// \brief The ResilienceExpansion to use for default arguments.
+ /// The ResilienceExpansion to use for default arguments.
DefaultArgumentResilienceExpansion : 1
);
@@ -423,7 +423,7 @@
/// Whether this function is a 'static' method.
IsStatic : 1,
- /// \brief Whether 'static' or 'class' was used.
+ /// Whether 'static' or 'class' was used.
StaticSpelling : 2,
/// Whether we are statically dispatched even if overridable
@@ -675,10 +675,10 @@
Bits.Decl.EscapedFromIfConfig = false;
}
- /// \brief Get the Clang node associated with this declaration.
+ /// Get the Clang node associated with this declaration.
ClangNode getClangNodeImpl() const;
- /// \brief Set the Clang node associated with this declaration.
+ /// Set the Clang node associated with this declaration.
void setClangNode(ClangNode Node);
void updateClangNode(ClangNode node) {
@@ -692,7 +692,7 @@
public:
DeclKind getKind() const { return DeclKind(Bits.Decl.Kind); }
- /// \brief Retrieve the name of the given declaration kind.
+ /// Retrieve the name of the given declaration kind.
///
/// This name should only be used for debugging dumps and other
/// developer aids, and should never be part of a diagnostic or exposed
@@ -730,7 +730,7 @@
/// also a declaration context) or its declaration context.
DeclContext *getInnermostDeclContext() const;
- /// \brief Retrieve the module in which this declaration resides.
+ /// Retrieve the module in which this declaration resides.
LLVM_READONLY
ModuleDecl *getModuleContext() const;
@@ -777,13 +777,13 @@
"only for use within the debugger");
void dump(raw_ostream &OS, unsigned Indent = 0) const;
- /// \brief Pretty-print the given declaration.
+ /// Pretty-print the given declaration.
///
/// \param OS Output stream to which the declaration will be printed.
void print(raw_ostream &OS) const;
void print(raw_ostream &OS, const PrintOptions &Opts) const;
- /// \brief Pretty-print the given declaration.
+ /// Pretty-print the given declaration.
///
/// \param Printer ASTPrinter object.
///
@@ -793,23 +793,23 @@
/// required the declaration to be skipped from printing.
bool print(ASTPrinter &Printer, const PrintOptions &Opts) const;
- /// \brief Determine whether this declaration should be printed when
+ /// Determine whether this declaration should be printed when
/// encountered in its declaration context's list of members.
bool shouldPrintInContext(const PrintOptions &PO) const;
bool walk(ASTWalker &walker);
- /// \brief Return whether this declaration has been determined invalid.
+ /// Return whether this declaration has been determined invalid.
bool isInvalid() const { return Bits.Decl.Invalid; }
- /// \brief Mark this declaration invalid.
+ /// Mark this declaration invalid.
void setInvalid(bool isInvalid = true) { Bits.Decl.Invalid = isInvalid; }
- /// \brief Determine whether this declaration was implicitly generated by the
+ /// Determine whether this declaration was implicitly generated by the
/// compiler (rather than explicitly written in source code).
bool isImplicit() const { return Bits.Decl.Implicit; }
- /// \brief Mark this declaration as implicit.
+ /// Mark this declaration as implicit.
void setImplicit(bool implicit = true) { Bits.Decl.Implicit = implicit; }
/// Whether we have already done early attribute validation.
@@ -890,13 +890,13 @@
/// \returns the brief comment attached to this declaration.
StringRef getBriefComment() const;
- /// \brief Returns true if there is a Clang AST node associated
+ /// Returns true if there is a Clang AST node associated
/// with self.
bool hasClangNode() const {
return Bits.Decl.FromClang;
}
- /// \brief Retrieve the Clang AST node from which this declaration was
+ /// Retrieve the Clang AST node from which this declaration was
/// synthesized, if any.
LLVM_READONLY
ClangNode getClangNode() const {
@@ -906,7 +906,7 @@
return getClangNodeImpl();
}
- /// \brief Retrieve the Clang declaration from which this declaration was
+ /// Retrieve the Clang declaration from which this declaration was
/// synthesized, if any.
LLVM_READONLY
const clang::Decl *getClangDecl() const {
@@ -916,7 +916,7 @@
return getClangNodeImpl().getAsDecl();
}
- /// \brief Retrieve the Clang macro from which this declaration was
+ /// Retrieve the Clang macro from which this declaration was
/// synthesized, if any.
LLVM_READONLY
const clang::MacroInfo *getClangMacro() {
@@ -926,7 +926,7 @@
return getClangNodeImpl().getAsMacro();
}
- /// \brief Return the GenericContext if the Decl has one.
+ /// Return the GenericContext if the Decl has one.
LLVM_READONLY
const GenericContext *getAsGenericContext() const;
@@ -968,7 +968,7 @@
}
};
-/// \brief Use RAII to track Decl validation progress and non-reentrancy.
+/// Use RAII to track Decl validation progress and non-reentrancy.
class DeclValidationRAII {
Decl *D;
@@ -987,7 +987,7 @@
}
};
-/// \brief Allocates memory for a Decl with the given \p baseSize. If necessary,
+/// Allocates memory for a Decl with the given \p baseSize. If necessary,
/// it includes additional space immediately preceding the Decl for a ClangNode.
/// \note \p baseSize does not need to include space for a ClangNode if
/// requested -- the necessary space will be added automatically.
@@ -1025,7 +1025,7 @@
// when adding enumerators.
};
-/// \brief A single requirement in a 'where' clause, which places additional
+/// A single requirement in a 'where' clause, which places additional
/// restrictions on the generic parameters or associated types of a generic
/// function, type, or protocol.
///
@@ -1063,7 +1063,7 @@
void printImpl(ASTPrinter &OS, bool AsWritten) const;
public:
- /// \brief Construct a new type-constraint requirement.
+ /// Construct a new type-constraint requirement.
///
/// \param Subject The type that must conform to the given protocol or
/// composition, or be a subclass of the given class type.
@@ -1077,7 +1077,7 @@
return { ColonLoc, RequirementReprKind::TypeConstraint, Subject, Constraint };
}
- /// \brief Construct a new same-type requirement.
+ /// Construct a new same-type requirement.
///
/// \param FirstType The first type.
/// \param EqualLoc The location of the '==' in the same-type constraint, or
@@ -1089,7 +1089,7 @@
return { EqualLoc, RequirementReprKind::SameType, FirstType, SecondType };
}
- /// \brief Construct a new layout-constraint requirement.
+ /// Construct a new layout-constraint requirement.
///
/// \param Subject The type that must conform to the given layout
/// requirement.
@@ -1104,16 +1104,16 @@
Layout};
}
- /// \brief Determine the kind of requirement
+ /// Determine the kind of requirement
RequirementReprKind getKind() const { return Kind; }
- /// \brief Determine whether this requirement is invalid.
+ /// Determine whether this requirement is invalid.
bool isInvalid() const { return Invalid; }
- /// \brief Mark this requirement invalid.
+ /// Mark this requirement invalid.
void setInvalid() { Invalid = true; }
- /// \brief For a type-bound requirement, return the subject of the
+ /// For a type-bound requirement, return the subject of the
/// conformance relationship.
Type getSubject() const {
assert(getKind() == RequirementReprKind::TypeConstraint ||
@@ -1139,7 +1139,7 @@
return FirstType;
}
- /// \brief For a type-bound requirement, return the protocol or to which
+ /// For a type-bound requirement, return the protocol or to which
/// the subject conforms or superclass it inherits.
Type getConstraint() const {
assert(getKind() == RequirementReprKind::TypeConstraint);
@@ -1176,7 +1176,7 @@
return SecondLayout;
}
- /// \brief Retrieve the first type of a same-type requirement.
+ /// Retrieve the first type of a same-type requirement.
Type getFirstType() const {
assert(getKind() == RequirementReprKind::SameType);
return FirstType.getType();
@@ -1197,7 +1197,7 @@
return FirstType;
}
- /// \brief Retrieve the second type of a same-type requirement.
+ /// Retrieve the second type of a same-type requirement.
Type getSecondType() const {
assert(getKind() == RequirementReprKind::SameType);
return SecondType.getType();
@@ -1218,7 +1218,7 @@
return SecondType;
}
- /// \brief Retrieve the location of the ':' or '==' in an explicitly-written
+ /// Retrieve the location of the ':' or '==' in an explicitly-written
/// conformance or same-type requirement respectively.
SourceLoc getSeparatorLoc() const {
return SeparatorLoc;
@@ -1332,11 +1332,11 @@
const_iterator begin() const { return getParams().begin(); }
const_iterator end() const { return getParams().end(); }
- /// \brief Retrieve the location of the 'where' keyword, or an invalid
+ /// Retrieve the location of the 'where' keyword, or an invalid
/// location if 'where' was not present.
SourceLoc getWhereLoc() const { return WhereLoc; }
- /// \brief Retrieve the set of additional requirements placed on these
+ /// Retrieve the set of additional requirements placed on these
/// generic parameters and types derived from them.
///
/// This list may contain both explicitly-written requirements as well as
@@ -1344,7 +1344,7 @@
/// 'where' keyword is present.
MutableArrayRef<RequirementRepr> getRequirements() { return Requirements; }
- /// \brief Retrieve the set of additional requirements placed on these
+ /// Retrieve the set of additional requirements placed on these
/// generic parameters and types derived from them.
///
/// This list may contain both explicitly-written requirements as well as
@@ -1377,7 +1377,7 @@
void addTrailingWhereClause(ASTContext &ctx, SourceLoc trailingWhereLoc,
ArrayRef<RequirementRepr> trailingRequirements);
- /// \brief Retrieve the outer generic parameter list, which provides the
+ /// Retrieve the outer generic parameter list, which provides the
/// generic parameters of the context in which this generic parameter list
/// exists.
///
@@ -1395,7 +1395,7 @@
/// its outer generic parameter list.
GenericParamList *getOuterParameters() const { return OuterParameters; }
- /// \brief Set the outer generic parameter list. See \c getOuterParameters
+ /// Set the outer generic parameter list. See \c getOuterParameters
/// for more information.
void setOuterParameters(GenericParamList *Outer) { OuterParameters = Outer; }
@@ -1506,13 +1506,13 @@
: _GenericContext(), DeclContext(Kind, Parent) { }
public:
- /// \brief Retrieve the set of parameters to a generic context, or null if
+ /// Retrieve the set of parameters to a generic context, or null if
/// this context is not generic.
GenericParamList *getGenericParams() const { return GenericParams; }
void setGenericParams(GenericParamList *GenericParams);
- /// \brief Determine whether this context has generic parameters
+ /// Determine whether this context has generic parameters
/// of its own.
bool isGeneric() const { return GenericParams != nullptr; }
@@ -1677,7 +1677,7 @@
MutableArrayRef<TypeLoc> Inherited;
- /// \brief The next extension in the linked list of extensions.
+ /// The next extension in the linked list of extensions.
///
/// The bit indicates whether this extension has been resolved to refer to
/// a known nominal type.
@@ -1752,7 +1752,7 @@
/// Retrieve the extended type location.
const TypeLoc &getExtendedTypeLoc() const { return ExtendedType; }
- /// \brief Retrieve the set of protocols that this type inherits (i.e,
+ /// Retrieve the set of protocols that this type inherits (i.e,
/// explicitly conforms to).
MutableArrayRef<TypeLoc> getInherited() { return Inherited; }
ArrayRef<TypeLoc> getInherited() const { return Inherited; }
@@ -1829,7 +1829,7 @@
using DeclContext::operator new;
};
-/// \brief Iterator that walks the extensions of a particular type.
+/// Iterator that walks the extensions of a particular type.
class ExtensionIterator {
ExtensionDecl *current;
@@ -1860,7 +1860,7 @@
}
};
-/// \brief Range that covers a set of extensions.
+/// Range that covers a set of extensions.
class ExtensionRange {
ExtensionIterator first;
ExtensionIterator last;
@@ -1996,7 +1996,7 @@
SourceRange getSourceRange(bool omitAccessors = false) const;
};
-/// \brief This decl contains a pattern and optional initializer for a set
+/// This decl contains a pattern and optional initializer for a set
/// of one or more VarDecls declared together.
///
/// For example, in
@@ -2366,7 +2366,7 @@
}
public:
- /// \brief Return true if this protocol member is a protocol requirement.
+ /// Return true if this protocol member is a protocol requirement.
///
/// Asserts if this is not a member of a protocol.
bool isProtocolRequirement() const;
@@ -2686,7 +2686,7 @@
/// metatype.
Type getDeclaredInterfaceType() const;
- /// \brief Retrieve the set of protocols that this type inherits (i.e,
+ /// Retrieve the set of protocols that this type inherits (i.e,
/// explicitly conforms to).
MutableArrayRef<TypeLoc> getInherited() { return Inherited; }
ArrayRef<TypeLoc> getInherited() const { return Inherited; }
@@ -3040,14 +3040,14 @@
class NominalTypeDecl : public GenericTypeDecl, public IterableDeclContext {
SourceRange Braces;
- /// \brief The first extension of this type.
+ /// The first extension of this type.
ExtensionDecl *FirstExtension = nullptr;
- /// \brief The last extension of this type, used solely for efficient
+ /// The last extension of this type, used solely for efficient
/// insertion of new extensions.
ExtensionDecl *LastExtension = nullptr;
- /// \brief The generation at which we last loaded extensions.
+ /// The generation at which we last loaded extensions.
unsigned ExtensionGeneration;
/// Prepare to traverse the list of extensions.
@@ -3066,7 +3066,7 @@
/// Slow path for \c takeConformanceLoader().
std::pair<LazyMemberLoader *, uint64_t> takeConformanceLoaderSlow();
- /// \brief A lookup table containing all of the members of this type and
+ /// A lookup table containing all of the members of this type and
/// its extensions.
///
/// The table itself is lazily constructed and updated when
@@ -3092,7 +3092,7 @@
/// so that its members can eventually be added to the lookup table.
void addedExtension(ExtensionDecl *ext);
- /// \brief A lookup table used to find the protocol conformances of
+ /// A lookup table used to find the protocol conformances of
/// a given nominal type.
mutable ConformanceLookupTable *ConformanceTable = nullptr;
@@ -3140,18 +3140,18 @@
void setBraces(SourceRange braces) { Braces = braces; }
- /// \brief Should this declaration behave as if it must be accessed
+ /// Should this declaration behave as if it must be accessed
/// resiliently, even when we're building a non-resilient module?
///
/// This is used for diagnostics, because we do not want a behavior
/// change between builds with resilience enabled and disabled.
bool isFormallyResilient() const;
- /// \brief Do we need to use resilient access patterns outside of this type's
+ /// Do we need to use resilient access patterns outside of this type's
/// resilience domain?
bool isResilient() const;
- /// \brief Do we need to use resilient access patterns when accessing this
+ /// Do we need to use resilient access patterns when accessing this
/// type from the given module?
bool isResilient(ModuleDecl *M, ResilienceExpansion expansion) const;
@@ -3182,10 +3182,10 @@
/// generic parameters bound if this is a generic type.
Type getDeclaredInterfaceType() const;
- /// \brief Add a new extension to this nominal type.
+ /// Add a new extension to this nominal type.
void addExtension(ExtensionDecl *extension);
- /// \brief Retrieve the set of extensions of this type.
+ /// Retrieve the set of extensions of this type.
ExtensionRange getExtensions();
/// Make a member of this nominal type, or one of its extensions,
@@ -3320,7 +3320,7 @@
static bool classof(const ExtensionDecl *D) { return false; }
};
-/// \brief This is the declaration of an enum.
+/// This is the declaration of an enum.
///
/// For example:
///
@@ -3943,7 +3943,7 @@
bool walkInheritedProtocols(
llvm::function_ref<TypeWalker::Action(ProtocolDecl *)> fn) const;
- /// \brief Determine whether this protocol inherits from the given ("super")
+ /// Determine whether this protocol inherits from the given ("super")
/// protocol.
bool inheritsFrom(const ProtocolDecl *Super) const;
@@ -3985,6 +3985,9 @@
->existentialConformsToSelfSlow();
}
+ /// Does this protocol require a self-conformance witness table?
+ bool requiresSelfConformanceWitnessTable() const;
+
/// Find direct Self references within the given requirement.
///
/// \param allowCovariantParameters If true, 'Self' is assumed to be
@@ -4288,18 +4291,18 @@
public:
- /// \brief Should this declaration be treated as if annotated with transparent
+ /// Should this declaration be treated as if annotated with transparent
/// attribute.
bool isTransparent() const;
- /// \brief Determine whether this storage is a static member, if it
+ /// Determine whether this storage is a static member, if it
/// is a member. Currently only variables can be static.
inline bool isStatic() const; // defined in this header
- /// \brief Return the interface type of the stored value.
+ /// Return the interface type of the stored value.
Type getValueInterfaceType() const;
- /// \brief Determine how this storage is implemented.
+ /// Determine how this storage is implemented.
StorageImplInfo getImplInfo() const {
if (auto ptr = Accessors.getPointer())
return ptr->getImplInfo();
@@ -4320,13 +4323,13 @@
/// used carefully.
void overwriteImplInfo(StorageImplInfo implInfo);
- /// \brief Return true if this is a VarDecl that has storage associated with
+ /// Return true if this is a VarDecl that has storage associated with
/// it.
bool hasStorage() const {
return Bits.AbstractStorageDecl.HasStorage;
}
- /// \brief Return true if this storage has the basic accessors/capability
+ /// Return true if this storage has the basic accessors/capability
/// to be mutated. This is generally constant after the accessors are
/// installed by the parser/importer/whatever.
///
@@ -4344,7 +4347,7 @@
return !getAllAccessors().empty();
}
- /// \brief Return the ownership of values opaquely read from this storage.
+ /// Return the ownership of values opaquely read from this storage.
OpaqueReadOwnership getOpaqueReadOwnership() const {
return OpaqueReadOwnership(Bits.AbstractStorageDecl.OpaqueReadOwnership);
}
@@ -4352,7 +4355,7 @@
Bits.AbstractStorageDecl.OpaqueReadOwnership = unsigned(ownership);
}
- /// \brief Return true if reading this storage requires the ability to
+ /// Return true if reading this storage requires the ability to
/// modify the base value.
bool isGetterMutating() const {
return Bits.AbstractStorageDecl.IsGetterMutating;
@@ -4361,7 +4364,7 @@
Bits.AbstractStorageDecl.IsGetterMutating = isMutating;
}
- /// \brief Return true if modifying this storage requires the ability to
+ /// Return true if modifying this storage requires the ability to
/// modify the base value.
bool isSetterMutating() const {
return Bits.AbstractStorageDecl.IsSetterMutating;
@@ -4393,24 +4396,24 @@
SourceLoc lbraceLoc, ArrayRef<AccessorDecl*> accessors,
SourceLoc rbraceLoc);
- /// \brief Add a setter to an existing Computed var.
+ /// Add a setter to an existing Computed var.
///
/// This should only be used by the ClangImporter.
void setComputedSetter(AccessorDecl *Set);
- /// \brief Add a behavior to a property.
+ /// Add a behavior to a property.
void addBehavior(TypeRepr *Type, Expr *Param);
- /// \brief Add a synthesized getter.
+ /// Add a synthesized getter.
void setSynthesizedGetter(AccessorDecl *getter);
- /// \brief Add a synthesized setter.
+ /// Add a synthesized setter.
void setSynthesizedSetter(AccessorDecl *setter);
- /// \brief Add a synthesized read coroutine.
+ /// Add a synthesized read coroutine.
void setSynthesizedReadCoroutine(AccessorDecl *read);
- /// \brief Add a synthesized modify coroutine.
+ /// Add a synthesized modify coroutine.
void setSynthesizedModifyCoroutine(AccessorDecl *modify);
/// Does this storage require an opaque accessor of the given kind?
@@ -4438,12 +4441,12 @@
return SourceRange();
}
- /// \brief Retrieve the getter used to access the value of this variable.
+ /// Retrieve the getter used to access the value of this variable.
AccessorDecl *getGetter() const {
return getAccessor(AccessorKind::Get);
}
- /// \brief Retrieve the setter used to mutate the value of this variable.
+ /// Retrieve the setter used to mutate the value of this variable.
AccessorDecl *getSetter() const {
return getAccessor(AccessorKind::Set);
}
@@ -4457,40 +4460,40 @@
void overwriteSetterAccess(AccessLevel accessLevel);
- /// \brief Return the decl for the immutable addressor if it exists.
+ /// Return the decl for the immutable addressor if it exists.
AccessorDecl *getAddressor() const {
return getAccessor(AccessorKind::Address);
}
- /// \brief Return the decl for the mutable accessor if it exists.
+ /// Return the decl for the mutable accessor if it exists.
AccessorDecl *getMutableAddressor() const {
return getAccessor(AccessorKind::MutableAddress);
}
- /// \brief Return the appropriate addressor for the given access kind.
+ /// Return the appropriate addressor for the given access kind.
AccessorDecl *getAddressorForAccess(AccessKind accessKind) const {
if (accessKind == AccessKind::Read)
return getAddressor();
return getMutableAddressor();
}
- /// \brief Return the decl for the 'read' coroutine accessor if it exists.
+ /// Return the decl for the 'read' coroutine accessor if it exists.
AccessorDecl *getReadCoroutine() const {
return getAccessor(AccessorKind::Read);
}
- /// \brief Return the decl for the 'modify' coroutine accessor if it exists.
+ /// Return the decl for the 'modify' coroutine accessor if it exists.
AccessorDecl *getModifyCoroutine() const {
return getAccessor(AccessorKind::Modify);
}
- /// \brief Return the decl for the willSet specifier if it exists, this is
+ /// Return the decl for the willSet specifier if it exists, this is
/// only valid on a declaration with Observing storage.
AccessorDecl *getWillSetFunc() const {
return getAccessor(AccessorKind::WillSet);
}
- /// \brief Return the decl for the didSet specifier if it exists, this is
+ /// Return the decl for the didSet specifier if it exists, this is
/// only valid on a declaration with Observing storage.
AccessorDecl *getDidSetFunc() const {
return getAccessor(AccessorKind::DidSet);
@@ -4529,18 +4532,18 @@
ModuleDecl *module,
ResilienceExpansion expansion) const;
- /// \brief Should this declaration behave as if it must be accessed
+ /// Should this declaration behave as if it must be accessed
/// resiliently, even when we're building a non-resilient module?
///
/// This is used for diagnostics, because we do not want a behavior
/// change between builds with resilience enabled and disabled.
bool isFormallyResilient() const;
- /// \brief Do we need to use resilient access patterns outside of this
+ /// Do we need to use resilient access patterns outside of this
/// property's resilience domain?
bool isResilient() const;
- /// \brief Do we need to use resilient access patterns when accessing this
+ /// Do we need to use resilient access patterns when accessing this
/// property from the given module?
bool isResilient(ModuleDecl *M, ResilienceExpansion expansion) const;
@@ -4668,7 +4671,7 @@
/// precisely point to the variable type because of type aliases.
SourceRange getTypeSourceRangeForDiagnostics() const;
- /// \brief Returns whether the var is settable in the specified context: this
+ /// Returns whether the var is settable in the specified context: this
/// is either because it is a stored var, because it has a custom setter, or
/// is a let member in an initializer.
///
@@ -5033,7 +5036,7 @@
Keyed
};
-/// \brief Declares a subscripting operator for a type.
+/// Declares a subscripting operator for a type.
///
/// A subscript declaration is defined as a get/set pair that produces a
/// specific type. For example:
@@ -5083,12 +5086,12 @@
SourceRange getSourceRange() const;
SourceRange getSignatureSourceRange() const;
- /// \brief Retrieve the indices for this subscript operation.
+ /// Retrieve the indices for this subscript operation.
ParameterList *getIndices() { return Indices; }
const ParameterList *getIndices() const { return Indices; }
void setIndices(ParameterList *p);
- /// \brief Retrieve the type of the element referenced by a subscript
+ /// Retrieve the type of the element referenced by a subscript
/// operation.
Type getElementInterfaceType() const;
TypeLoc &getElementTypeLoc() { return ElementTy; }
@@ -5098,7 +5101,7 @@
/// element types.
void computeType();
- /// \brief Returns whether the result of the subscript operation can be set.
+ /// Returns whether the result of the subscript operation can be set.
bool isSettable() const;
/// Determine the kind of Objective-C subscripting this declaration
@@ -5156,7 +5159,7 @@
}
};
-/// \brief Base class for function-like declarations.
+/// Base class for function-like declarations.
class AbstractFunctionDecl : public GenericContext, public ValueDecl {
public:
enum class BodyKind {
@@ -5252,7 +5255,7 @@
return hasName() ? getBaseName().getIdentifier().str() : "_";
}
- /// \brief Should this declaration be treated as if annotated with transparent
+ /// Should this declaration be treated as if annotated with transparent
/// attribute.
bool isTransparent() const;
@@ -5331,7 +5334,7 @@
setBodyKind(NewBodyKind);
}
- /// \brief Note that the body was skipped for this function. Function body
+ /// Note that the body was skipped for this function. Function body
/// cannot be attached after this call.
void setBodySkipped(SourceRange bodyRange) {
assert(getBodyKind() == BodyKind::None);
@@ -5339,7 +5342,7 @@
setBodyKind(BodyKind::Skipped);
}
- /// \brief Note that parsing for the body was delayed.
+ /// Note that parsing for the body was delayed.
void setBodyDelayed(SourceRange bodyRange) {
assert(getBodyKind() == BodyKind::None);
BodyRange = bodyRange;
@@ -5552,7 +5555,7 @@
TypeLoc FnRetType;
- /// \brief If this FuncDecl is an accessor for a property, this indicates
+ /// If this FuncDecl is an accessor for a property, this indicates
/// which property and what kind of accessor.
BehaviorRecord *BehaviorParamDecl = nullptr;
OperatorDecl *Operator = nullptr;
@@ -5748,7 +5751,7 @@
bool isPotentialIBActionTarget() const;
};
-/// \brief This represents an accessor function, such as a getter or setter.
+/// This represents an accessor function, such as a getter or setter.
class AccessorDecl final : public FuncDecl {
/// Location of the accessor keyword, e.g. 'set'.
SourceLoc AccessorKeywordLoc;
@@ -5883,7 +5886,7 @@
return nullptr;
}
-/// \brief This represents a 'case' declaration in an 'enum', which may declare
+/// This represents a 'case' declaration in an 'enum', which may declare
/// one or more individual comma-separated EnumElementDecls.
class EnumCaseDecl final : public Decl,
private llvm::TrailingObjects<EnumCaseDecl, EnumElementDecl *> {
@@ -5923,7 +5926,7 @@
}
};
-/// \brief This represents a single case of an 'enum' declaration.
+/// This represents a single case of an 'enum' declaration.
///
/// For example, the X, Y, and Z in this enum:
///
@@ -6117,7 +6120,7 @@
SourceLoc getStartLoc() const { return getConstructorLoc(); }
SourceRange getSourceRange() const;
- /// \brief Get the interface type of the constructed object.
+ /// Get the interface type of the constructed object.
Type getResultInterfaceType() const;
/// Get the interface type of the initializing constructor.
diff --git a/include/swift/AST/DeclContext.h b/include/swift/AST/DeclContext.h
index 9437de7..0e94a95 100644
--- a/include/swift/AST/DeclContext.h
+++ b/include/swift/AST/DeclContext.h
@@ -306,7 +306,7 @@
LLVM_READONLY
ProtocolDecl *getExtendedProtocolDecl() const;
- /// \brief Retrieve the generic parameter 'Self' from a protocol or
+ /// Retrieve the generic parameter 'Self' from a protocol or
/// protocol extension.
///
/// Only valid if \c getSelfProtocolDecl().
@@ -336,17 +336,17 @@
/// - Everything else falls back on getDeclaredInterfaceType().
Type getSelfInterfaceType() const;
- /// \brief Retrieve the innermost generic parameters of this context or any
+ /// Retrieve the innermost generic parameters of this context or any
/// of its parents.
///
/// FIXME: Remove this
GenericParamList *getGenericParamsOfContext() const;
- /// \brief Retrieve the innermost generic signature of this context or any
+ /// Retrieve the innermost generic signature of this context or any
/// of its parents.
GenericSignature *getGenericSignatureOfContext() const;
- /// \brief Retrieve the innermost archetypes of this context or any
+ /// Retrieve the innermost archetypes of this context or any
/// of its parents.
GenericEnvironment *getGenericEnvironmentOfContext() const;
diff --git a/include/swift/AST/DiagnosticConsumer.h b/include/swift/AST/DiagnosticConsumer.h
index fe55b2f..49dc645 100644
--- a/include/swift/AST/DiagnosticConsumer.h
+++ b/include/swift/AST/DiagnosticConsumer.h
@@ -29,7 +29,7 @@
class SourceManager;
enum class DiagID : uint32_t;
-/// \brief Describes the kind of diagnostic.
+/// Describes the kind of diagnostic.
///
enum class DiagnosticKind : uint8_t {
Error,
@@ -38,7 +38,7 @@
Note
};
-/// \brief Extra information carried along with a diagnostic, which may or
+/// Extra information carried along with a diagnostic, which may or
/// may not be of interest to a given diagnostic consumer.
struct DiagnosticInfo {
DiagID ID = DiagID(0);
@@ -56,14 +56,14 @@
StringRef getText() const { return Text; }
};
- /// \brief Extra source ranges that are attached to the diagnostic.
+ /// Extra source ranges that are attached to the diagnostic.
ArrayRef<CharSourceRange> Ranges;
- /// \brief Extra source ranges that are attached to the diagnostic.
+ /// Extra source ranges that are attached to the diagnostic.
ArrayRef<FixIt> FixIts;
};
-/// \brief Abstract interface for classes that present diagnostics to the user.
+/// Abstract interface for classes that present diagnostics to the user.
class DiagnosticConsumer {
protected:
static llvm::SMLoc getRawLoc(SourceLoc Loc);
@@ -80,7 +80,7 @@
public:
virtual ~DiagnosticConsumer();
- /// \brief Invoked whenever the frontend emits a diagnostic.
+ /// Invoked whenever the frontend emits a diagnostic.
///
/// \param SM The source manager associated with the source locations in
/// this diagnostic.
@@ -113,7 +113,7 @@
virtual void informDriverOfIncompleteBatchModeCompilation() {}
};
-/// \brief DiagnosticConsumer that discards all diagnostics.
+/// DiagnosticConsumer that discards all diagnostics.
class NullDiagnosticConsumer : public DiagnosticConsumer {
public:
void handleDiagnostic(SourceManager &SM, SourceLoc Loc,
@@ -123,7 +123,7 @@
const DiagnosticInfo &Info) override;
};
-/// \brief DiagnosticConsumer that forwards diagnostics to the consumers of
+/// DiagnosticConsumer that forwards diagnostics to the consumers of
// another DiagnosticEngine.
class ForwardingDiagnosticConsumer : public DiagnosticConsumer {
DiagnosticEngine &TargetEngine;
@@ -136,7 +136,7 @@
const DiagnosticInfo &Info) override;
};
-/// \brief DiagnosticConsumer that funnels diagnostics in certain files to
+/// DiagnosticConsumer that funnels diagnostics in certain files to
/// particular sub-consumers.
///
/// The intended use case for such a consumer is "batch mode" compilations,
diff --git a/include/swift/AST/DiagnosticEngine.h b/include/swift/AST/DiagnosticEngine.h
index e5db126..3ce153f 100644
--- a/include/swift/AST/DiagnosticEngine.h
+++ b/include/swift/AST/DiagnosticEngine.h
@@ -35,13 +35,13 @@
enum class DescriptiveDeclKind : uint8_t;
enum DeclAttrKind : unsigned;
- /// \brief Enumeration describing all of possible diagnostics.
+ /// Enumeration describing all of possible diagnostics.
///
/// Each of the diagnostics described in Diagnostics.def has an entry in
/// this enumeration type that uniquely identifies it.
enum class DiagID : uint32_t;
- /// \brief Describes a diagnostic along with its argument types.
+ /// Describes a diagnostic along with its argument types.
///
/// The diagnostics header introduces instances of this type for each
/// diagnostic, which provide both the set of argument types (used to
@@ -49,12 +49,12 @@
/// (for other information about the diagnostic).
template<typename ...ArgTypes>
struct Diag {
- /// \brief The diagnostic ID corresponding to this diagnostic.
+ /// The diagnostic ID corresponding to this diagnostic.
DiagID ID;
};
namespace detail {
- /// \brief Describes how to pass a diagnostic argument of the given type.
+ /// Describes how to pass a diagnostic argument of the given type.
///
/// By default, diagnostic arguments are passed by value, because they
/// tend to be small. Larger diagnostic arguments
@@ -65,7 +65,7 @@
};
}
- /// \brief Describes the kind of diagnostic argument we're storing.
+ /// Describes the kind of diagnostic argument we're storing.
///
enum class DiagnosticArgumentKind {
String,
@@ -89,7 +89,7 @@
enum class RequirementKind : uint8_t;
}
- /// \brief Variant type that holds a single diagnostic argument of a known
+ /// Variant type that holds a single diagnostic argument of a known
/// type.
///
/// All diagnostic arguments are converted to an instance of this class.
@@ -352,7 +352,7 @@
}
};
- /// \brief Describes an in-flight diagnostic, which is currently active
+ /// Describes an in-flight diagnostic, which is currently active
/// within the diagnostic engine and can be augmented within additional
/// information (source ranges, Fix-Its, etc.).
///
@@ -365,7 +365,7 @@
DiagnosticEngine *Engine;
bool IsActive;
- /// \brief Create a new in-flight diagnostic.
+ /// Create a new in-flight diagnostic.
///
/// This constructor is only available to the DiagnosticEngine.
InFlightDiagnostic(DiagnosticEngine &Engine)
@@ -376,14 +376,14 @@
InFlightDiagnostic &operator=(InFlightDiagnostic &&) = delete;
public:
- /// \brief Create an active but unattached in-flight diagnostic.
+ /// Create an active but unattached in-flight diagnostic.
///
/// The resulting diagnostic can be used as a dummy, accepting the
/// syntax to add additional information to a diagnostic without
/// actually emitting a diagnostic.
InFlightDiagnostic() : Engine(0), IsActive(true) { }
- /// \brief Transfer an in-flight diagnostic to a new object, which is
+ /// Transfer an in-flight diagnostic to a new object, which is
/// typically used when returning in-flight diagnostics.
InFlightDiagnostic(InFlightDiagnostic &&Other)
: Engine(Other.Engine), IsActive(Other.IsActive) {
@@ -395,54 +395,54 @@
flush();
}
- /// \brief Flush the active diagnostic to the diagnostic output engine.
+ /// Flush the active diagnostic to the diagnostic output engine.
void flush();
- /// \brief Add a token-based range to the currently-active diagnostic.
+ /// Add a token-based range to the currently-active diagnostic.
InFlightDiagnostic &highlight(SourceRange R);
- /// \brief Add a character-based range to the currently-active diagnostic.
+ /// Add a character-based range to the currently-active diagnostic.
InFlightDiagnostic &highlightChars(SourceLoc Start, SourceLoc End);
- /// \brief Add a token-based replacement fix-it to the currently-active
+ /// Add a token-based replacement fix-it to the currently-active
/// diagnostic.
InFlightDiagnostic &fixItReplace(SourceRange R, StringRef Str);
- /// \brief Add a character-based replacement fix-it to the currently-active
+ /// Add a character-based replacement fix-it to the currently-active
/// diagnostic.
InFlightDiagnostic &fixItReplaceChars(SourceLoc Start, SourceLoc End,
StringRef Str);
- /// \brief Add an insertion fix-it to the currently-active diagnostic.
+ /// Add an insertion fix-it to the currently-active diagnostic.
InFlightDiagnostic &fixItInsert(SourceLoc L, StringRef Str) {
return fixItReplaceChars(L, L, Str);
}
- /// \brief Add an insertion fix-it to the currently-active diagnostic. The
+ /// Add an insertion fix-it to the currently-active diagnostic. The
/// text is inserted immediately *after* the token specified.
///
InFlightDiagnostic &fixItInsertAfter(SourceLoc L, StringRef);
- /// \brief Add a token-based removal fix-it to the currently-active
+ /// Add a token-based removal fix-it to the currently-active
/// diagnostic.
InFlightDiagnostic &fixItRemove(SourceRange R);
- /// \brief Add a character-based removal fix-it to the currently-active
+ /// Add a character-based removal fix-it to the currently-active
/// diagnostic.
InFlightDiagnostic &fixItRemoveChars(SourceLoc Start, SourceLoc End) {
return fixItReplaceChars(Start, End, {});
}
- /// \brief Add two replacement fix-it exchanging source ranges to the
+ /// Add two replacement fix-it exchanging source ranges to the
/// currently-active diagnostic.
InFlightDiagnostic &fixItExchange(SourceRange R1, SourceRange R2);
};
- /// \brief Class to track, map, and remap diagnostic severity and fatality
+ /// Class to track, map, and remap diagnostic severity and fatality
///
class DiagnosticState {
public:
- /// \brief Describes the current behavior to take with a diagnostic
+ /// Describes the current behavior to take with a diagnostic
enum class Behavior : uint8_t {
Unspecified,
Ignore,
@@ -454,32 +454,32 @@
};
private:
- /// \brief Whether we should continue to emit diagnostics, even after a
+ /// Whether we should continue to emit diagnostics, even after a
/// fatal error
bool showDiagnosticsAfterFatalError = false;
- /// \brief Don't emit any warnings
+ /// Don't emit any warnings
bool suppressWarnings = false;
- /// \brief Emit all warnings as errors
+ /// Emit all warnings as errors
bool warningsAsErrors = false;
- /// \brief Whether a fatal error has occurred
+ /// Whether a fatal error has occurred
bool fatalErrorOccurred = false;
- /// \brief Whether any error diagnostics have been emitted.
+ /// Whether any error diagnostics have been emitted.
bool anyErrorOccurred = false;
- /// \brief Track the previous emitted Behavior, useful for notes
+ /// Track the previous emitted Behavior, useful for notes
Behavior previousBehavior = Behavior::Unspecified;
- /// \brief Track settable, per-diagnostic state that we store
+ /// Track settable, per-diagnostic state that we store
std::vector<Behavior> perDiagnosticBehavior;
public:
DiagnosticState();
- /// \brief Figure out the Behavior for the given diagnostic, taking current
+ /// Figure out the Behavior for the given diagnostic, taking current
/// state such as fatality into account.
Behavior determineBehavior(DiagID id);
@@ -493,11 +493,11 @@
return showDiagnosticsAfterFatalError;
}
- /// \brief Whether to skip emitting warnings
+ /// Whether to skip emitting warnings
void setSuppressWarnings(bool val) { suppressWarnings = val; }
bool getSuppressWarnings() const { return suppressWarnings; }
- /// \brief Whether to treat warnings as errors
+ /// Whether to treat warnings as errors
void setWarningsAsErrors(bool val) { warningsAsErrors = val; }
bool getWarningsAsErrors() const { return warningsAsErrors; }
@@ -520,32 +520,32 @@
DiagnosticState &operator=(DiagnosticState &&) = default;
};
- /// \brief Class responsible for formatting diagnostics and presenting them
+ /// Class responsible for formatting diagnostics and presenting them
/// to the user.
class DiagnosticEngine {
- /// \brief The source manager used to interpret source locations and
+ /// The source manager used to interpret source locations and
/// display diagnostics.
SourceManager &SourceMgr;
- /// \brief The diagnostic consumer(s) that will be responsible for actually
+ /// The diagnostic consumer(s) that will be responsible for actually
/// emitting diagnostics.
SmallVector<DiagnosticConsumer *, 2> Consumers;
- /// \brief Tracks diagnostic behaviors and state
+ /// Tracks diagnostic behaviors and state
DiagnosticState state;
- /// \brief The currently active diagnostic, if there is one.
+ /// The currently active diagnostic, if there is one.
Optional<Diagnostic> ActiveDiagnostic;
- /// \brief All diagnostics that have are no longer active but have not yet
+ /// All diagnostics that have are no longer active but have not yet
/// been emitted due to an open transaction.
SmallVector<Diagnostic, 4> TentativeDiagnostics;
- /// \brief The set of declarations for which we have pretty-printed
+ /// The set of declarations for which we have pretty-printed
/// results that we can point to on the command line.
llvm::DenseMap<const Decl *, SourceLoc> PrettyPrintedDeclarations;
- /// \brief The number of open diagnostic transactions. Diagnostics are only
+ /// The number of open diagnostic transactions. Diagnostics are only
/// emitted once all transactions have closed.
unsigned TransactionCount = 0;
@@ -571,13 +571,13 @@
return state.getShowDiagnosticsAfterFatalError();
}
- /// \brief Whether to skip emitting warnings
+ /// Whether to skip emitting warnings
void setSuppressWarnings(bool val) { state.setSuppressWarnings(val); }
bool getSuppressWarnings() const {
return state.getSuppressWarnings();
}
- /// \brief Whether to treat warnings as errors
+ /// Whether to treat warnings as errors
void setWarningsAsErrors(bool val) { state.setWarningsAsErrors(val); }
bool getWarningsAsErrors() const {
return state.getWarningsAsErrors();
@@ -591,12 +591,12 @@
state.resetHadAnyError();
}
- /// \brief Add an additional DiagnosticConsumer to receive diagnostics.
+ /// Add an additional DiagnosticConsumer to receive diagnostics.
void addConsumer(DiagnosticConsumer &Consumer) {
Consumers.push_back(&Consumer);
}
- /// \brief Remove and return all \c DiagnosticConsumers.
+ /// Remove and return all \c DiagnosticConsumers.
std::vector<DiagnosticConsumer *> takeConsumers() {
auto Result = std::vector<DiagnosticConsumer*>(Consumers.begin(),
Consumers.end());
@@ -604,12 +604,12 @@
return Result;
}
- /// \brief Return all \c DiagnosticConsumers.
+ /// Return all \c DiagnosticConsumers.
ArrayRef<DiagnosticConsumer *> getConsumers() {
return Consumers;
}
- /// \brief Emit a diagnostic using a preformatted array of diagnostic
+ /// Emit a diagnostic using a preformatted array of diagnostic
/// arguments.
///
/// \param Loc The location to which the diagnostic refers in the source
@@ -627,7 +627,7 @@
return diagnose(Loc, Diagnostic(ID, Args));
}
- /// \brief Emit a diagnostic using a preformatted array of diagnostic
+ /// Emit a diagnostic using a preformatted array of diagnostic
/// arguments.
///
/// \param Loc The declaration name location to which the
@@ -645,7 +645,7 @@
return diagnose(Loc.getBaseNameLoc(), Diagnostic(ID, Args));
}
- /// \brief Emit an already-constructed diagnostic at the given location.
+ /// Emit an already-constructed diagnostic at the given location.
///
/// \param Loc The location to which the diagnostic refers in the source
/// code.
@@ -661,7 +661,7 @@
return InFlightDiagnostic(*this);
}
- /// \brief Emit a diagnostic with the given set of diagnostic arguments.
+ /// Emit a diagnostic with the given set of diagnostic arguments.
///
/// \param Loc The location to which the diagnostic refers in the source
/// code.
@@ -683,7 +683,7 @@
diagnose(Diag<ArgTypes...> ID,
typename detail::PassArgument<ArgTypes>::type... Args) = delete;
- /// \brief Emit a diagnostic with the given set of diagnostic arguments.
+ /// Emit a diagnostic with the given set of diagnostic arguments.
///
/// \param Loc The declaration name location to which the
/// diagnostic refers in the source code.
@@ -699,7 +699,7 @@
return diagnose(Loc.getBaseNameLoc(), Diagnostic(ID, std::move(Args)...));
}
- /// \brief Emit a diagnostic using a preformatted array of diagnostic
+ /// Emit a diagnostic using a preformatted array of diagnostic
/// arguments.
///
/// \param decl The declaration to which this diagnostic refers, which
@@ -717,7 +717,7 @@
return diagnose(decl, Diagnostic(id, args));
}
- /// \brief Emit an already-constructed diagnostic referencing the given
+ /// Emit an already-constructed diagnostic referencing the given
/// declaration.
///
/// \param decl The declaration to which this diagnostic refers, which
@@ -734,7 +734,7 @@
return InFlightDiagnostic(*this);
}
- /// \brief Emit a diagnostic with the given set of diagnostic arguments.
+ /// Emit a diagnostic with the given set of diagnostic arguments.
///
/// \param decl The declaration to which this diagnostic refers, which
/// may or may not have associated source-location information.
@@ -758,7 +758,7 @@
//// \c finishProcessing.
bool finishProcessing();
- /// \brief Format the given diagnostic text and place the result in the given
+ /// Format the given diagnostic text and place the result in the given
/// buffer.
static void formatDiagnosticText(
llvm::raw_ostream &Out, StringRef InText,
@@ -766,16 +766,16 @@
DiagnosticFormatOptions FormatOpts = DiagnosticFormatOptions());
private:
- /// \brief Flush the active diagnostic.
+ /// Flush the active diagnostic.
void flushActiveDiagnostic();
- /// \brief Retrieve the active diagnostic.
+ /// Retrieve the active diagnostic.
Diagnostic &getActiveDiagnostic() { return *ActiveDiagnostic; }
- /// \brief Send \c diag to all diagnostic consumers.
+ /// Send \c diag to all diagnostic consumers.
void emitDiagnostic(const Diagnostic &diag);
- /// \brief Send all tentative diagnostics to all diagnostic consumers and
+ /// Send all tentative diagnostics to all diagnostic consumers and
/// delete them.
void emitTentativeDiagnostics();
@@ -783,7 +783,7 @@
static const char *diagnosticStringFor(const DiagID id);
};
- /// \brief Represents a diagnostic transaction. While a transaction is
+ /// Represents a diagnostic transaction. While a transaction is
/// open, all recorded diagnostics are saved until the transaction commits,
/// at which point they are emitted. If the transaction is instead aborted,
/// the diagnostics are erased. Transactions may be nested but must be closed
@@ -792,15 +792,15 @@
class DiagnosticTransaction {
DiagnosticEngine &Engine;
- /// \brief How many tentative diagnostics there were when the transaction
+ /// How many tentative diagnostics there were when the transaction
/// was opened.
unsigned PrevDiagnostics;
- /// \brief How many other transactions were open when this transaction was
+ /// How many other transactions were open when this transaction was
/// opened.
unsigned Depth;
- /// \brief Whether this transaction is currently open.
+ /// Whether this transaction is currently open.
bool IsOpen = true;
public:
@@ -820,7 +820,7 @@
}
}
- /// \brief Abort and close this transaction and erase all diagnostics
+ /// Abort and close this transaction and erase all diagnostics
/// record while it was open.
void abort() {
close();
@@ -829,7 +829,7 @@
Engine.TentativeDiagnostics.end());
}
- /// \brief Commit and close this transaction. If this is the top-level
+ /// Commit and close this transaction. If this is the top-level
/// transaction, emit any diagnostics that were recorded while it was open.
void commit() {
close();
diff --git a/include/swift/AST/DiagnosticsClangImporter.h b/include/swift/AST/DiagnosticsClangImporter.h
index 23e1fd0..0ff12e4 100644
--- a/include/swift/AST/DiagnosticsClangImporter.h
+++ b/include/swift/AST/DiagnosticsClangImporter.h
@@ -11,7 +11,7 @@
//===----------------------------------------------------------------------===//
//
/// \file
-/// \brief This file defines diagnostics for the Clang importer.
+/// This file defines diagnostics for the Clang importer.
//
//===----------------------------------------------------------------------===//
diff --git a/include/swift/AST/DiagnosticsCommon.h b/include/swift/AST/DiagnosticsCommon.h
index acd3bc3..add253b 100644
--- a/include/swift/AST/DiagnosticsCommon.h
+++ b/include/swift/AST/DiagnosticsCommon.h
@@ -11,7 +11,7 @@
//===----------------------------------------------------------------------===//
//
/// \file
-/// \brief This file defines common diagnostics for the whole compiler, as well
+/// This file defines common diagnostics for the whole compiler, as well
/// as some diagnostic infrastructure.
//
//===----------------------------------------------------------------------===//
diff --git a/include/swift/AST/DiagnosticsDriver.h b/include/swift/AST/DiagnosticsDriver.h
index a41a33e..f80dd9c 100644
--- a/include/swift/AST/DiagnosticsDriver.h
+++ b/include/swift/AST/DiagnosticsDriver.h
@@ -11,7 +11,7 @@
//===----------------------------------------------------------------------===//
//
/// \file
-/// \brief This file defines diagnostics for the driver.
+/// This file defines diagnostics for the driver.
/// \note Diagnostics shared between the driver and frontend are defined in
/// \ref DiagnosticsFrontend.h.
//
diff --git a/include/swift/AST/DiagnosticsFrontend.h b/include/swift/AST/DiagnosticsFrontend.h
index c7a9dc3..a14d396 100644
--- a/include/swift/AST/DiagnosticsFrontend.h
+++ b/include/swift/AST/DiagnosticsFrontend.h
@@ -11,7 +11,7 @@
//===----------------------------------------------------------------------===//
//
/// \file
-/// \brief This file defines diagnostics for the frontend.
+/// This file defines diagnostics for the frontend.
//
//===----------------------------------------------------------------------===//
diff --git a/include/swift/AST/DiagnosticsIRGen.h b/include/swift/AST/DiagnosticsIRGen.h
index bf97727..fb6901f 100644
--- a/include/swift/AST/DiagnosticsIRGen.h
+++ b/include/swift/AST/DiagnosticsIRGen.h
@@ -11,7 +11,7 @@
//===----------------------------------------------------------------------===//
//
/// \file
-/// \brief This file defines diagnostics for IR generation.
+/// This file defines diagnostics for IR generation.
//
//===----------------------------------------------------------------------===//
diff --git a/include/swift/AST/DiagnosticsModuleDiffer.h b/include/swift/AST/DiagnosticsModuleDiffer.h
index 85c7d4d..2416194 100644
--- a/include/swift/AST/DiagnosticsModuleDiffer.h
+++ b/include/swift/AST/DiagnosticsModuleDiffer.h
@@ -11,7 +11,7 @@
//===----------------------------------------------------------------------===//
//
/// \file
-/// \brief This file defines diagnostics for the Swift module differ.
+/// This file defines diagnostics for the Swift module differ.
//
//===----------------------------------------------------------------------===//
diff --git a/include/swift/AST/DiagnosticsParse.h b/include/swift/AST/DiagnosticsParse.h
index e046630..442392b 100644
--- a/include/swift/AST/DiagnosticsParse.h
+++ b/include/swift/AST/DiagnosticsParse.h
@@ -11,7 +11,7 @@
//===----------------------------------------------------------------------===//
//
/// \file
-/// \brief This file defines diagnostics for lexing and parsing.
+/// This file defines diagnostics for lexing and parsing.
//
//===----------------------------------------------------------------------===//
diff --git a/include/swift/AST/DiagnosticsRefactoring.h b/include/swift/AST/DiagnosticsRefactoring.h
index 8226b9a..320c398 100644
--- a/include/swift/AST/DiagnosticsRefactoring.h
+++ b/include/swift/AST/DiagnosticsRefactoring.h
@@ -11,7 +11,7 @@
//===----------------------------------------------------------------------===//
//
/// \file
-/// \brief This file defines diagnostics for refactoring.
+/// This file defines diagnostics for refactoring.
//
//===----------------------------------------------------------------------===//
diff --git a/include/swift/AST/DiagnosticsSIL.h b/include/swift/AST/DiagnosticsSIL.h
index 43c5d9d..177fa47 100644
--- a/include/swift/AST/DiagnosticsSIL.h
+++ b/include/swift/AST/DiagnosticsSIL.h
@@ -11,7 +11,7 @@
//===----------------------------------------------------------------------===//
//
/// \file
-/// \brief This file defines diagnostics for SIL generation and analysis.
+/// This file defines diagnostics for SIL generation and analysis.
//
//===----------------------------------------------------------------------===//
diff --git a/include/swift/AST/DiagnosticsSema.h b/include/swift/AST/DiagnosticsSema.h
index 5b3e9fd..801ff6f 100644
--- a/include/swift/AST/DiagnosticsSema.h
+++ b/include/swift/AST/DiagnosticsSema.h
@@ -11,7 +11,7 @@
//===----------------------------------------------------------------------===//
//
/// \file
-/// \brief This file defines diagnostics for semantic analysis.
+/// This file defines diagnostics for semantic analysis.
//
//===----------------------------------------------------------------------===//
diff --git a/include/swift/AST/Expr.h b/include/swift/AST/Expr.h
index 07b18ec..c16225a 100644
--- a/include/swift/AST/Expr.h
+++ b/include/swift/AST/Expr.h
@@ -158,7 +158,7 @@
SWIFT_INLINE_BITFIELD_EMPTY(DynamicLookupExpr, LookupExpr);
SWIFT_INLINE_BITFIELD(ParenExpr, IdentityExpr, 1,
- /// \brief Whether we're wrapping a trailing closure expression.
+ /// Whether we're wrapping a trailing closure expression.
HasTrailingClosure : 1
);
@@ -391,7 +391,7 @@
/// Return the kind of this expression.
ExprKind getKind() const { return ExprKind(Bits.Expr.Kind); }
- /// \brief Retrieve the name of the given expression kind.
+ /// Retrieve the name of the given expression kind.
///
/// This name should only be used for debugging dumps and other
/// developer aids, and should never be part of a diagnostic or exposed
@@ -404,13 +404,13 @@
/// setType - Sets the type of this expression.
void setType(Type T);
- /// \brief Return the source range of the expression.
+ /// Return the source range of the expression.
SourceRange getSourceRange() const;
/// getStartLoc - Return the location of the start of the expression.
SourceLoc getStartLoc() const;
- /// \brief Retrieve the location of the last token of the expression.
+ /// Retrieve the location of the last token of the expression.
SourceLoc getEndLoc() const;
/// getLoc - Return the caret location of this expression.
@@ -712,7 +712,7 @@
}
};
-/// \brief The 'nil' literal.
+/// The 'nil' literal.
///
class NilLiteralExpr : public LiteralExpr {
SourceLoc Loc;
@@ -730,7 +730,7 @@
}
};
-/// \brief Abstract base class for numeric literals, potentially with a sign.
+/// Abstract base class for numeric literals, potentially with a sign.
class NumberLiteralExpr : public LiteralExpr {
/// The value of the literal as an ASTContext-owned string. Underscores must
/// be stripped.
@@ -778,7 +778,7 @@
};
-/// \brief Integer literal with a '+' or '-' sign, like '+4' or '- 2'.
+/// Integer literal with a '+' or '-' sign, like '+4' or '- 2'.
///
/// After semantic analysis assigns types, this is guaranteed to only have
/// a BuiltinIntegerType.
@@ -826,7 +826,7 @@
}
};
-/// \brief A Boolean literal ('true' or 'false')
+/// A Boolean literal ('true' or 'false')
///
class BooleanLiteralExpr : public LiteralExpr {
SourceLoc Loc;
@@ -923,7 +923,7 @@
}
};
-/// \brief Runs a series of statements which use or modify \c SubExpr
+/// Runs a series of statements which use or modify \c SubExpr
/// before it is given to the rest of the expression.
///
/// \c Body should begin with a \c VarDecl; this defines the variable
@@ -944,7 +944,7 @@
Expr * getSubExpr() const { return SubExpr; }
void setSubExpr(Expr * se) { SubExpr = se; }
- /// \brief The variable which will be accessed and possibly modified by
+ /// The variable which will be accessed and possibly modified by
/// the \c Body. This is the first \c ASTNode in the \c Body.
VarDecl * getVar() const;
@@ -983,26 +983,26 @@
Bits.InterpolatedStringLiteralExpr.LiteralCapacity = LiteralCapacity;
}
- /// \brief Retrieve the value of the literalCapacity parameter to the
+ /// Retrieve the value of the literalCapacity parameter to the
/// initializer.
unsigned getLiteralCapacity() const {
return Bits.InterpolatedStringLiteralExpr.LiteralCapacity;
}
- /// \brief Retrieve the value of the interpolationCount parameter to the
+ /// Retrieve the value of the interpolationCount parameter to the
/// initializer.
unsigned getInterpolationCount() const {
return Bits.InterpolatedStringLiteralExpr.InterpolationCount;
}
- /// \brief A block containing expressions which call
+ /// A block containing expressions which call
/// \c StringInterpolationProtocol methods to append segments to the
/// string interpolation. The first node in \c Body should be an uninitialized
/// \c VarDecl; the other statements should append to it.
TapExpr * getAppendingExpr() const { return AppendingExpr; }
void setAppendingExpr(TapExpr * AE) { AppendingExpr = AE; }
- /// \brief Retrieve the expression that actually evaluates the resulting
+ /// Retrieve the expression that actually evaluates the resulting
/// string, typically with a series of '+' operations.
Expr *getSemanticExpr() const { return SemanticExpr; }
void setSemanticExpr(Expr *SE) { SemanticExpr = SE; }
@@ -1016,7 +1016,7 @@
return Loc;
}
- /// \brief Call the \c callback with information about each segment in turn.
+ /// Call the \c callback with information about each segment in turn.
void forEachSegment(ASTContext &Ctx,
llvm::function_ref<void(bool, CallExpr *)> callback);
@@ -1226,7 +1226,7 @@
/// DeclRefExpr - A reference to a value, "x".
class DeclRefExpr : public Expr {
- /// \brief The declaration pointer.
+ /// The declaration pointer.
ConcreteDeclRef D;
DeclNameLoc Loc;
@@ -1986,7 +1986,7 @@
return RParenLoc;
}
- /// \brief Whether this expression has a trailing closure as its argument.
+ /// Whether this expression has a trailing closure as its argument.
bool hasTrailingClosure() const { return Bits.ParenExpr.HasTrailingClosure; }
static bool classof(const Expr *E) { return E->getKind() == ExprKind::Paren; }
@@ -2057,7 +2057,7 @@
SourceRange getSourceRange() const;
- /// \brief Whether this expression has a trailing closure as its argument.
+ /// Whether this expression has a trailing closure as its argument.
bool hasTrailingClosure() const { return Bits.TupleExpr.HasTrailingClosure; }
/// Retrieve the elements of this tuple.
@@ -2115,7 +2115,7 @@
static bool classof(const Expr *E) { return E->getKind() == ExprKind::Tuple; }
};
-/// \brief A collection literal expression.
+/// A collection literal expression.
///
/// The subexpression is represented as a TupleExpr or ParenExpr and
/// passed on to the appropriate semantics-providing conversion
@@ -2201,7 +2201,7 @@
};
-/// \brief An array literal expression [a, b, c].
+/// An array literal expression [a, b, c].
class ArrayExpr final : public CollectionExpr,
private llvm::TrailingObjects<ArrayExpr, Expr*, SourceLoc> {
friend TrailingObjects;
@@ -2231,7 +2231,7 @@
}
};
-/// \brief A dictionary literal expression [a : x, b : y, c : z].
+/// A dictionary literal expression [a : x, b : y, c : z].
class DictionaryExpr final : public CollectionExpr,
private llvm::TrailingObjects<DictionaryExpr, Expr*, SourceLoc> {
friend TrailingObjects;
@@ -2455,7 +2455,7 @@
}
};
-/// \brief Describes a monadic bind from T? to T.
+/// Describes a monadic bind from T? to T.
///
/// In a ?-chain expression, this is the part that's spelled with a
/// postfix ?.
@@ -2514,7 +2514,7 @@
}
};
-/// \brief Describes the outer limits of an operation containing
+/// Describes the outer limits of an operation containing
/// monadic binds of T? to T.
///
/// In a ?-chain expression, this is implicitly formed at the outer
@@ -2540,7 +2540,7 @@
}
};
-/// \brief An expression that forces an optional to its underlying value.
+/// An expression that forces an optional to its underlying value.
///
/// \code
/// func parseInt(s : String) -> Int? { ... }
@@ -2592,7 +2592,7 @@
}
};
-/// \brief An expression that grants temporary escapability to a nonescaping
+/// An expression that grants temporary escapability to a nonescaping
/// closure value.
///
/// This expression is formed by the type checker when a call to the
@@ -2664,7 +2664,7 @@
}
};
-/// \brief An expression that opens up a value of protocol or protocol
+/// An expression that opens up a value of protocol or protocol
/// composition type and gives a name to its dynamic type.
///
/// This expression is implicitly created by the type checker when
@@ -3213,7 +3213,7 @@
static ErasureExpr *create(ASTContext &ctx, Expr *subExpr, Type type,
ArrayRef<ProtocolConformanceRef> conformances);
- /// \brief Retrieve the mapping specifying how the type of the subexpression
+ /// Retrieve the mapping specifying how the type of the subexpression
/// maps to the resulting existential type. If the resulting existential
/// type involves several different protocols, there will be mappings for each
/// of those protocols, in the order in which the existential type expands
@@ -3247,7 +3247,7 @@
: ImplicitConversionExpr(ExprKind::AnyHashableErasure, subExpr, type),
Conformance(conformance) {}
- /// \brief Retrieve the mapping specifying how the type of the
+ /// Retrieve the mapping specifying how the type of the
/// subexpression conforms to the Hashable protocol.
ProtocolConformanceRef getConformance() const {
return Conformance;
@@ -3270,7 +3270,7 @@
Conversion(conversion) {
}
- /// \brief Retrieve the conversion function.
+ /// Retrieve the conversion function.
ConcreteDeclRef getConversion() const {
return Conversion;
}
@@ -3331,7 +3331,7 @@
Expr *getSubExpr() const { return SubExpr; }
void setSubExpr(Expr *e) { SubExpr = e; }
- /// \brief Retrieve the list of type parameters. These parameters have not yet
+ /// Retrieve the list of type parameters. These parameters have not yet
/// been bound to archetypes of the entity to be specialized.
ArrayRef<TypeLoc> getUnresolvedParams() const {
return {getTrailingObjects<TypeLoc>(),
@@ -3354,7 +3354,7 @@
}
};
-/// \brief Describes an implicit conversion from a subclass to one of its
+/// Describes an implicit conversion from a subclass to one of its
/// superclasses.
class DerivedToBaseExpr : public ImplicitConversionExpr {
public:
@@ -3366,7 +3366,7 @@
}
};
-/// \brief Describes an implicit conversion from a value of archetype type to
+/// Describes an implicit conversion from a value of archetype type to
/// its concrete superclass.
class ArchetypeToSuperExpr : public ImplicitConversionExpr {
public:
@@ -3469,11 +3469,11 @@
};
-/// \brief A base class for closure expressions.
+/// A base class for closure expressions.
class AbstractClosureExpr : public DeclContext, public Expr {
CaptureInfo Captures;
- /// \brief The set of parameters.
+ /// The set of parameters.
ParameterList *parameterList;
public:
@@ -3488,7 +3488,7 @@
CaptureInfo &getCaptureInfo() { return Captures; }
const CaptureInfo &getCaptureInfo() const { return Captures; }
- /// \brief Retrieve the parameters of this closure.
+ /// Retrieve the parameters of this closure.
ParameterList *getParameters() { return parameterList; }
const ParameterList *getParameters() const { return parameterList; }
void setParameterList(ParameterList *P);
@@ -3521,13 +3521,13 @@
}
enum : unsigned { InvalidDiscriminator = 0xFFFF };
- /// \brief Retrieve the result type of this closure.
+ /// Retrieve the result type of this closure.
Type getResultType(llvm::function_ref<Type(const Expr *)> getType =
[](const Expr *E) -> Type {
return E->getType();
}) const;
- /// \brief Return whether this closure is throwing when fully applied.
+ /// Return whether this closure is throwing when fully applied.
bool isBodyThrowing() const;
/// Whether this closure consists of a single expression.
@@ -3582,7 +3582,7 @@
}
};
-/// \brief An explicit unnamed function expression, which can optionally have
+/// An explicit unnamed function expression, which can optionally have
/// named arguments.
///
/// \code
@@ -3596,17 +3596,17 @@
/// The location of the "throws", if present.
SourceLoc ThrowsLoc;
- /// \brief The location of the '->' denoting an explicit return type,
+ /// The location of the '->' denoting an explicit return type,
/// if present.
SourceLoc ArrowLoc;
/// The location of the "in", if present.
SourceLoc InLoc;
- /// \brief The explicitly-specified result type.
+ /// The explicitly-specified result type.
TypeLoc ExplicitResultType;
- /// \brief The body of the closure, along with a bit indicating whether it
+ /// The body of the closure, along with a bit indicating whether it
/// was originally just a single expression.
llvm::PointerIntPair<BraceStmt *, 1, bool> Body;
@@ -3634,41 +3634,41 @@
Body.setInt(isSingleExpression);
}
- /// \brief Determine whether the parameters of this closure are actually
+ /// Determine whether the parameters of this closure are actually
/// anonymous closure variables.
bool hasAnonymousClosureVars() const {
return Bits.ClosureExpr.HasAnonymousClosureVars;
}
- /// \brief Set the parameters of this closure along with a flag indicating
+ /// Set the parameters of this closure along with a flag indicating
/// whether these parameters are actually anonymous closure variables.
void setHasAnonymousClosureVars() {
Bits.ClosureExpr.HasAnonymousClosureVars = true;
}
- /// \brief Determine whether this closure expression has an
+ /// Determine whether this closure expression has an
/// explicitly-specified result type.
bool hasExplicitResultType() const { return ArrowLoc.isValid(); }
- /// \brief Retrieve the location of the \c '->' for closures with an
+ /// Retrieve the location of the \c '->' for closures with an
/// explicit result type.
SourceLoc getArrowLoc() const {
assert(hasExplicitResultType() && "No arrow location");
return ArrowLoc;
}
- /// \brief Retrieve the location of the \c in for a closure that has it.
+ /// Retrieve the location of the \c in for a closure that has it.
SourceLoc getInLoc() const {
return InLoc;
}
- /// \brief Retrieve the location of the 'throws' for a closure that has it.
+ /// Retrieve the location of the 'throws' for a closure that has it.
SourceLoc getThrowsLoc() const {
return ThrowsLoc;
}
- /// \brief Retrieve the explicit result type location information.
+ /// Retrieve the explicit result type location information.
TypeLoc &getExplicitResultTypeLoc() {
assert(hasExplicitResultType() && "No explicit result type");
return ExplicitResultType;
@@ -3679,7 +3679,7 @@
ExplicitResultType = resultType;
}
- /// \brief Determine whether the closure has a single expression for its
+ /// Determine whether the closure has a single expression for its
/// body.
///
/// This will be true for closures such as, e.g.,
@@ -3699,20 +3699,20 @@
return Body.getInt();
}
- /// \brief Retrieve the body for closure that has a single expression for
+ /// Retrieve the body for closure that has a single expression for
/// its body.
///
/// Only valid when \c hasSingleExpressionBody() is true.
Expr *getSingleExpressionBody() const;
- /// \brief Set the body for a closure that has a single expression as its
+ /// Set the body for a closure that has a single expression as its
/// body.
///
/// This routine cannot change whether a closure has a single expression as
/// its body; it can only update that expression.
void setSingleExpressionBody(Expr *NewBody);
- /// \brief Is this a completely empty closure?
+ /// Is this a completely empty closure?
bool hasEmptyBody() const;
static bool classof(const Expr *E) {
@@ -3727,7 +3727,7 @@
};
-/// \brief This is a closure of the contained subexpression that is formed
+/// This is a closure of the contained subexpression that is formed
/// when a scalar expression is converted to @autoclosure function type.
/// For example:
/// \code
@@ -4208,7 +4208,7 @@
}
};
-/// \brief Represents an explicit cast, 'a as T' or 'a is T', where "T" is a
+/// Represents an explicit cast, 'a as T' or 'a is T', where "T" is a
/// type, and "a" is the expression that will be converted to the type.
class ExplicitCastExpr : public Expr {
Expr *SubExpr;
@@ -4268,7 +4268,7 @@
/// Return a string representation of a CheckedCastKind.
StringRef getCheckedCastKindName(CheckedCastKind kind);
-/// \brief Abstract base class for checked casts 'as' and 'is'. These represent
+/// Abstract base class for checked casts 'as' and 'is'. These represent
/// casts that can dynamically fail.
class CheckedCastExpr : public ExplicitCastExpr {
public:
@@ -4327,7 +4327,7 @@
}
};
-/// \brief Represents an explicit conditional checked cast, which converts
+/// Represents an explicit conditional checked cast, which converts
/// from a type to some subtype and produces an Optional value, which will be
/// .Some(x) if the cast succeeds, or .None if the cast fails.
/// Spelled 'a as? T' and produces a value of type 'T?'.
@@ -4355,7 +4355,7 @@
}
};
-/// \brief Represents a runtime type check query, 'a is T', where 'T' is a type
+/// Represents a runtime type check query, 'a is T', where 'T' is a type
/// and 'a' is a value of some related type. Evaluates to a Bool true if 'a' is
/// of the type and 'a as T' would succeed, false otherwise.
///
@@ -4376,7 +4376,7 @@
}
};
-/// \brief Represents an explicit coercion from a value to a specific type.
+/// Represents an explicit coercion from a value to a specific type.
///
/// Spelled 'a as T' and produces a value of type 'T'.
class CoerceExpr : public ExplicitCastExpr {
@@ -4422,7 +4422,7 @@
}
};
-/// \brief Represents two expressions joined by the arrow operator '->', which
+/// Represents two expressions joined by the arrow operator '->', which
/// may be preceded by the 'throws' keyword. Currently this only exists to be
/// transformed into a FunctionTypeRepr by simplifyTypeExpr() in Sema.
class ArrowExpr : public Expr {
@@ -4463,7 +4463,7 @@
}
};
-/// \brief Represents the rebinding of 'self' in a constructor that calls out
+/// Represents the rebinding of 'self' in a constructor that calls out
/// to another constructor. The result of the subexpression is assigned to
/// 'self', and the expression returns void.
///
@@ -4494,7 +4494,7 @@
}
};
-/// \brief The conditional expression 'x ? y : z'.
+/// The conditional expression 'x ? y : z'.
class IfExpr : public Expr {
Expr *CondExpr, *ThenExpr, *ElseExpr;
SourceLoc QuestionLoc, ColonLoc;
@@ -4614,7 +4614,7 @@
}
};
-/// \brief A pattern production that has been parsed but hasn't been resolved
+/// A pattern production that has been parsed but hasn't been resolved
/// into a complete pattern. Name binding converts these into standalone pattern
/// nodes or raises an error if a pattern production appears in an invalid
/// position.
diff --git a/include/swift/AST/GenericEnvironment.h b/include/swift/AST/GenericEnvironment.h
index 48dc309..2c435f1 100644
--- a/include/swift/AST/GenericEnvironment.h
+++ b/include/swift/AST/GenericEnvironment.h
@@ -143,7 +143,7 @@
/// Map a generic parameter type to a contextual type.
Type mapTypeIntoContext(GenericTypeParamType *type) const;
- /// \brief Map the given SIL interface type to a contextual type.
+ /// Map the given SIL interface type to a contextual type.
///
/// This operation will also reabstract dependent types according to the
/// abstraction level of their associated type requirements.
diff --git a/include/swift/AST/GenericSignature.h b/include/swift/AST/GenericSignature.h
index db19336..d51a9c7 100644
--- a/include/swift/AST/GenericSignature.h
+++ b/include/swift/AST/GenericSignature.h
@@ -313,6 +313,7 @@
ArrayRef<Requirement> requirements);
void print(raw_ostream &OS, PrintOptions Options = PrintOptions()) const;
+ void print(ASTPrinter &Printer, PrintOptions Opts = PrintOptions()) const;
void dump() const;
std::string getAsString() const;
};
diff --git a/include/swift/AST/GenericSignatureBuilder.h b/include/swift/AST/GenericSignatureBuilder.h
index 0fe50ca..aaa8e6f 100644
--- a/include/swift/AST/GenericSignatureBuilder.h
+++ b/include/swift/AST/GenericSignatureBuilder.h
@@ -79,7 +79,7 @@
WellFormed,
};
-/// \brief Collects a set of requirements of generic parameters, both explicitly
+/// Collects a set of requirements of generic parameters, both explicitly
/// stated and inferred, and determines the set of archetypes for each of
/// the generic parameters.
class GenericSignatureBuilder {
@@ -244,7 +244,7 @@
Type getAnchor(GenericSignatureBuilder &builder,
TypeArrayView<GenericTypeParamType> genericParams);
- /// \brief Retrieve (or build) the contextual type corresponding to
+ /// Retrieve (or build) the contextual type corresponding to
/// this equivalence class within the given generic environment.
Type getTypeInContext(GenericSignatureBuilder &builder,
GenericEnvironment *genericEnv);
@@ -365,7 +365,7 @@
ProtocolDecl *proto);
public:
- /// \brief Add a new conformance requirement specifying that the given
+ /// Add a new conformance requirement specifying that the given
/// type conforms to the given protocol.
ConstraintResult addConformanceRequirement(ResolvedType type,
ProtocolDecl *proto,
@@ -380,7 +380,7 @@
const RequirementSource *source,
bool onlySameTypeConstraints);
- /// \brief Add a new same-type requirement between two fully resolved types
+ /// Add a new same-type requirement between two fully resolved types
/// (output of \c GenericSignatureBuilder::resolve).
///
/// If the types refer to two concrete types that are fundamentally
@@ -393,7 +393,7 @@
FloatingRequirementSource Source,
llvm::function_ref<void(Type, Type)> diagnoseMismatch);
- /// \brief Add a new same-type requirement between two unresolved types.
+ /// Add a new same-type requirement between two unresolved types.
///
/// The types are resolved with \c GenericSignatureBuilder::resolve, and must
/// not be incompatible concrete types.
@@ -403,7 +403,7 @@
FloatingRequirementSource Source,
UnresolvedHandlingKind unresolvedHandling);
- /// \brief Add a new same-type requirement between two unresolved types.
+ /// Add a new same-type requirement between two unresolved types.
///
/// The types are resolved with \c GenericSignatureBuilder::resolve. \c
/// diagnoseMismatch is called if the two types refer to incompatible concrete
@@ -425,14 +425,14 @@
FloatingRequirementSource source);
private:
- /// \brief Add a new superclass requirement specifying that the given
+ /// Add a new superclass requirement specifying that the given
/// potential archetype has the given type as an ancestor.
ConstraintResult addSuperclassRequirementDirect(
ResolvedType type,
Type superclass,
FloatingRequirementSource source);
- /// \brief Add a new type requirement specifying that the given
+ /// Add a new type requirement specifying that the given
/// type conforms-to or is a superclass of the second type.
///
/// \param inferForModule Infer additional requirements from the types
@@ -451,19 +451,19 @@
/// \returns true if a new rewrite rule was added, and false otherwise.
bool addSameTypeRewriteRule(CanType type1, CanType type2);
- /// \brief Add a same-type requirement between two types that are known to
+ /// Add a same-type requirement between two types that are known to
/// refer to type parameters.
ConstraintResult addSameTypeRequirementBetweenTypeParameters(
ResolvedType type1, ResolvedType type2,
const RequirementSource *source);
- /// \brief Add a new conformance requirement specifying that the given
+ /// Add a new conformance requirement specifying that the given
/// potential archetype is bound to a concrete type.
ConstraintResult addSameTypeRequirementToConcrete(ResolvedType type,
Type concrete,
const RequirementSource *Source);
- /// \brief Add a new same-type requirement specifying that the given two
+ /// Add a new same-type requirement specifying that the given two
/// types should be the same.
///
/// \param diagnoseMismatch Callback invoked when the types in the same-type
@@ -472,7 +472,7 @@
Type T1, Type T2, FloatingRequirementSource Source,
llvm::function_ref<void(Type, Type)> diagnoseMismatch);
- /// \brief Add a new layout requirement directly on the potential archetype.
+ /// Add a new layout requirement directly on the potential archetype.
///
/// \returns true if this requirement makes the set of requirements
/// inconsistent, in which case a diagnostic will have been issued.
@@ -555,7 +555,7 @@
/// signature being built.
TypeArrayView<GenericTypeParamType> getGenericParams() const;
- /// \brief Add a new generic parameter for which there may be requirements.
+ /// Add a new generic parameter for which there may be requirements.
void addGenericParameter(GenericTypeParamDecl *GenericParam);
/// Add the requirements placed on the given abstract type parameter
@@ -564,10 +564,10 @@
/// \returns true if an error occurred, false otherwise.
bool addGenericParameterRequirements(GenericTypeParamDecl *GenericParam);
- /// \brief Add a new generic parameter for which there may be requirements.
+ /// Add a new generic parameter for which there may be requirements.
void addGenericParameter(GenericTypeParamType *GenericParam);
- /// \brief Add a new requirement.
+ /// Add a new requirement.
///
/// \param inferForModule Infer additional requirements from the types
/// relative to the given module.
@@ -578,7 +578,7 @@
FloatingRequirementSource source,
ModuleDecl *inferForModule);
- /// \brief Add an already-checked requirement.
+ /// Add an already-checked requirement.
///
/// Adding an already-checked requirement cannot fail. This is used to
/// re-inject requirements from outer contexts.
@@ -594,7 +594,7 @@
const SubstitutionMap *subMap,
ModuleDecl *inferForModule);
- /// \brief Add all of a generic signature's parameters and requirements.
+ /// Add all of a generic signature's parameters and requirements.
void addGenericSignature(GenericSignature *sig);
/// Infer requirements from the given type, recursively.
@@ -628,7 +628,7 @@
/// because the type \c Dictionary<K,V> cannot be formed without it.
void inferRequirements(ModuleDecl &module, ParameterList *params);
- /// \brief Finalize the set of requirements and compute the generic
+ /// Finalize the set of requirements and compute the generic
/// signature.
///
/// After this point, one cannot introduce new requirements, and the
@@ -759,7 +759,7 @@
PotentialArchetype *realizePotentialArchetype(UnresolvedType &type);
public:
- /// \brief Try to resolve the equivalence class of the given type.
+ /// Try to resolve the equivalence class of the given type.
///
/// \param type The type to resolve.
///
@@ -773,7 +773,7 @@
ArchetypeResolutionKind resolutionKind,
bool wantExactPotentialArchetype);
- /// \brief Resolve the equivalence class for the given type parameter,
+ /// Resolve the equivalence class for the given type parameter,
/// which provides information about that type.
///
/// The \c resolutionKind parameter describes how resolution should be
@@ -788,7 +788,7 @@
Type type,
ArchetypeResolutionKind resolutionKind);
- /// \brief Resolve the given type as far as this Builder knows how.
+ /// Resolve the given type as far as this Builder knows how.
///
/// If successful, this returns either a non-typealias potential archetype
/// or a Type, if \c type is concrete.
@@ -813,7 +813,7 @@
/// Verify all of the generic sigantures in the given module.
static void verifyGenericSignaturesInModule(ModuleDecl *module);
- /// \brief Dump all of the requirements, both specified and inferred.
+ /// Dump all of the requirements, both specified and inferred.
LLVM_ATTRIBUTE_DEPRECATED(
void dump(),
"only for use within the debugger");
@@ -1515,7 +1515,7 @@
PAIdentifier(GenericParamKey genericParam) : genericParam(genericParam) { }
} identifier;
- /// \brief The representative of the equivalence class of potential archetypes
+ /// The representative of the equivalence class of potential archetypes
/// to which this potential archetype belongs, or (for the representative)
/// the equivalence class itself.
mutable llvm::PointerUnion<PotentialArchetype *, EquivalenceClass *>
@@ -1547,28 +1547,28 @@
}
};
- /// \brief The set of nested types of this archetype.
+ /// The set of nested types of this archetype.
///
/// For a given nested type name, there may be multiple potential archetypes
/// corresponding to different associated types (from different protocols)
/// that share a name.
llvm::MapVector<Identifier, StoredNestedType> NestedTypes;
- /// \brief Construct a new potential archetype for a concrete declaration.
+ /// Construct a new potential archetype for a concrete declaration.
PotentialArchetype(PotentialArchetype *parent, AssociatedTypeDecl *assocType)
: parentOrContext(parent), identifier(assocType) {
assert(parent != nullptr && "Not a nested type?");
assert(assocType->getOverriddenDecls().empty());
}
- /// \brief Construct a new potential archetype for a generic parameter.
+ /// Construct a new potential archetype for a generic parameter.
PotentialArchetype(ASTContext &ctx, GenericParamKey genericParam)
: parentOrContext(&ctx), identifier(genericParam)
{
}
public:
- /// \brief Retrieve the representative for this archetype, performing
+ /// Retrieve the representative for this archetype, performing
/// path compression on the way.
PotentialArchetype *getRepresentative() const;
@@ -1578,7 +1578,7 @@
public:
~PotentialArchetype();
- /// \brief Retrieve the debug name of this potential archetype.
+ /// Retrieve the debug name of this potential archetype.
std::string getDebugName() const;
/// Retrieve the parent of this potential archetype, which will be non-null
@@ -1627,7 +1627,7 @@
return NestedTypes;
}
- /// \brief Determine the nesting depth of this potential archetype, e.g.,
+ /// Determine the nesting depth of this potential archetype, e.g.,
/// the number of associated type references.
unsigned getNestingDepth() const;
diff --git a/include/swift/AST/IRGenOptions.h b/include/swift/AST/IRGenOptions.h
index 3fd4d44..f77e4be 100644
--- a/include/swift/AST/IRGenOptions.h
+++ b/include/swift/AST/IRGenOptions.h
@@ -113,19 +113,19 @@
/// Path prefixes that should be rewritten in debug info.
PathRemapper DebugPrefixMap;
- /// \brief Whether we're generating IR for the JIT.
+ /// Whether we're generating IR for the JIT.
unsigned UseJIT : 1;
- /// \brief Whether we're generating code for the integrated REPL.
+ /// Whether we're generating code for the integrated REPL.
unsigned IntegratedREPL : 1;
- /// \brief Whether we should run LLVM optimizations after IRGen.
+ /// Whether we should run LLVM optimizations after IRGen.
unsigned DisableLLVMOptzns : 1;
/// Whether we should run swift specific LLVM optimizations after IRGen.
unsigned DisableSwiftSpecificLLVMOptzns : 1;
- /// \brief Whether we should run LLVM SLP vectorizer.
+ /// Whether we should run LLVM SLP vectorizer.
unsigned DisableLLVMSLPVectorizer : 1;
/// Disable frame pointer elimination?
diff --git a/include/swift/AST/KnownProtocols.h b/include/swift/AST/KnownProtocols.h
index f70bc07..c6510c0 100644
--- a/include/swift/AST/KnownProtocols.h
+++ b/include/swift/AST/KnownProtocols.h
@@ -22,7 +22,7 @@
namespace swift {
-/// \brief The set of known protocols.
+/// The set of known protocols.
enum class KnownProtocolKind : uint8_t {
#define PROTOCOL_WITH_NAME(Id, Name) Id,
#include "swift/AST/KnownProtocols.def"
diff --git a/include/swift/AST/Module.h b/include/swift/AST/Module.h
index 1bfef4b..36850ba 100644
--- a/include/swift/AST/Module.h
+++ b/include/swift/AST/Module.h
@@ -94,6 +94,8 @@
SerializedAST,
/// An imported Clang module.
ClangModule,
+ /// A Clang module imported from DWARF.
+ DWARFModule
};
enum class SourceFileKind {
@@ -514,7 +516,7 @@
/// Source locations are ignored here.
static bool isSameAccessPath(AccessPathTy lhs, AccessPathTy rhs);
- /// \brief Get the path for the file that this module came from, or an empty
+ /// Get the path for the file that this module came from, or an empty
/// string if this is not applicable.
StringRef getModuleFilename() const;
@@ -923,7 +925,7 @@
/// We only collect interface hash for primary input files.
llvm::Optional<llvm::MD5> InterfaceHash;
- /// \brief The ID for the memory buffer containing this file's source.
+ /// The ID for the memory buffer containing this file's source.
///
/// May be -1, to indicate no association with a buffer.
int BufferID;
@@ -1098,7 +1100,7 @@
void createReferencedNameTracker();
- /// \brief The buffer ID for the file that was imported, or None if there
+ /// The buffer ID for the file that was imported, or None if there
/// is no associated buffer.
Optional<unsigned> getBufferID() const {
if (BufferID == -1)
@@ -1116,7 +1118,7 @@
void dump() const;
void dump(raw_ostream &os) const;
- /// \brief Pretty-print the contents of this source file.
+ /// Pretty-print the contents of this source file.
///
/// \param Printer The AST printer used for printing the contents.
/// \param PO Options controlling the printing process.
@@ -1326,7 +1328,8 @@
static bool classof(const FileUnit *file) {
return file->getKind() == FileUnitKind::SerializedAST ||
- file->getKind() == FileUnitKind::ClangModule;
+ file->getKind() == FileUnitKind::ClangModule ||
+ file->getKind() == FileUnitKind::DWARFModule;
}
static bool classof(const DeclContext *DC) {
return isa<FileUnit>(DC) && classof(cast<FileUnit>(DC));
diff --git a/include/swift/AST/ModuleLoader.h b/include/swift/AST/ModuleLoader.h
index 4e6220f..b713d6b 100644
--- a/include/swift/AST/ModuleLoader.h
+++ b/include/swift/AST/ModuleLoader.h
@@ -71,7 +71,7 @@
std::shared_ptr<clang::DependencyCollector> getClangCollector();
};
-/// \brief Abstract interface that loads named modules into the AST.
+/// Abstract interface that loads named modules into the AST.
class ModuleLoader {
virtual void anchor();
@@ -82,14 +82,14 @@
public:
virtual ~ModuleLoader() = default;
- /// \brief Check whether the module with a given name can be imported without
+ /// Check whether the module with a given name can be imported without
/// importing it.
///
/// Note that even if this check succeeds, errors may still occur if the
/// module is loaded in full.
virtual bool canImportModule(std::pair<Identifier, SourceLoc> named) = 0;
- /// \brief Import a module with the given module path.
+ /// Import a module with the given module path.
///
/// \param importLoc The location of the 'import' keyword.
///
@@ -102,7 +102,7 @@
ModuleDecl *loadModule(SourceLoc importLoc,
ArrayRef<std::pair<Identifier, SourceLoc>> path) = 0;
- /// \brief Load extensions to the given nominal type.
+ /// Load extensions to the given nominal type.
///
/// \param nominal The nominal type whose extensions should be loaded.
///
@@ -112,7 +112,7 @@
virtual void loadExtensions(NominalTypeDecl *nominal,
unsigned previousGeneration) { }
- /// \brief Load the methods within the given class that produce
+ /// Load the methods within the given class that produce
/// Objective-C class or instance methods with the given selector.
///
/// \param classDecl The class in which we are searching for @objc methods.
@@ -138,7 +138,7 @@
unsigned previousGeneration,
llvm::TinyPtrVector<AbstractFunctionDecl *> &methods) = 0;
- /// \brief Verify all modules loaded by this loader.
+ /// Verify all modules loaded by this loader.
virtual void verifyAllModules() { }
};
diff --git a/include/swift/AST/NameLookup.h b/include/swift/AST/NameLookup.h
index 23ad4ba..c713d80 100644
--- a/include/swift/AST/NameLookup.h
+++ b/include/swift/AST/NameLookup.h
@@ -83,7 +83,7 @@
ValueDecl *getBaseDecl() const;
};
-/// \brief This class implements and represents the result of performing
+/// This class implements and represents the result of performing
/// unqualified lookup (i.e. lookup for a plain identifier).
class UnqualifiedLookup {
public:
@@ -103,7 +103,7 @@
};
using Options = OptionSet<Flags>;
- /// \brief Lookup an unqualified identifier \p Name in the context.
+ /// Lookup an unqualified identifier \p Name in the context.
///
/// If the current DeclContext is nested in a function body, the SourceLoc
/// is used to determine which declarations in that body are visible.
@@ -111,7 +111,7 @@
SourceLoc Loc = SourceLoc(), Options options = Options());
SmallVector<LookupResultEntry, 4> Results;
- /// \brief The index of the first result that isn't from the innermost scope
+ /// The index of the first result that isn't from the innermost scope
/// with results.
///
/// That is, \c makeArrayRef(Results).take_front(IndexOfFirstOuterResults)
@@ -119,10 +119,10 @@
/// remaining elements of Results will be from parent scopes of this one.
size_t IndexOfFirstOuterResult;
- /// \brief Return true if anything was found by the name lookup.
+ /// Return true if anything was found by the name lookup.
bool isSuccess() const { return !Results.empty(); }
- /// \brief Get the result as a single type, or a null type if that fails.
+ /// Get the result as a single type, or a null type if that fails.
TypeDecl *getSingleTypeResult();
};
@@ -277,13 +277,13 @@
void foundDecl(ValueDecl *D, DeclVisibilityKind reason) override;
};
-/// \brief Remove any declarations in the given set that were overridden by
+/// Remove any declarations in the given set that were overridden by
/// other declarations in that set.
///
/// \returns true if any declarations were removed, false otherwise.
bool removeOverriddenDecls(SmallVectorImpl<ValueDecl*> &decls);
-/// \brief Remove any declarations in the given set that are shadowed by
+/// Remove any declarations in the given set that are shadowed by
/// other declarations in that set.
///
/// \param decls The set of declarations being considered.
diff --git a/include/swift/AST/Ownership.h b/include/swift/AST/Ownership.h
index c563ae3..ee8c2e2 100644
--- a/include/swift/AST/Ownership.h
+++ b/include/swift/AST/Ownership.h
@@ -33,7 +33,7 @@
// This enum is used in diagnostics. If you add a case here, the diagnostics
// must be updated as well.
enum class ReferenceOwnership : uint8_t {
- /// \brief a strong reference (the default semantics)
+ /// a strong reference (the default semantics)
Strong,
#define REF_STORAGE(Name, ...) Name,
@@ -122,14 +122,14 @@
/// Different kinds of value ownership supported by Swift.
enum class ValueOwnership : uint8_t {
- /// \brief the context-dependent default ownership (sometimes shared,
+ /// the context-dependent default ownership (sometimes shared,
/// sometimes owned)
Default,
- /// \brief an 'inout' mutating pointer-like value
+ /// an 'inout' mutating pointer-like value
InOut,
- /// \brief a '__shared' non-mutating pointer-like value
+ /// a '__shared' non-mutating pointer-like value
Shared,
- /// \brief an '__owned' value
+ /// an '__owned' value
Owned,
Last_Kind = Owned
diff --git a/include/swift/AST/Pattern.h b/include/swift/AST/Pattern.h
index 5579d8a..27397b1 100644
--- a/include/swift/AST/Pattern.h
+++ b/include/swift/AST/Pattern.h
@@ -96,7 +96,7 @@
public:
PatternKind getKind() const { return PatternKind(Bits.Pattern.Kind); }
- /// \brief Retrieve the name of the given pattern kind.
+ /// Retrieve the name of the given pattern kind.
///
/// This name should only be used for debugging dumps and other
/// developer aids, and should never be part of a diagnostic or exposed
@@ -161,14 +161,14 @@
SourceLoc getEndLoc() const { return getSourceRange().End; }
SourceLoc getLoc() const;
- /// \brief Collect the set of variables referenced in the given pattern.
+ /// Collect the set of variables referenced in the given pattern.
void collectVariables(SmallVectorImpl<VarDecl *> &variables) const;
- /// \brief apply the specified function to all variables referenced in this
+ /// apply the specified function to all variables referenced in this
/// pattern.
void forEachVariable(llvm::function_ref<void(VarDecl *)> f) const;
- /// \brief apply the specified function to all pattern nodes recursively in
+ /// apply the specified function to all pattern nodes recursively in
/// this pattern. This is a pre-order traversal.
void forEachNode(llvm::function_ref<void(Pattern *)> f);
@@ -182,7 +182,7 @@
bool isNeverDefaultInitializable() const;
- /// \brief Mark all vardecls in this pattern as having non-pattern initial
+ /// Mark all vardecls in this pattern as having non-pattern initial
/// values bound into them.
void markHasNonPatternBindingInit() {
forEachVariable([&](VarDecl *VD) {
@@ -190,7 +190,7 @@
});
}
- /// \brief Mark all vardecls in this pattern as having an owning statement for
+ /// Mark all vardecls in this pattern as having an owning statement for
/// the pattern.
void markOwnedByStatement(Stmt *S) {
forEachVariable([&](VarDecl *VD) {
@@ -305,7 +305,7 @@
ArrayRef<TuplePatternElt> elements, SourceLoc rp,
Optional<bool> implicit = None);
- /// \brief Create either a tuple pattern or a paren pattern, depending
+ /// Create either a tuple pattern or a paren pattern, depending
/// on the elements.
static Pattern *createSimple(ASTContext &C, SourceLoc lp,
ArrayRef<TuplePatternElt> elements, SourceLoc rp,
diff --git a/include/swift/AST/PrintOptions.h b/include/swift/AST/PrintOptions.h
index d986ede..c408a83 100644
--- a/include/swift/AST/PrintOptions.h
+++ b/include/swift/AST/PrintOptions.h
@@ -123,16 +123,16 @@
/// A default-constructed PrintOptions is suitable for printing to users;
/// there are also factory methods for specific use cases.
struct PrintOptions {
- /// \brief The indentation width.
+ /// The indentation width.
unsigned Indent = 2;
- /// \brief Whether to print function definitions.
+ /// Whether to print function definitions.
bool FunctionDefinitions = false;
- /// \brief Whether to print '{ get set }' on readwrite computed properties.
+ /// Whether to print '{ get set }' on readwrite computed properties.
bool PrintGetSetOnRWProperties = true;
- /// \brief Whether to print *any* accessors on properties.
+ /// Whether to print *any* accessors on properties.
bool PrintPropertyAccessors = true;
/// Whether to print the accessors of a property abstractly,
@@ -161,16 +161,16 @@
/// Whether to print the bodies of accessors in protocol context.
bool PrintAccessorBodiesInProtocols = false;
- /// \brief Whether to print type definitions.
+ /// Whether to print type definitions.
bool TypeDefinitions = false;
- /// \brief Whether to print variable initializers.
+ /// Whether to print variable initializers.
bool VarInitializers = false;
- /// \brief Whether to print enum raw value expressions.
+ /// Whether to print enum raw value expressions.
bool EnumRawValues = false;
- /// \brief Whether to prefer printing TypeReprs instead of Types,
+ /// Whether to prefer printing TypeReprs instead of Types,
/// if a TypeRepr is available. This allows us to print the original
/// spelling of the type name.
///
@@ -178,22 +178,22 @@
/// it to the user.
bool PreferTypeRepr = true;
- /// \brief Whether to print fully qualified Types.
+ /// Whether to print fully qualified Types.
bool FullyQualifiedTypes = false;
- /// \brief Print fully qualified types if our heuristics say that a certain
+ /// Print fully qualified types if our heuristics say that a certain
/// type might be ambiguous.
bool FullyQualifiedTypesIfAmbiguous = false;
- /// \brief Print Swift.Array and Swift.Optional with sugared syntax
+ /// Print Swift.Array and Swift.Optional with sugared syntax
/// ([] and ?), even if there are no sugar type nodes.
bool SynthesizeSugarOnTypes = false;
- /// \brief If true, null types in the AST will be printed as "<null>". If
+ /// If true, null types in the AST will be printed as "<null>". If
/// false, the compiler will trap.
bool AllowNullTypes = true;
- /// \brief If true, the printer will explode a pattern like this:
+ /// If true, the printer will explode a pattern like this:
/// \code
/// var (a, b) = f()
/// \endcode
@@ -210,10 +210,10 @@
/// into multiple case declarations.
bool ExplodeEnumCaseDecls = false;
- /// \brief Whether to print implicit parts of the AST.
+ /// Whether to print implicit parts of the AST.
bool SkipImplicit = false;
- /// \brief Whether to print unavailable parts of the AST.
+ /// Whether to print unavailable parts of the AST.
bool SkipUnavailable = false;
/// Whether to skip internal stdlib declarations.
@@ -238,7 +238,7 @@
/// Whether to skip printing 'import' declarations.
bool SkipImports = false;
- /// \brief Whether to skip printing overrides and witnesses for
+ /// Whether to skip printing overrides and witnesses for
/// protocol requirements.
bool SkipOverrides = false;
@@ -322,12 +322,12 @@
ArgAndParamPrintingMode ArgAndParamPrinting =
ArgAndParamPrintingMode::MatchSource;
- /// \brief Whether to print documentation comments attached to declarations.
+ /// Whether to print documentation comments attached to declarations.
/// Note that this may print documentation comments from related declarations
/// (e.g. the overridden method in the superclass) if such comment is found.
bool PrintDocumentationComments = false;
- /// \brief Whether to print regular comments from clang module headers.
+ /// Whether to print regular comments from clang module headers.
bool PrintRegularClangComments = false;
/// When true, printing interface from a source file will print the original
@@ -349,17 +349,17 @@
/// Replaces the name of private and internal properties of types with '_'.
bool OmitNameOfInaccessibleProperties = false;
- /// \brief Print dependent types as references into this generic environment.
+ /// Print dependent types as references into this generic environment.
GenericEnvironment *GenericEnv = nullptr;
- /// \brief Print types with alternative names from their canonical names.
+ /// Print types with alternative names from their canonical names.
llvm::DenseMap<CanType, Identifier> *AlternativeTypeNames = nullptr;
- /// \brief The module in which the printer is used. Determines if the module
+ /// The module in which the printer is used. Determines if the module
/// name should be printed when printing a type.
ModuleDecl *CurrentModule = nullptr;
- /// \brief The information for converting archetypes to specialized types.
+ /// The information for converting archetypes to specialized types.
llvm::Optional<TypeTransformContext> TransformContext;
bool PrintAsMember = false;
@@ -380,7 +380,7 @@
QualifyNestedDeclarations ShouldQualifyNestedDeclarations =
QualifyNestedDeclarations::Never;
- /// \brief If this is not \c nullptr then function bodies (including accessors
+ /// If this is not \c nullptr then function bodies (including accessors
/// and constructors) will be printed by this function.
std::function<void(const ValueDecl *, ASTPrinter &)> FunctionBody;
@@ -512,7 +512,7 @@
return result;
}
- /// \brief Retrieve the set of options that prints everything.
+ /// Retrieve the set of options that prints everything.
///
/// This is only intended for debug output.
static PrintOptions printEverything() {
diff --git a/include/swift/AST/ProtocolConformance.h b/include/swift/AST/ProtocolConformance.h
index f358644..71f3977 100644
--- a/include/swift/AST/ProtocolConformance.h
+++ b/include/swift/AST/ProtocolConformance.h
@@ -41,7 +41,7 @@
class SubstitutableType;
enum class AllocationArena;
-/// \brief Type substitution mapping from substitutable types to their
+/// Type substitution mapping from substitutable types to their
/// replacements.
typedef llvm::DenseMap<SubstitutableType *, Type> TypeSubstitutionMap;
@@ -82,7 +82,7 @@
Checking,
};
-/// \brief Describes how a particular type conforms to a given protocol,
+/// Describes how a particular type conforms to a given protocol,
/// providing the mapping from the protocol members to the type (or extension)
/// members that provide the functionality for the concrete type.
///
@@ -92,7 +92,7 @@
/// The kind of protocol conformance.
ProtocolConformanceKind Kind;
- /// \brief The type that conforms to the protocol, in the context of the
+ /// The type that conforms to the protocol, in the context of the
/// conformance definition.
Type ConformingType;
@@ -418,7 +418,7 @@
class NormalProtocolConformance : public RootProtocolConformance,
public llvm::FoldingSetNode
{
- /// \brief The protocol being conformed to and its current state.
+ /// The protocol being conformed to and its current state.
llvm::PointerIntPair<ProtocolDecl *, 2, ProtocolConformanceState>
ProtocolAndState;
@@ -434,7 +434,7 @@
/// Also stores the "invalid" bit.
llvm::PointerIntPair<Context, 1, bool> ContextAndInvalid;
- /// \brief The reason that this conformance exists.
+ /// The reason that this conformance exists.
///
/// Either Explicit (e.g. 'struct Foo: Protocol {}' or 'extension Foo:
/// Protocol {}'), Synthesized (e.g. RawRepresentable for 'enum Foo: Int {}')
@@ -448,7 +448,7 @@
SourceKindAndImplyingConformance = {nullptr,
ConformanceEntryKind::Explicit};
- /// \brief The mapping of individual requirements in the protocol over to
+ /// The mapping of individual requirements in the protocol over to
/// the declarations that satisfy those requirements.
mutable WitnessMap Mapping;
diff --git a/include/swift/AST/Requirement.h b/include/swift/AST/Requirement.h
index 987bf9f..63ec489 100644
--- a/include/swift/AST/Requirement.h
+++ b/include/swift/AST/Requirement.h
@@ -44,7 +44,7 @@
// when adding enumerators.
};
-/// \brief A single requirement placed on the type parameters (or associated
+/// A single requirement placed on the type parameters (or associated
/// types thereof) of a
class Requirement {
llvm::PointerIntPair<Type, 3, RequirementKind> FirstTypeAndKind;
@@ -73,21 +73,21 @@
assert(second);
}
- /// \brief Determine the kind of requirement.
+ /// Determine the kind of requirement.
RequirementKind getKind() const { return FirstTypeAndKind.getInt(); }
- /// \brief Retrieve the first type.
+ /// Retrieve the first type.
Type getFirstType() const {
return FirstTypeAndKind.getPointer();
}
- /// \brief Retrieve the second type.
+ /// Retrieve the second type.
Type getSecondType() const {
assert(getKind() != RequirementKind::Layout);
return SecondType;
}
- /// \brief Subst the types involved in this requirement.
+ /// Subst the types involved in this requirement.
///
/// The \c args arguments are passed through to Type::subst. This doesn't
/// touch the superclasses, protocols or layout constraints.
@@ -113,7 +113,7 @@
llvm_unreachable("Unhandled RequirementKind in switch.");
}
- /// \brief Retrieve the layout constraint.
+ /// Retrieve the layout constraint.
LayoutConstraint getLayoutConstraint() const {
assert(getKind() == RequirementKind::Layout);
return SecondLayout;
diff --git a/include/swift/AST/SILLayout.h b/include/swift/AST/SILLayout.h
index 5d1e4ac..a613942 100644
--- a/include/swift/AST/SILLayout.h
+++ b/include/swift/AST/SILLayout.h
@@ -139,7 +139,7 @@
CanGenericSignature Generics,
ArrayRef<SILField> Fields);
- /// \brief Produce a profile of this locator, for use in a folding set.
+ /// Produce a profile of this locator, for use in a folding set.
void Profile(llvm::FoldingSetNodeID &id) {
Profile(id, getGenericSignature(), getFields());
}
diff --git a/include/swift/AST/SILOptions.h b/include/swift/AST/SILOptions.h
index b49cf57..d5b81a9 100644
--- a/include/swift/AST/SILOptions.h
+++ b/include/swift/AST/SILOptions.h
@@ -132,7 +132,7 @@
/// Enable the mandatory semantic arc optimizer.
bool EnableMandatorySemanticARCOpts = false;
- /// \brief Enable large loadable types IRGen pass.
+ /// Enable large loadable types IRGen pass.
bool EnableLargeLoadableTypes = true;
/// The name of the file to which the backend should save YAML optimization
diff --git a/include/swift/AST/Stmt.h b/include/swift/AST/Stmt.h
index fbf68ed..e6089f6 100644
--- a/include/swift/AST/Stmt.h
+++ b/include/swift/AST/Stmt.h
@@ -106,17 +106,17 @@
StmtKind getKind() const { return StmtKind(Bits.Stmt.Kind); }
- /// \brief Retrieve the name of the given statement kind.
+ /// Retrieve the name of the given statement kind.
///
/// This name should only be used for debugging dumps and other
/// developer aids, and should never be part of a diagnostic or exposed
/// to the user of the compiler in any way.
static StringRef getKindName(StmtKind kind);
- /// \brief Return the location of the start of the statement.
+ /// Return the location of the start of the statement.
SourceLoc getStartLoc() const;
- /// \brief Return the location of the end of the statement.
+ /// Return the location of the end of the statement.
SourceLoc getEndLoc() const;
SourceRange getSourceRange() const;
@@ -307,7 +307,7 @@
};
-/// \brief An expression that guards execution based on whether the run-time
+/// An expression that guards execution based on whether the run-time
/// configuration supports a given API, e.g.,
/// #available(OSX >= 10.9, iOS >= 7.0).
class alignas(8) PoundAvailableInfo final :
diff --git a/include/swift/AST/Type.h b/include/swift/AST/Type.h
index c8253a2..0d4c16a 100644
--- a/include/swift/AST/Type.h
+++ b/include/swift/AST/Type.h
@@ -54,7 +54,7 @@
class TypeWalker;
struct ExistentialLayout;
-/// \brief Type substitution mapping from substitutable types to their
+/// Type substitution mapping from substitutable types to their
/// replacements.
typedef llvm::DenseMap<SubstitutableType *, Type> TypeSubstitutionMap;
diff --git a/include/swift/AST/TypeCheckerDebugConsumer.h b/include/swift/AST/TypeCheckerDebugConsumer.h
index f00fb8c..9b34da6 100644
--- a/include/swift/AST/TypeCheckerDebugConsumer.h
+++ b/include/swift/AST/TypeCheckerDebugConsumer.h
@@ -18,7 +18,7 @@
namespace swift {
-/// \brief A consumer of type checker debug output.
+/// A consumer of type checker debug output.
class TypeCheckerDebugConsumer {
public:
virtual ~TypeCheckerDebugConsumer();
@@ -26,7 +26,7 @@
virtual raw_ostream &getStream() = 0;
};
-/// \brief A consumer of type checker debug output that dumps the information
+/// A consumer of type checker debug output that dumps the information
/// to stderr.
class StderrTypeCheckerDebugConsumer : public TypeCheckerDebugConsumer {
public:
@@ -35,7 +35,7 @@
}
};
-/// \brief A base class for a custom consumer of type checker debug output.
+/// A base class for a custom consumer of type checker debug output.
class CapturingTypeCheckerDebugConsumer : public TypeCheckerDebugConsumer {
std::unique_ptr<raw_ostream> Log;
diff --git a/include/swift/AST/TypeOrExtensionDecl.h b/include/swift/AST/TypeOrExtensionDecl.h
index 12c7c7c..67961c0 100644
--- a/include/swift/AST/TypeOrExtensionDecl.h
+++ b/include/swift/AST/TypeOrExtensionDecl.h
@@ -23,7 +23,7 @@
namespace swift {
-/// \brief Describes either a nominal type declaration or an extension
+/// Describes either a nominal type declaration or an extension
/// declaration.
struct TypeOrExtensionDecl {
// (The definitions are in Decl.cpp.)
@@ -34,15 +34,15 @@
TypeOrExtensionDecl(NominalTypeDecl *D);
TypeOrExtensionDecl(ExtensionDecl *D);
- /// \brief Return the contained *Decl as the Decl superclass.
+ /// Return the contained *Decl as the Decl superclass.
class Decl *getAsDecl() const;
- /// \brief Return the contained *Decl as the DeclContext superclass.
+ /// Return the contained *Decl as the DeclContext superclass.
DeclContext *getAsDeclContext() const;
- /// \brief Return the contained NominalTypeDecl or that of the extended type
+ /// Return the contained NominalTypeDecl or that of the extended type
/// in the ExtensionDecl.
NominalTypeDecl *getBaseNominal() const;
- /// \brief Is the contained pointer null?
+ /// Is the contained pointer null?
bool isNull() const;
explicit operator bool() const { return !isNull(); }
diff --git a/include/swift/AST/TypeRepr.h b/include/swift/AST/TypeRepr.h
index 4bcc7eb..188dc2f 100644
--- a/include/swift/AST/TypeRepr.h
+++ b/include/swift/AST/TypeRepr.h
@@ -45,7 +45,7 @@
enum : unsigned { NumTypeReprKindBits =
countBitsUsed(static_cast<unsigned>(TypeReprKind::Last_TypeRepr)) };
-/// \brief Representation of a type as written in source.
+/// Representation of a type as written in source.
class alignas(8) TypeRepr {
TypeRepr(const TypeRepr&) = delete;
void operator=(const TypeRepr&) = delete;
@@ -166,7 +166,7 @@
TypeRepr *clone(const ASTContext &ctx) const;
};
-/// \brief A TypeRepr for a type with a syntax error. Can be used both as a
+/// A TypeRepr for a type with a syntax error. Can be used both as a
/// top-level TypeRepr and as a part of other TypeRepr.
///
/// The client should make sure to emit a diagnostic at the construction time
@@ -193,7 +193,7 @@
friend class TypeRepr;
};
-/// \brief A type with attributes.
+/// A type with attributes.
/// \code
/// @convention(thin) Foo
/// \endcode
@@ -229,7 +229,7 @@
class ComponentIdentTypeRepr;
-/// \brief This is the abstract base class for types with identifier components.
+/// This is the abstract base class for types with identifier components.
/// \code
/// Foo.Bar<Gen>
/// \endcode
@@ -308,7 +308,7 @@
friend class TypeRepr;
};
-/// \brief A simple identifier type like "Int".
+/// A simple identifier type like "Int".
class SimpleIdentTypeRepr : public ComponentIdentTypeRepr {
public:
SimpleIdentTypeRepr(SourceLoc Loc, Identifier Id)
@@ -332,7 +332,7 @@
friend class TypeRepr;
};
-/// \brief An identifier type with generic arguments.
+/// An identifier type with generic arguments.
/// \code
/// Bar<Gen>
/// \endcode
@@ -380,7 +380,7 @@
friend class TypeRepr;
};
-/// \brief A type with identifier components.
+/// A type with identifier components.
/// \code
/// Foo.Bar<Gen>
/// \endcode
@@ -459,7 +459,7 @@
return ComponentRange(this);
}
-/// \brief A function type.
+/// A function type.
/// \code
/// (Foo) -> Bar
/// (Foo, Bar) -> Baz
@@ -515,7 +515,7 @@
friend class TypeRepr;
};
-/// \brief An array type.
+/// An array type.
/// \code
/// [Foo]
/// \endcode
@@ -542,7 +542,7 @@
friend class TypeRepr;
};
-/// \brief A dictionary type.
+/// A dictionary type.
/// \code
/// [K : V]
/// \endcode
@@ -575,7 +575,7 @@
friend class TypeRepr;
};
-/// \brief An optional type.
+/// An optional type.
/// \code
/// Foo?
/// \endcode
@@ -607,7 +607,7 @@
friend class TypeRepr;
};
-/// \brief An implicitly unwrapped optional type.
+/// An implicitly unwrapped optional type.
/// \code
/// Foo!
/// \endcode
@@ -636,7 +636,7 @@
friend class TypeRepr;
};
-/// \brief A parsed element within a tuple type.
+/// A parsed element within a tuple type.
struct TupleTypeReprElement {
Identifier Name;
SourceLoc NameLoc;
@@ -651,7 +651,7 @@
TupleTypeReprElement(TypeRepr *Type): Type(Type) {}
};
-/// \brief A tuple type.
+/// A tuple type.
/// \code
/// (Foo, Bar)
/// (x: Foo)
@@ -781,7 +781,7 @@
friend class TypeRepr;
};
-/// \brief A type composite type.
+/// A type composite type.
/// \code
/// Foo & Bar
/// \endcode
@@ -831,7 +831,7 @@
friend class TypeRepr;
};
-/// \brief A 'metatype' type.
+/// A 'metatype' type.
/// \code
/// Foo.Type
/// \endcode
@@ -860,7 +860,7 @@
friend class TypeRepr;
};
-/// \brief A 'protocol' type.
+/// A 'protocol' type.
/// \code
/// Foo.Protocol
/// \endcode
@@ -915,7 +915,7 @@
friend class TypeRepr;
};
-/// \brief An 'inout' type.
+/// An 'inout' type.
/// \code
/// x : inout Int
/// \endcode
@@ -930,7 +930,7 @@
static bool classof(const InOutTypeRepr *T) { return true; }
};
-/// \brief A 'shared' type.
+/// A 'shared' type.
/// \code
/// x : shared Int
/// \endcode
@@ -945,7 +945,7 @@
static bool classof(const SharedTypeRepr *T) { return true; }
};
-/// \brief A 'owned' type.
+/// A 'owned' type.
/// \code
/// x : owned Int
/// \endcode
@@ -960,7 +960,7 @@
static bool classof(const OwnedTypeRepr *T) { return true; }
};
-/// \brief A TypeRepr for a known, fixed type.
+/// A TypeRepr for a known, fixed type.
///
/// Fixed type representations should be used sparingly, in places
/// where we need to specify some type (usually some built-in type)
diff --git a/include/swift/AST/TypeWalker.h b/include/swift/AST/TypeWalker.h
index 3ca1b3a..784fbe5 100644
--- a/include/swift/AST/TypeWalker.h
+++ b/include/swift/AST/TypeWalker.h
@@ -17,7 +17,7 @@
namespace swift {
-/// \brief An abstract class used to traverse a Type.
+/// An abstract class used to traverse a Type.
class TypeWalker {
public:
enum class Action {
diff --git a/include/swift/AST/Types.h b/include/swift/AST/Types.h
index d3f0857..e489dbf 100644
--- a/include/swift/AST/Types.h
+++ b/include/swift/AST/Types.h
@@ -324,7 +324,7 @@
);
SWIFT_INLINE_BITFIELD_FULL(TypeVariableType, TypeBase, 64-NumTypeBaseBits,
- /// \brief The unique number assigned to this type variable.
+ /// The unique number assigned to this type variable.
ID : 32 - NumTypeBaseBits,
/// Type variable options.
@@ -522,21 +522,21 @@
/// ownership attributes?
bool allowsOwnership();
- /// \brief Determine whether this type involves a type variable.
+ /// Determine whether this type involves a type variable.
bool hasTypeVariable() const {
return getRecursiveProperties().hasTypeVariable();
}
- /// \brief Determine where this type is a type variable or a dependent
+ /// Determine where this type is a type variable or a dependent
/// member root in a type variable.
bool isTypeVariableOrMember();
- /// \brief Determine whether this type involves a UnresolvedType.
+ /// Determine whether this type involves a UnresolvedType.
bool hasUnresolvedType() const {
return getRecursiveProperties().hasUnresolvedType();
}
- /// \brief Determine whether the type involves an archetype.
+ /// Determine whether the type involves an archetype.
bool hasArchetype() const {
return getRecursiveProperties().hasArchetype();
}
@@ -579,7 +579,7 @@
/// Map a contextual type to an interface type.
Type mapTypeOutOfContext();
- /// \brief Compute and return the set of type variables that occur within this
+ /// Compute and return the set of type variables that occur within this
/// type.
///
/// \param typeVariables This vector is populated with the set of
@@ -595,7 +595,7 @@
/// whether a type parameter exists at any position.
bool isTypeParameter();
- /// \brief Determine whether this type can dynamically be an optional type.
+ /// Determine whether this type can dynamically be an optional type.
///
/// \param includeExistential Whether an existential type should be considered
/// such a type.
@@ -646,7 +646,7 @@
return getRecursiveProperties().hasDependentMember();
}
- /// \brief Check if this type is a valid type for the LHS of an assignment.
+ /// Check if this type is a valid type for the LHS of an assignment.
/// This mainly means hasLValueType(), but empty tuples and tuples of empty
/// tuples also qualify.
bool isAssignableType();
@@ -686,13 +686,13 @@
return getAnyPointerElementType(Ignore);
}
- /// \brief Determine whether the given type is "specialized", meaning that
+ /// Determine whether the given type is "specialized", meaning that
/// it involves generic types for which generic arguments have been provided.
/// For example, the types Vector<Int> and Vector<Int>.Element are both
/// specialized, but the type Vector is not.
bool isSpecialized();
- /// \brief Determine whether this type is a legal, lowered SIL type.
+ /// Determine whether this type is a legal, lowered SIL type.
///
/// A type is SIL-illegal if it is:
/// - an l-value type,
@@ -702,7 +702,7 @@
/// - a tuple type with a SIL-illegal element type.
bool isLegalSILType();
- /// \brief Determine whether this type is a legal formal type.
+ /// Determine whether this type is a legal formal type.
///
/// A type is illegal as a formal type if it is:
/// - an l-value type,
@@ -715,28 +715,28 @@
/// These are the types of the Swift type system.
bool isLegalFormalType();
- /// \brief Check if this type is equal to the empty tuple type.
+ /// Check if this type is equal to the empty tuple type.
bool isVoid();
- /// \brief Check if this type is equal to Swift.Bool.
+ /// Check if this type is equal to Swift.Bool.
bool isBool();
- /// \brief Check if this type is equal to Builtin.IntN.
+ /// Check if this type is equal to Builtin.IntN.
bool isBuiltinIntegerType(unsigned bitWidth);
- /// \brief If this is a class type or a bound generic class type, returns the
+ /// If this is a class type or a bound generic class type, returns the
/// (possibly generic) class.
ClassDecl *getClassOrBoundGenericClass();
- /// \brief If this is a struct type or a bound generic struct type, returns
+ /// If this is a struct type or a bound generic struct type, returns
/// the (possibly generic) class.
StructDecl *getStructOrBoundGenericStruct();
- /// \brief If this is an enum or a bound generic enum type, returns the
+ /// If this is an enum or a bound generic enum type, returns the
/// (possibly generic) enum.
EnumDecl *getEnumOrBoundGenericEnum();
- /// \brief Determine whether this type may have a superclass, which holds for
+ /// Determine whether this type may have a superclass, which holds for
/// classes, bound generic classes, and archetypes that are only instantiable
/// with a class type.
bool mayHaveSuperclass();
@@ -751,7 +751,7 @@
/// - classes
bool satisfiesClassConstraint();
- /// \brief Determine whether this type can be used as a base type for AST
+ /// Determine whether this type can be used as a base type for AST
/// name lookup, which is the case for nominal types, protocol compositions
/// and archetypes.
///
@@ -768,7 +768,7 @@
getAnyNominal());
}
- /// \brief Retrieve the superclass of this type.
+ /// Retrieve the superclass of this type.
///
/// \param useArchetypes Whether to use context archetypes for outer generic
/// parameters if the class is nested inside a generic function.
@@ -777,7 +777,7 @@
/// superclass.
Type getSuperclass(bool useArchetypes = true);
- /// \brief True if this type is the exact superclass of another type.
+ /// True if this type is the exact superclass of another type.
///
/// \param ty The potential subclass.
///
@@ -792,7 +792,7 @@
/// a type's subclass.
bool isExactSuperclassOf(Type ty);
- /// \brief Get the substituted base class type, starting from a base class
+ /// Get the substituted base class type, starting from a base class
/// declaration and a substituted derived class type.
///
/// For example, given the following declarations:
@@ -809,7 +809,7 @@
Type getSuperclassForDecl(const ClassDecl *classDecl,
bool useArchetypes = true);
- /// \brief True if this type is the superclass of another type, or a generic
+ /// True if this type is the superclass of another type, or a generic
/// type that could be bound to the superclass.
///
/// \param ty The potential subclass.
@@ -823,20 +823,20 @@
/// concrete types to form the argument type.
bool isBindableTo(Type ty);
- /// \brief Determines whether this type is similar to \p other as defined by
+ /// Determines whether this type is similar to \p other as defined by
/// \p matchOptions.
bool matches(Type other, TypeMatchOptions matchOptions);
bool matchesParameter(Type other, TypeMatchOptions matchMode);
- /// \brief Determines whether this function type is similar to \p
+ /// Determines whether this function type is similar to \p
/// other as defined by \p matchOptions and the callback \p
/// paramsAndResultMatch which determines in a client-specific way
/// whether the parameters and result of the types match.
bool matchesFunctionType(Type other, TypeMatchOptions matchOptions,
llvm::function_ref<bool()> paramsAndResultMatch);
- /// \brief Determines whether this type has a retainable pointer
+ /// Determines whether this type has a retainable pointer
/// representation, i.e. whether it is representable as a single,
/// possibly nil pointer that can be unknown-retained and
/// unknown-released.
@@ -864,11 +864,11 @@
/// conceivably be bridged to an Objective-C class type.
bool isPotentiallyBridgedValueType();
- /// \brief If this is a nominal type or a bound generic nominal type,
+ /// If this is a nominal type or a bound generic nominal type,
/// returns the (possibly generic) nominal type declaration.
NominalTypeDecl *getNominalOrBoundGenericNominal();
- /// \brief If this is a nominal type, bound generic nominal type, or
+ /// If this is a nominal type, bound generic nominal type, or
/// unbound generic nominal type, return the (possibly generic) nominal type
/// declaration.
NominalTypeDecl *getAnyNominal();
@@ -893,12 +893,12 @@
bool isTriviallyRepresentableIn(ForeignLanguage language,
const DeclContext *dc);
- /// \brief Given that this is a nominal type or bound generic nominal
+ /// Given that this is a nominal type or bound generic nominal
/// type, return its parent type; this will be a null type if the type
/// is not a nested type.
Type getNominalParent();
- /// \brief If this is a GenericType, bound generic nominal type, or
+ /// If this is a GenericType, bound generic nominal type, or
/// unbound generic nominal type, return the (possibly generic) nominal type
/// declaration.
GenericTypeDecl *getAnyGeneric();
@@ -1098,7 +1098,7 @@
NominalTypeDecl *NomDecl;
};
- /// \brief The type of the parent, in which this type is nested.
+ /// The type of the parent, in which this type is nested.
Type Parent;
template <typename... Args>
@@ -1112,10 +1112,10 @@
public:
- /// \brief Returns the declaration that declares this type.
+ /// Returns the declaration that declares this type.
GenericTypeDecl *getDecl() const { return GenDecl; }
- /// \brief Returns the type of the parent of this type. This will
+ /// Returns the type of the parent of this type. This will
/// be null for top-level types or local types, and for non-generic types
/// will simply be the same as the declared type of the declaration context
/// of TheDecl. For types nested within generic types, however, this will
@@ -1144,7 +1144,7 @@
NominalOrBoundGenericNominalType(Args &&...args)
: AnyGenericType(std::forward<Args>(args)...) {}
- /// \brief Returns the declaration that declares this type.
+ /// Returns the declaration that declares this type.
NominalTypeDecl *getDecl() const { return NomDecl; }
// Implement isa/cast/dyncast/etc.
@@ -1302,7 +1302,7 @@
};
DEFINE_EMPTY_CAN_TYPE_WRAPPER(BuiltinUnsafeValueBufferType, BuiltinType);
-/// \brief A builtin vector type.
+/// A builtin vector type.
class BuiltinVectorType : public BuiltinType, public llvm::FoldingSetNode {
Type elementType;
unsigned numElements;
@@ -1318,10 +1318,10 @@
static BuiltinVectorType *get(const ASTContext &context, Type elementType,
unsigned numElements);
- /// \brief Retrieve the type of this vector's elements.
+ /// Retrieve the type of this vector's elements.
Type getElementType() const { return elementType; }
- /// \brief Retrieve the number of elements in this vector.
+ /// Retrieve the number of elements in this vector.
unsigned getNumElements() const { return numElements; }
void Profile(llvm::FoldingSetNodeID &ID) {
@@ -1663,7 +1663,7 @@
static NameAliasType *get(TypeAliasDecl *typealias, Type parent,
SubstitutionMap substitutions, Type underlying);
- /// \brief Returns the declaration that declares this type.
+ /// Returns the declaration that declares this type.
TypeAliasDecl *getDecl() const {
// Avoid requiring the definition of TypeAliasDecl.
return typealias;
@@ -1904,7 +1904,7 @@
/// An optional name for the field.
Identifier Name;
- /// \brief This is the type of the field.
+ /// This is the type of the field.
Type ElementType;
/// Flags that are specific to and relevant for parameter types
@@ -2138,7 +2138,7 @@
parent, genericArgs));
}
- /// \brief Returns the declaration that declares this type.
+ /// Returns the declaration that declares this type.
ClassDecl *getDecl() const {
return reinterpret_cast<ClassDecl*>(BoundGenericType::getDecl());
}
@@ -2172,7 +2172,7 @@
parent, genericArgs));
}
- /// \brief Returns the declaration that declares this type.
+ /// Returns the declaration that declares this type.
EnumDecl *getDecl() const {
return reinterpret_cast<EnumDecl*>(BoundGenericType::getDecl());
}
@@ -2206,7 +2206,7 @@
parent, genericArgs));
}
- /// \brief Returns the declaration that declares this type.
+ /// Returns the declaration that declares this type.
StructDecl *getDecl() const {
return reinterpret_cast<StructDecl*>(BoundGenericType::getDecl());
}
@@ -2247,7 +2247,7 @@
return reinterpret_cast<EnumDecl *>(NominalType::getDecl());
}
- /// \brief Retrieve the type when we're referencing the given enum
+ /// Retrieve the type when we're referencing the given enum
/// declaration in the parent type \c Parent.
static EnumType *get(EnumDecl *D, Type Parent, const ASTContext &C);
@@ -2275,7 +2275,7 @@
return reinterpret_cast<StructDecl *>(NominalType::getDecl());
}
- /// \brief Retrieve the type when we're referencing the given struct
+ /// Retrieve the type when we're referencing the given struct
/// declaration in the parent type \c Parent.
static StructType *get(StructDecl *D, Type Parent, const ASTContext &C);
@@ -2303,7 +2303,7 @@
return reinterpret_cast<ClassDecl *>(NominalType::getDecl());
}
- /// \brief Retrieve the type when we're referencing the given class
+ /// Retrieve the type when we're referencing the given class
/// declaration in the parent type \c Parent.
static ClassType *get(ClassDecl *D, Type Parent, const ASTContext &C);
@@ -2407,7 +2407,7 @@
const ASTContext &C);
public:
- /// \brief Return the MetatypeType for the specified type declaration.
+ /// Return the MetatypeType for the specified type declaration.
///
/// This leaves the 'representation' property unavailable.
static MetatypeType *get(Type T, const ASTContext &C) {
@@ -2534,7 +2534,7 @@
Type SelfType;
public:
- /// \brief Return the DynamicSelf for the specified self type.
+ /// Return the DynamicSelf for the specified self type.
static DynamicSelfType *get(Type selfType, const ASTContext &ctx);
/// Retrieve the (static) self type for this dynamic self type.
@@ -2830,7 +2830,7 @@
}
};
- /// \brief A class which abstracts out some details necessary for
+ /// A class which abstracts out some details necessary for
/// making a call.
class ExtInfo {
// If bits are added or removed, then TypeBase::AnyFunctionTypeBits
@@ -2979,11 +2979,11 @@
}
public:
- /// \brief Break an input type into an array of \c AnyFunctionType::Params.
+ /// Break an input type into an array of \c AnyFunctionType::Params.
static void decomposeInput(Type type,
SmallVectorImpl<Param> &result);
- /// \brief Take an array of parameters and turn it into an input type.
+ /// Take an array of parameters and turn it into an input type.
///
/// The result type is only there as a way to extract the ASTContext when
/// needed.
@@ -2994,13 +2994,13 @@
return composeInput(ctx, params.getOriginalArray(), canonicalVararg);
}
- /// \brief Given two arrays of parameters determine if they are equal.
+ /// Given two arrays of parameters determine if they are equal.
static bool equalParams(ArrayRef<Param> a, ArrayRef<Param> b);
- /// \brief Given two arrays of parameters determine if they are equal.
+ /// Given two arrays of parameters determine if they are equal.
static bool equalParams(CanParamArrayRef a, CanParamArrayRef b);
- /// \brief Given an array of parameters and an array of labels of the
+ /// Given an array of parameters and an array of labels of the
/// same length, update each parameter to have the corresponding label.
static void relabelParams(MutableArrayRef<Param> params,
ArrayRef<Identifier> labels);
@@ -3015,12 +3015,12 @@
return ExtInfo(Bits.AnyFunctionType.ExtInfo);
}
- /// \brief Get the representation of the function type.
+ /// Get the representation of the function type.
Representation getRepresentation() const {
return getExtInfo().getRepresentation();
}
- /// \brief True if the parameter declaration it is attached to is guaranteed
+ /// True if the parameter declaration it is attached to is guaranteed
/// to not persist the closure for longer than the duration of the call.
bool isNoEscape() const {
return getExtInfo().isNoEscape();
@@ -3622,7 +3622,7 @@
using Language = SILFunctionLanguage;
using Representation = SILFunctionTypeRepresentation;
- /// \brief A class which abstracts out some details necessary for
+ /// A class which abstracts out some details necessary for
/// making a call.
class ExtInfo {
// If bits are added or removed, then TypeBase::SILFunctionTypeBits
@@ -4030,7 +4030,7 @@
ExtInfo getExtInfo() const { return ExtInfo(Bits.SILFunctionType.ExtInfo); }
- /// \brief Returns the language-level calling convention of the function.
+ /// Returns the language-level calling convention of the function.
Language getLanguage() const {
return getExtInfo().getLanguage();
}
@@ -4039,7 +4039,7 @@
return getExtInfo().hasSelfParam();
}
- /// \brief Get the representation of the function type.
+ /// Get the representation of the function type.
Representation getRepresentation() const {
return getExtInfo().getRepresentation();
}
@@ -4175,7 +4175,7 @@
SILLayout *Layout,
SubstitutionMap Args);
- /// \brief Produce a profile of this box, for use in a folding set.
+ /// Produce a profile of this box, for use in a folding set.
void Profile(llvm::FoldingSetNodeID &id) {
Profile(id, getLayout(), getSubstitutions());
}
@@ -4345,7 +4345,7 @@
/// by another type.
class ProtocolType : public NominalType, public llvm::FoldingSetNode {
public:
- /// \brief Retrieve the type when we're referencing the given protocol.
+ /// Retrieve the type when we're referencing the given protocol.
/// declaration.
static ProtocolType *get(ProtocolDecl *D, Type Parent, const ASTContext &C);
@@ -4411,12 +4411,12 @@
friend TrailingObjects;
public:
- /// \brief Retrieve an instance of a protocol composition type with the
+ /// Retrieve an instance of a protocol composition type with the
/// given set of members.
static Type get(const ASTContext &C, ArrayRef<Type> Members,
bool HasExplicitAnyObject);
- /// \brief Retrieve the set of members composed to create this type.
+ /// Retrieve the set of members composed to create this type.
///
/// For non-canonical types, this can contain classes, protocols and
/// protocol compositions in any order. There can be at most one unique
@@ -4639,14 +4639,14 @@
/// \param existential The existential type or existential metatype to open.
static CanType getAnyOpened(Type existential);
- /// \brief Retrieve the name of this archetype.
+ /// Retrieve the name of this archetype.
Identifier getName() const;
- /// \brief Retrieve the fully-dotted name that should be used to display this
+ /// Retrieve the fully-dotted name that should be used to display this
/// archetype.
std::string getFullName() const;
- /// \brief Retrieve the parent of this archetype, or null if this is a
+ /// Retrieve the parent of this archetype, or null if this is a
/// primary archetype.
ArchetypeType *getParent() const {
return ParentOrOpenedOrEnvironment.dyn_cast<ArchetypeType *>();
@@ -4686,38 +4686,38 @@
/// a superclass constraint.
bool requiresClass() const;
- /// \brief Retrieve the superclass of this type, if such a requirement exists.
+ /// Retrieve the superclass of this type, if such a requirement exists.
Type getSuperclass() const {
if (!Bits.ArchetypeType.HasSuperclass) return Type();
return *getTrailingObjects<Type>();
}
- /// \brief Retrieve the layout constraint of this type, if such a requirement exists.
+ /// Retrieve the layout constraint of this type, if such a requirement exists.
LayoutConstraint getLayoutConstraint() const {
if (!Bits.ArchetypeType.HasLayoutConstraint) return LayoutConstraint();
return *getTrailingObjects<LayoutConstraint>();
}
- /// \brief Return true if the archetype has any requirements at all.
+ /// Return true if the archetype has any requirements at all.
bool hasRequirements() const {
return !getConformsTo().empty() || getSuperclass();
}
- /// \brief Retrieve the nested type with the given name.
+ /// Retrieve the nested type with the given name.
Type getNestedType(Identifier Name) const;
- /// \brief Retrieve the nested type with the given name, if it's already
+ /// Retrieve the nested type with the given name, if it's already
/// known.
///
/// This is an implementation detail used by the generic signature builder.
Optional<Type> getNestedTypeIfKnown(Identifier Name) const;
- /// \brief Check if the archetype contains a nested type with the given name.
+ /// Check if the archetype contains a nested type with the given name.
bool hasNestedType(Identifier Name) const;
- /// \brief Retrieve the known nested types of this archetype.
+ /// Retrieve the known nested types of this archetype.
///
/// Useful only for debugging dumps; all other queries should attempt to
/// find a particular nested type by name, directly, or look at the
@@ -4727,7 +4727,7 @@
return getAllNestedTypes(/*resolveTypes=*/false);
}
- /// \brief Retrieve the nested types of this archetype.
+ /// Retrieve the nested types of this archetype.
///
/// \param resolveTypes Whether to eagerly resolve the nested types
/// (defaults to \c true). Otherwise, the nested types might be
@@ -4738,7 +4738,7 @@
ArrayRef<std::pair<Identifier, Type>>
getAllNestedTypes(bool resolveTypes = true) const;
- /// \brief Set the nested types to a copy of the given array of
+ /// Set the nested types to a copy of the given array of
/// archetypes.
void setNestedTypes(ASTContext &Ctx,
ArrayRef<std::pair<Identifier, Type>> Nested);
@@ -4929,7 +4929,7 @@
END_CAN_TYPE_WRAPPER(DependentMemberType, Type)
-/// \brief The storage type of a variable with non-strong reference
+/// The storage type of a variable with non-strong reference
/// ownership semantics.
///
/// The referent type always satisfies allowsOwnership().
@@ -5010,7 +5010,7 @@
#include "swift/AST/ReferenceStorage.def"
#undef REF_STORAGE_HELPER
-/// \brief A type variable used during type checking.
+/// A type variable used during type checking.
class TypeVariableType : public TypeBase {
// Note: We can't use llvm::TrailingObjects here because the trailing object
// type is opaque.
@@ -5025,13 +5025,13 @@
public:
- /// \brief Create a new type variable whose implementation is constructed
+ /// Create a new type variable whose implementation is constructed
/// with the given arguments.
template<typename ...Args>
static TypeVariableType *getNew(const ASTContext &C, unsigned ID,
Args &&...args);
- /// \brief Retrieve the implementation data corresponding to this type
+ /// Retrieve the implementation data corresponding to this type
/// variable.
///
/// The contents of the implementation data for this type are hidden in the
@@ -5040,7 +5040,7 @@
return *reinterpret_cast<Implementation *>(this + 1);
}
- /// \brief Retrieve the implementation data corresponding to this type
+ /// Retrieve the implementation data corresponding to this type
/// variable.
///
/// The contents of the implementation data for this type are hidden in the
@@ -5049,7 +5049,7 @@
return *reinterpret_cast<const Implementation *>(this + 1);
}
- /// \brief Access the implementation object for this type variable.
+ /// Access the implementation object for this type variable.
Implementation *operator->() {
return reinterpret_cast<Implementation *>(this + 1);
}
@@ -5347,7 +5347,7 @@
}
}
-/// \brief If this is a method in a type or extension thereof, compute
+/// If this is a method in a type or extension thereof, compute
/// and return a parameter to be used for the 'self' argument. The type of
/// the parameter is the empty Type() if no 'self' argument should exist. This
/// can only be used after name binding has resolved types.
diff --git a/include/swift/ASTSectionImporter/ASTSectionImporter.h b/include/swift/ASTSectionImporter/ASTSectionImporter.h
index a6d610d..7f42c14 100644
--- a/include/swift/ASTSectionImporter/ASTSectionImporter.h
+++ b/include/swift/ASTSectionImporter/ASTSectionImporter.h
@@ -23,7 +23,7 @@
namespace swift {
class SerializedModuleLoader;
- /// \brief Provided a memory buffer with an entire Mach-O __apple_ast
+ /// Provided a memory buffer with an entire Mach-O __apple_ast
/// section, this function makes memory buffer copies of all swift
/// modules found in it and registers them using
/// registerMemoryBuffer() so they can be found by loadModule(). The
diff --git a/include/swift/Basic/BlotMapVector.h b/include/swift/Basic/BlotMapVector.h
index bd72214..9d3d11d 100644
--- a/include/swift/Basic/BlotMapVector.h
+++ b/include/swift/Basic/BlotMapVector.h
@@ -25,7 +25,7 @@
return Pair.first == KeyT();
}
-/// \brief An associative container with fast insertion-order (deterministic)
+/// An associative container with fast insertion-order (deterministic)
/// iteration over its elements. Plus the special blot operation.
template <typename KeyT, typename ValueT,
typename MapT = llvm::DenseMap<KeyT, size_t>,
diff --git a/include/swift/Basic/BlotSetVector.h b/include/swift/Basic/BlotSetVector.h
index fa565f5..0efca56 100644
--- a/include/swift/Basic/BlotSetVector.h
+++ b/include/swift/Basic/BlotSetVector.h
@@ -51,7 +51,7 @@
MapT Map;
public:
- /// \brief Construct an empty BlotSetVector.
+ /// Construct an empty BlotSetVector.
BlotSetVector() {}
bool empty() const { return Vector.empty(); }
diff --git a/include/swift/Basic/ByteTreeSerialization.h b/include/swift/Basic/ByteTreeSerialization.h
index 36a3f86..357075f 100644
--- a/include/swift/Basic/ByteTreeSerialization.h
+++ b/include/swift/Basic/ByteTreeSerialization.h
@@ -11,7 +11,7 @@
//===----------------------------------------------------------------------===//
//
/// \file
-/// \brief Provides an interface for serializing an object tree to a custom
+/// Provides an interface for serializing an object tree to a custom
/// binary format called ByteTree.
///
//===----------------------------------------------------------------------===//
diff --git a/include/swift/Basic/ExponentialGrowthAppendingBinaryByteStream.h b/include/swift/Basic/ExponentialGrowthAppendingBinaryByteStream.h
index 87b20ca..64cfeb5 100644
--- a/include/swift/Basic/ExponentialGrowthAppendingBinaryByteStream.h
+++ b/include/swift/Basic/ExponentialGrowthAppendingBinaryByteStream.h
@@ -26,7 +26,7 @@
namespace swift {
-/// \brief An implementation of WritableBinaryStream which can write at its end
+/// An implementation of WritableBinaryStream which can write at its end
/// causing the underlying data to grow. This class owns the underlying data.
class ExponentialGrowthAppendingBinaryByteStream
: public llvm::WritableBinaryStream {
diff --git a/include/swift/Basic/JSONSerialization.h b/include/swift/Basic/JSONSerialization.h
index 4f5a365..9f95825 100644
--- a/include/swift/Basic/JSONSerialization.h
+++ b/include/swift/Basic/JSONSerialization.h
@@ -11,7 +11,7 @@
//===----------------------------------------------------------------------===//
//
/// \file
-/// \brief Provides an interface for serializing to JSON.
+/// Provides an interface for serializing to JSON.
/// \note This does not include support for deserializing JSON; since JSON is
/// a subset of YAML, use LLVM's YAML parsing support instead.
///
diff --git a/include/swift/Basic/LangOptions.h b/include/swift/Basic/LangOptions.h
index ab8c18a..da71b7e 100644
--- a/include/swift/Basic/LangOptions.h
+++ b/include/swift/Basic/LangOptions.h
@@ -65,12 +65,12 @@
Complete,
};
- /// \brief A collection of options that affect the language dialect and
+ /// A collection of options that affect the language dialect and
/// provide compiler debugging facilities.
class LangOptions {
public:
- /// \brief The target we are building for.
+ /// The target we are building for.
///
/// This represents the minimum deployment target.
llvm::Triple Target;
@@ -79,13 +79,13 @@
/// Language features
///
- /// \brief User-overridable language version to compile for.
+ /// User-overridable language version to compile for.
version::Version EffectiveLanguageVersion = version::Version::getCurrentLanguageVersion();
- /// \brief Disable API availability checking.
+ /// Disable API availability checking.
bool DisableAvailabilityChecking = false;
- /// \brief Maximum number of typo corrections we are allowed to perform.
+ /// Maximum number of typo corrections we are allowed to perform.
unsigned TypoCorrectionLimit = 10;
/// Should access control be respected?
@@ -98,20 +98,23 @@
/// Support for alternate usage modes
///
- /// \brief Enable features useful for running in the debugger.
+ /// Enable features useful for running in the debugger.
bool DebuggerSupport = false;
+ /// Enable the DWARFImporter. Only used by lldb-moduleimport-test.
+ bool EnableDWARFImporter = false;
+
/// Allows using identifiers with a leading dollar.
bool EnableDollarIdentifiers = false;
- /// \brief Allow throwing call expressions without annotation with 'try'.
+ /// Allow throwing call expressions without annotation with 'try'.
bool EnableThrowWithoutTry = false;
- /// \brief Enable features useful for running playgrounds.
+ /// Enable features useful for running playgrounds.
// FIXME: This should probably be limited to the particular SourceFile.
bool Playground = false;
- /// \brief Keep comments during lexing and attach them to declarations.
+ /// Keep comments during lexing and attach them to declarations.
bool AttachCommentsToDecls = false;
/// Whether to include initializers when code-completing a postfix
@@ -148,17 +151,17 @@
/// Flags for developers
///
- /// \brief Whether we are debugging the constraint solver.
+ /// Whether we are debugging the constraint solver.
///
/// This option enables verbose debugging output from the constraint
/// solver.
bool DebugConstraintSolver = false;
- /// \brief Specific solution attempt for which the constraint
+ /// Specific solution attempt for which the constraint
/// solver should be debugged.
unsigned DebugConstraintSolverAttempt = 0;
- /// \brief Enable named lazy member loading.
+ /// Enable named lazy member loading.
bool NamedLazyMemberLoading = true;
/// Debug the generic signatures computed by the generic signature builder.
@@ -169,21 +172,21 @@
/// This is for testing purposes.
std::string DebugForbidTypecheckPrefix;
- /// \brief How to diagnose cycles encountered
+ /// How to diagnose cycles encountered
CycleDiagnosticKind EvaluatorCycleDiagnostics =
CycleDiagnosticKind::NoDiagnose;
- /// \brief The path to which we should emit GraphViz output for the complete
+ /// The path to which we should emit GraphViz output for the complete
/// request-evaluator graph.
std::string RequestEvaluatorGraphVizPath;
- /// \brief The upper bound, in bytes, of temporary data that can be
+ /// The upper bound, in bytes, of temporary data that can be
/// allocated by the constraint solver.
unsigned SolverMemoryThreshold = 512 * 1024 * 1024;
unsigned SolverBindingThreshold = 1024 * 1024;
- /// \brief The upper bound to number of sub-expressions unsolved
+ /// The upper bound to number of sub-expressions unsolved
/// before termination of the shrink phrase of the constraint solver.
unsigned SolverShrinkUnsolvedThreshold = 10;
@@ -193,27 +196,27 @@
/// Disable constraint system performance hacks.
bool DisableConstraintSolverPerformanceHacks = false;
- /// \brief Enable experimental operator designated types feature.
+ /// Enable experimental operator designated types feature.
bool EnableOperatorDesignatedTypes = false;
- /// \brief Enable constraint solver support for experimental
+ /// Enable constraint solver support for experimental
/// operator protocol designator feature.
bool SolverEnableOperatorDesignatedTypes = false;
/// The maximum depth to which to test decl circularity.
unsigned MaxCircularityDepth = 500;
- /// \brief Perform all dynamic allocations using malloc/free instead of
+ /// Perform all dynamic allocations using malloc/free instead of
/// optimized custom allocator, so that memory debugging tools can be used.
bool UseMalloc = false;
- /// \brief Enable experimental #assert feature.
+ /// Enable experimental #assert feature.
bool EnableExperimentalStaticAssert = false;
- /// \brief Enable experimental property behavior feature.
+ /// Enable experimental property behavior feature.
bool EnableExperimentalPropertyBehaviors = false;
- /// \brief Staging flag for treating inout parameters as Thread Sanitizer
+ /// Staging flag for treating inout parameters as Thread Sanitizer
/// accesses.
bool DisableTsanInoutInstrumentation = false;
diff --git a/include/swift/Basic/OutputFileMap.h b/include/swift/Basic/OutputFileMap.h
index 59d4da4..a0fcb8f 100644
--- a/include/swift/Basic/OutputFileMap.h
+++ b/include/swift/Basic/OutputFileMap.h
@@ -85,7 +85,7 @@
void write(llvm::raw_ostream &os, ArrayRef<StringRef> inputs) const;
private:
- /// \brief Parses the given \p Buffer and returns either an OutputFileMap or
+ /// Parses the given \p Buffer and returns either an OutputFileMap or
/// error, taking ownership of \p Buffer in the process.
static llvm::Expected<OutputFileMap>
parse(std::unique_ptr<llvm::MemoryBuffer> Buffer, StringRef workingDirectory);
diff --git a/include/swift/Basic/Program.h b/include/swift/Basic/Program.h
index 9e2b18c..84d4bdf 100644
--- a/include/swift/Basic/Program.h
+++ b/include/swift/Basic/Program.h
@@ -15,7 +15,7 @@
namespace swift {
-/// \brief This function executes the program using the arguments provided,
+/// This function executes the program using the arguments provided,
/// preferring to reexecute the current process, if supported.
///
/// \param Program Path of the program to be executed
diff --git a/include/swift/Basic/SourceLoc.h b/include/swift/Basic/SourceLoc.h
index b073525..eaae86c 100644
--- a/include/swift/Basic/SourceLoc.h
+++ b/include/swift/Basic/SourceLoc.h
@@ -129,13 +129,13 @@
unsigned ByteLength;
public:
- /// \brief Constructs an invalid range.
+ /// Constructs an invalid range.
CharSourceRange() = default;
CharSourceRange(SourceLoc Start, unsigned ByteLength)
: Start(Start), ByteLength(ByteLength) {}
- /// \brief Constructs a character range which starts and ends at the
+ /// Constructs a character range which starts and ends at the
/// specified character locations.
CharSourceRange(const SourceManager &SM, SourceLoc Start, SourceLoc End);
@@ -169,7 +169,7 @@
less_equal(Other.getEnd().Value.getPointer(), getEnd().Value.getPointer());
}
- /// \brief expands *this to cover Other
+ /// expands *this to cover Other
void widen(CharSourceRange Other) {
auto Diff = Other.getEnd().Value.getPointer() - getEnd().Value.getPointer();
if (Diff > 0) {
@@ -192,7 +192,7 @@
return StringRef(Start.Value.getPointer(), ByteLength);
}
- /// \brief Return the length of this valid range in bytes. Can be zero.
+ /// Return the length of this valid range in bytes. Can be zero.
unsigned getByteLength() const {
assert(isValid() && "length does not make sense for an invalid range");
return ByteLength;
diff --git a/include/swift/Basic/SourceManager.h b/include/swift/Basic/SourceManager.h
index f952efd..abb244c 100644
--- a/include/swift/Basic/SourceManager.h
+++ b/include/swift/Basic/SourceManager.h
@@ -23,7 +23,7 @@
namespace swift {
-/// \brief This class manages and owns source buffers.
+/// This class manages and owns source buffers.
class SourceManager {
llvm::SourceMgr LLVMSourceMgr;
llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem> FileSystem;
@@ -150,7 +150,7 @@
/// in that case.
StringRef getIdentifierForBuffer(unsigned BufferID) const;
- /// \brief Returns a SourceRange covering the entire specified buffer.
+ /// Returns a SourceRange covering the entire specified buffer.
///
/// Note that the start location might not point at the first token: it
/// might point at whitespace or a comment.
@@ -165,10 +165,10 @@
return getRangeForBuffer(BufferID).getStart();
}
- /// \brief Returns the offset in bytes for the given valid source location.
+ /// Returns the offset in bytes for the given valid source location.
unsigned getLocOffsetInBuffer(SourceLoc Loc, unsigned BufferID) const;
- /// \brief Returns the distance in bytes between the given valid source
+ /// Returns the distance in bytes between the given valid source
/// locations.
unsigned getByteDistance(SourceLoc Start, SourceLoc End) const;
diff --git a/include/swift/Basic/TaskQueue.h b/include/swift/Basic/TaskQueue.h
index 7336b0b..9c5fa5c 100644
--- a/include/swift/Basic/TaskQueue.h
+++ b/include/swift/Basic/TaskQueue.h
@@ -35,7 +35,7 @@
using ProcessId = llvm::sys::procid_t;
-/// \brief Indicates how a TaskQueue should respond to the task finished event.
+/// Indicates how a TaskQueue should respond to the task finished event.
enum class TaskFinishedResponse {
/// Indicates that execution should continue.
ContinueExecution,
@@ -100,7 +100,7 @@
virtual void provideMapping(json::Output &out);
};
-/// \brief A class encapsulating the execution of multiple tasks in parallel.
+/// A class encapsulating the execution of multiple tasks in parallel.
class TaskQueue {
/// Tasks which have not begun execution.
std::queue<std::unique_ptr<Task>> QueuedTasks;
@@ -112,7 +112,7 @@
UnifiedStatsReporter *Stats;
public:
- /// \brief Create a new TaskQueue instance.
+ /// Create a new TaskQueue instance.
///
/// \param NumberOfParallelTasks indicates the number of tasks which should
/// be run in parallel. If 0, the TaskQueue will choose the most appropriate
@@ -126,13 +126,13 @@
// std::function (<rdar://problem/15665132>).
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdocumentation"
- /// \brief A callback which will be executed when each task begins execution
+ /// A callback which will be executed when each task begins execution
///
/// \param Pid the ProcessId of the task which just began execution.
/// \param Context the context which was passed when the task was added
using TaskBeganCallback = std::function<void(ProcessId Pid, void *Context)>;
- /// \brief A callback which will be executed after each task finishes
+ /// A callback which will be executed after each task finishes
/// execution.
///
/// \param Pid the ProcessId of the task which finished execution.
@@ -152,7 +152,7 @@
ProcessId Pid, int ReturnCode, StringRef Output, StringRef Errors,
TaskProcessInformation ProcInfo, void *Context)>;
- /// \brief A callback which will be executed if a task exited abnormally due
+ /// A callback which will be executed if a task exited abnormally due
/// to a signal.
///
/// \param Pid the ProcessId of the task which exited abnormally.
@@ -177,7 +177,7 @@
void *Context, Optional<int> Signal, TaskProcessInformation ProcInfo)>;
#pragma clang diagnostic pop
- /// \brief Indicates whether TaskQueue supports buffering output on the
+ /// Indicates whether TaskQueue supports buffering output on the
/// current system.
///
/// \note If this returns false, the TaskFinishedCallback passed
@@ -185,7 +185,7 @@
/// if the task actually generated output.
static bool supportsBufferingOutput();
- /// \brief Indicates whether TaskQueue supports parallel execution on the
+ /// Indicates whether TaskQueue supports parallel execution on the
/// current system.
static bool supportsParallelExecution();
@@ -193,7 +193,7 @@
/// parallel
unsigned getNumberOfParallelTasks() const;
- /// \brief Adds a task to the TaskQueue.
+ /// Adds a task to the TaskQueue.
///
/// \param ExecPath the path to the executable which the task should execute
/// \param Args the arguments which should be passed to the task
@@ -205,7 +205,7 @@
ArrayRef<const char *> Env = llvm::None,
void *Context = nullptr, bool SeparateErrors = false);
- /// \brief Synchronously executes the tasks in the TaskQueue.
+ /// Synchronously executes the tasks in the TaskQueue.
///
/// \param Began a callback which will be called when a task begins
/// \param Finished a callback which will be called when a task finishes
@@ -225,7 +225,7 @@
}
};
-/// \brief A class which simulates execution of tasks with behavior similar to
+/// A class which simulates execution of tasks with behavior similar to
/// TaskQueue.
class DummyTaskQueue : public TaskQueue {
class DummyTask {
@@ -246,7 +246,7 @@
std::queue<std::unique_ptr<DummyTask>> QueuedTasks;
public:
- /// \brief Create a new DummyTaskQueue instance.
+ /// Create a new DummyTaskQueue instance.
DummyTaskQueue(unsigned NumberOfParallelTasks = 0);
virtual ~DummyTaskQueue();
diff --git a/include/swift/Basic/TreeScopedHashTable.h b/include/swift/Basic/TreeScopedHashTable.h
index fdd3ff9..2b3040e 100644
--- a/include/swift/Basic/TreeScopedHashTable.h
+++ b/include/swift/Basic/TreeScopedHashTable.h
@@ -72,7 +72,7 @@
}
};
-/// \brief A reference-counted scope that actually owns the data in the
+/// A reference-counted scope that actually owns the data in the
/// hashtable.
template <typename K, typename V, typename AllocatorTy = llvm::MallocAllocator>
class TreeScopedHashTableScopeImpl {
@@ -130,7 +130,7 @@
~TreeScopedHashTableScopeImpl();
};
-/// \brief A scope that was detached from the stack to heap.
+/// A scope that was detached from the stack to heap.
template <typename K, typename V, typename AllocatorTy = llvm::MallocAllocator>
class TreeScopedHashTableDetachedScope {
friend class TreeScopedHashTableScope<K, V, AllocatorTy>;
@@ -166,7 +166,7 @@
}
};
-/// \brief A normal hashtable scope. Objects of this class should be created only
+/// A normal hashtable scope. Objects of this class should be created only
/// on stack. A normal scope is faster to create than a detached scope because
/// it does not do heap allocation for the reference counted
/// \c TreeScopedHashTableScopeImpl.
@@ -213,7 +213,7 @@
DetachedImpl->release();
}
- /// \brief Detach this scope to the heap.
+ /// Detach this scope to the heap.
TreeScopedHashTableDetachedScope<K, V, AllocatorTy> detach() {
if (DetachedImpl)
return TreeScopedHashTableDetachedScope<K, V, AllocatorTy>(DetachedImpl);
@@ -266,7 +266,7 @@
}
};
-/// \brief A scoped hashtable that can have multiple active scopes.
+/// A scoped hashtable that can have multiple active scopes.
///
/// There are two kinds of scopes:
///
diff --git a/include/swift/Basic/Varint.h b/include/swift/Basic/Varint.h
index 85586c1..47b9f7f 100644
--- a/include/swift/Basic/Varint.h
+++ b/include/swift/Basic/Varint.h
@@ -11,7 +11,7 @@
//===----------------------------------------------------------------------===//
///
/// \file Varint.h
-/// \brief Defines transformations of integral types to/from variable length
+/// Defines transformations of integral types to/from variable length
/// 7-bit encoding.
//===----------------------------------------------------------------------===//
diff --git a/include/swift/Basic/Version.h b/include/swift/Basic/Version.h
index 944da60..b93ea6c 100644
--- a/include/swift/Basic/Version.h
+++ b/include/swift/Basic/Version.h
@@ -11,7 +11,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief Defines version macros and version-related utility functions
+/// Defines version macros and version-related utility functions
/// for Swift.
///
//===----------------------------------------------------------------------===//
diff --git a/include/swift/ClangImporter/ClangImporter.h b/include/swift/ClangImporter/ClangImporter.h
index aa5ed16..9a939b6 100644
--- a/include/swift/ClangImporter/ClangImporter.h
+++ b/include/swift/ClangImporter/ClangImporter.h
@@ -71,7 +71,7 @@
ObjCProtocol,
};
-/// \brief Class that imports Clang modules into Swift, mapping directly
+/// Class that imports Clang modules into Swift, mapping directly
/// from Clang ASTs over to Swift ASTs.
class ClangImporter final : public ClangModuleLoader {
friend class ClangModuleUnit;
@@ -86,7 +86,7 @@
DependencyTracker *tracker);
public:
- /// \brief Create a new Clang importer that can import a suitable Clang
+ /// Create a new Clang importer that can import a suitable Clang
/// module into the given ASTContext.
///
/// \param ctx The ASTContext into which the module will be imported.
@@ -114,19 +114,19 @@
~ClangImporter();
- /// \brief Create a new clang::DependencyCollector customized to
+ /// Create a new clang::DependencyCollector customized to
/// ClangImporter's specific uses.
static std::shared_ptr<clang::DependencyCollector>
createDependencyCollector(bool TrackSystemDeps);
- /// \brief Check whether the module with a given name can be imported without
+ /// Check whether the module with a given name can be imported without
/// importing it.
///
/// Note that even if this check succeeds, errors may still occur if the
/// module is loaded in full.
virtual bool canImportModule(std::pair<Identifier, SourceLoc> named) override;
- /// \brief Import a module with the given module path.
+ /// Import a module with the given module path.
///
/// Clang modules will be imported using the Objective-C ARC dialect,
/// with all warnings disabled.
@@ -152,7 +152,7 @@
const DeclContext *overlayDC,
const DeclContext *importedDC) override;
- /// \brief Look for declarations associated with the given name.
+ /// Look for declarations associated with the given name.
///
/// \param name The name we're searching for.
void lookupValue(DeclName name, VisibleDeclConsumer &consumer);
@@ -204,7 +204,7 @@
llvm::function_ref<bool(ClangNode)> filter,
llvm::function_ref<void(Decl*)> receiver) const;
- /// \brief Load extensions to the given nominal type.
+ /// Load extensions to the given nominal type.
///
/// \param nominal The nominal type whose extensions should be loaded.
///
diff --git a/include/swift/ClangImporter/ClangModule.h b/include/swift/ClangImporter/ClangModule.h
index 003ec24..b77c232 100644
--- a/include/swift/ClangImporter/ClangModule.h
+++ b/include/swift/ClangImporter/ClangModule.h
@@ -29,7 +29,7 @@
class ASTContext;
class ModuleLoader;
-/// \brief Represents a Clang module that has been imported into Swift.
+/// Represents a Clang module that has been imported into Swift.
class ClangModuleUnit final : public LoadedFile {
ClangImporter::Implementation &owner;
const clang::Module *clangModule;
@@ -45,7 +45,7 @@
ClangModuleUnit(ModuleDecl &M, ClangImporter::Implementation &owner,
const clang::Module *clangModule);
- /// \brief Retrieve the underlying Clang module.
+ /// Retrieve the underlying Clang module.
///
/// This will be null if the module unit represents the imported headers.
const clang::Module *getClangModule() const { return clangModule; }
diff --git a/include/swift/DWARFImporter/DWARFImporter.h b/include/swift/DWARFImporter/DWARFImporter.h
new file mode 100644
index 0000000..2329e7d
--- /dev/null
+++ b/include/swift/DWARFImporter/DWARFImporter.h
@@ -0,0 +1,101 @@
+//===--- DWARFImporter.h - Import Clang Modules -----------------*- C++ -*-===//
+//
+// This source file is part of the Swift.org open source project
+//
+// Copyright (c) 2014 - 2018 Apple Inc. and the Swift project authors
+// Licensed under Apache License v2.0 with Runtime Library Exception
+//
+// See https://swift.org/LICENSE.txt for license information
+// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
+//
+//===----------------------------------------------------------------------===//
+//
+// \file This file implements support for loading Clang modules that were
+// reconstructed from DWARF into Swift.
+//
+//===----------------------------------------------------------------------===//
+#ifndef SWIFT_DWARF_IMPORTER_H
+#define SWIFT_DWARF_IMPORTER_H
+
+#include "swift/AST/ClangModuleLoader.h"
+
+namespace llvm {
+}
+
+namespace clang {
+}
+
+namespace swift {
+
+/// Class that imports Clang modules into Swift, mapping directly
+/// from Clang ASTs over to Swift ASTs.
+class DWARFImporter final : public ClangModuleLoader {
+ friend class ClangModuleUnit;
+
+public:
+ class Implementation;
+
+private:
+ Implementation &Impl;
+
+ DWARFImporter(ASTContext &ctx, const ClangImporterOptions &clangImporterOpts,
+ DependencyTracker *tracker);
+
+public:
+ /// Create a new DWARF importer that can import a Clang Modules from DWARF
+ /// into the given ASTContext.
+ ///
+ /// \param ctx The ASTContext into which the module will be imported.
+ /// The ASTContext's SearchPathOptions will be used for the DWARF importer.
+ ///
+ /// \param importerOpts The options to use for the DWARF importer.
+ ///
+ /// \param tracker The object tracking files this compilation depends on.
+ ///
+ /// \returns a new DWARF module importer, or null (with a diagnostic) if
+ /// an error occurred.
+ static std::unique_ptr<DWARFImporter>
+ create(ASTContext &ctx,
+ const ClangImporterOptions &importerOpts,
+ DependencyTracker *tracker = nullptr);
+
+ DWARFImporter(const DWARFImporter &) = delete;
+ DWARFImporter(DWARFImporter &&) = delete;
+ DWARFImporter &operator=(const DWARFImporter &) = delete;
+ DWARFImporter &operator=(DWARFImporter &&) = delete;
+
+ ~DWARFImporter();
+
+ /// Check whether the module with a given name can be imported without
+ /// importing it.
+ ///
+ /// Note that even if this check succeeds, errors may still occur if the
+ /// module is loaded in full.
+ bool canImportModule(std::pair<Identifier, SourceLoc> named) override;
+ bool addSearchPath(StringRef newSearchPath, bool isFramework,
+ bool isSystem) override;
+ ModuleDecl *
+ loadModule(SourceLoc importLoc,
+ ArrayRef<std::pair<Identifier, SourceLoc>> path) override;
+ bool
+ isInOverlayModuleForImportedModule(const DeclContext *overlayDC,
+ const DeclContext *importedDC) override;
+ void loadExtensions(NominalTypeDecl *nominal,
+ unsigned previousGeneration) override;
+ void loadObjCMethods(
+ ClassDecl *classDecl, ObjCSelector selector, bool isInstanceMethod,
+ unsigned previousGeneration,
+ llvm::TinyPtrVector<AbstractFunctionDecl *> &methods) override;
+ ModuleDecl *getImportedHeaderModule() const override;
+ void verifyAllModules() override;
+ clang::ASTContext &getClangASTContext() const override;
+ clang::Preprocessor &getClangPreprocessor() const override;
+ clang::Sema &getClangSema() const override;
+ const clang::CompilerInstance &getClangInstance() const override;
+
+ void printStatistics() const override;
+};
+
+} // end namespace swift
+
+#endif
diff --git a/include/swift/Demangling/Demangle.h b/include/swift/Demangling/Demangle.h
index 7621fae..0f84fb2 100644
--- a/include/swift/Demangling/Demangle.h
+++ b/include/swift/Demangling/Demangle.h
@@ -465,12 +465,12 @@
Infix,
};
-/// \brief Mangle an identifier using Swift's mangling rules.
+/// Mangle an identifier using Swift's mangling rules.
void mangleIdentifier(const char *data, size_t length,
OperatorKind operatorKind, std::string &out,
bool usePunycode = true);
-/// \brief Remangle a demangled parse tree.
+/// Remangle a demangled parse tree.
///
/// This should always round-trip perfectly with demangleSymbolAsNode.
std::string mangleNode(const NodePointer &root);
@@ -479,7 +479,7 @@
llvm::function_ref<Demangle::NodePointer (SymbolicReferenceKind,
const void *)>;
-/// \brief Remangle a demangled parse tree, using a callback to resolve
+/// Remangle a demangled parse tree, using a callback to resolve
/// symbolic references.
///
/// This should always round-trip perfectly with demangleSymbolAsNode.
@@ -491,7 +491,7 @@
/// we switch to the new mangling for those names as well.
std::string mangleNodeOld(const NodePointer &root);
-/// \brief Transform the node structure to a string.
+/// Transform the node structure to a string.
///
/// Typical usage:
/// \code
diff --git a/include/swift/Driver/Compilation.h b/include/swift/Driver/Compilation.h
index 3e3a813..ecd4b9d 100644
--- a/include/swift/Driver/Compilation.h
+++ b/include/swift/Driver/Compilation.h
@@ -389,7 +389,7 @@
}
private:
- /// \brief Perform all jobs.
+ /// Perform all jobs.
///
/// \param[out] abnormalExit Set to true if any job exits abnormally (i.e.
/// crashes).
@@ -399,7 +399,7 @@
/// crashes during execution, a negative value will be returned.
int performJobsImpl(bool &abnormalExit, std::unique_ptr<sys::TaskQueue> &&TQ);
- /// \brief Performs a single Job by executing in place, if possible.
+ /// Performs a single Job by executing in place, if possible.
///
/// \param Cmd the Job which should be performed.
///
diff --git a/include/swift/Driver/Driver.h b/include/swift/Driver/Driver.h
index 0547850..39c7cab 100644
--- a/include/swift/Driver/Driver.h
+++ b/include/swift/Driver/Driver.h
@@ -55,7 +55,7 @@
class JobAction;
class ToolChain;
-/// \brief A class encapsulating information about the outputs the driver
+/// A class encapsulating information about the outputs the driver
/// is expected to generate.
class OutputInfo {
public:
diff --git a/include/swift/Driver/ParseableOutput.h b/include/swift/Driver/ParseableOutput.h
index 34467f0..fe36d74 100644
--- a/include/swift/Driver/ParseableOutput.h
+++ b/include/swift/Driver/ParseableOutput.h
@@ -11,7 +11,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief Helpers for emitting the driver's parseable output.
+/// Helpers for emitting the driver's parseable output.
///
//===----------------------------------------------------------------------===//
@@ -28,22 +28,22 @@
namespace parseable_output {
-/// \brief Emits a "began" message to the given stream.
+/// Emits a "began" message to the given stream.
void emitBeganMessage(raw_ostream &os, const Job &Cmd, int64_t Pid,
sys::TaskProcessInformation ProcInfo);
-/// \brief Emits a "finished" message to the given stream.
+/// Emits a "finished" message to the given stream.
void emitFinishedMessage(raw_ostream &os, const Job &Cmd, int64_t Pid,
int ExitStatus, StringRef Output,
sys::TaskProcessInformation ProcInfo);
-/// \brief Emits a "signalled" message to the given stream.
+/// Emits a "signalled" message to the given stream.
void emitSignalledMessage(raw_ostream &os, const Job &Cmd, int64_t Pid,
StringRef ErrorMsg, StringRef Output,
Optional<int> Signal,
sys::TaskProcessInformation ProcInfo);
-/// \brief Emits a "skipped" message to the given stream.
+/// Emits a "skipped" message to the given stream.
void emitSkippedMessage(raw_ostream &os, const Job &Cmd);
} // end namespace parseable_output
diff --git a/include/swift/Frontend/Frontend.h b/include/swift/Frontend/Frontend.h
index 8fd4d4d..ccabc6f 100644
--- a/include/swift/Frontend/Frontend.h
+++ b/include/swift/Frontend/Frontend.h
@@ -80,7 +80,7 @@
llvm::MemoryBuffer *CodeCompletionBuffer = nullptr;
- /// \brief Code completion offset in bytes from the beginning of the main
+ /// Code completion offset in bytes from the beginning of the main
/// source file. Valid only if \c isCodeCompletion() == true.
unsigned CodeCompletionOffset = ~0U;
@@ -512,7 +512,7 @@
}
}
- /// \brief Returns true if there was an error during setup.
+ /// Returns true if there was an error during setup.
bool setup(const CompilerInvocation &Invocation);
private:
diff --git a/include/swift/Frontend/FrontendOptions.h b/include/swift/Frontend/FrontendOptions.h
index da019ad..3c9a0d4 100644
--- a/include/swift/Frontend/FrontendOptions.h
+++ b/include/swift/Frontend/FrontendOptions.h
@@ -59,7 +59,7 @@
/// Arguments which should be passed in immediate mode.
std::vector<std::string> ImmediateArgv;
- /// \brief A list of arguments to forward to LLVM's option processing; this
+ /// A list of arguments to forward to LLVM's option processing; this
/// should only be used for debugging and experimental features.
std::vector<std::string> LLVMArgs;
diff --git a/include/swift/Frontend/PrintingDiagnosticConsumer.h b/include/swift/Frontend/PrintingDiagnosticConsumer.h
index 8415ede..d13ea2f 100644
--- a/include/swift/Frontend/PrintingDiagnosticConsumer.h
+++ b/include/swift/Frontend/PrintingDiagnosticConsumer.h
@@ -25,7 +25,7 @@
namespace swift {
-/// \brief Diagnostic consumer that displays diagnostics to standard error.
+/// Diagnostic consumer that displays diagnostics to standard error.
class PrintingDiagnosticConsumer : public DiagnosticConsumer {
llvm::raw_ostream &Stream;
bool ForceColors = false;
diff --git a/include/swift/IDE/CodeCompletion.h b/include/swift/IDE/CodeCompletion.h
index 293e2d4..b9b8e7c 100644
--- a/include/swift/IDE/CodeCompletion.h
+++ b/include/swift/IDE/CodeCompletion.h
@@ -37,7 +37,7 @@
class CodeCompletionResultBuilder;
struct RequestedCachedModule;
-/// \brief A routine to remove code completion tokens from code completion
+/// A routine to remove code completion tokens from code completion
/// tests.
///
/// \code
@@ -211,7 +211,7 @@
unsigned Kind : 8;
unsigned NestingLevel : 8;
- /// \brief If true, then this chunk is an annotation that is included only
+ /// If true, then this chunk is an annotation that is included only
/// for exposition and may not be inserted in the editor buffer.
unsigned IsAnnotation : 1;
@@ -278,7 +278,7 @@
} // end namespace detail
-/// \brief A structured representation of a code completion string.
+/// A structured representation of a code completion string.
class alignas(detail::CodeCompletionStringChunk) CodeCompletionString final :
private llvm::TrailingObjects<CodeCompletionString,
detail::CodeCompletionStringChunk> {
@@ -317,7 +317,7 @@
void dump() const;
};
-/// \brief Describes the origin of the code completion result.
+/// Describes the origin of the code completion result.
///
/// This enum is ordered from the contexts that are "nearest" to the code
/// completion point to "outside" contexts.
@@ -325,7 +325,7 @@
/// Used in cases when the concept of semantic context is not applicable.
None,
- /// \brief This is a highly-likely expression-context-specific completion
+ /// This is a highly-likely expression-context-specific completion
/// result. This description is intentionally vague: this is a catch-all
/// category for all heuristics for highly-likely results.
///
@@ -512,7 +512,7 @@
PrecedenceGroup,
};
-/// \brief A single code completion result.
+/// A single code completion result.
class CodeCompletionResult {
friend class CodeCompletionResultBuilder;
@@ -797,7 +797,7 @@
class CodeCompletionContext {
friend class CodeCompletionResultBuilder;
- /// \brief A set of current completion results, not yet delivered to the
+ /// A set of current completion results, not yet delivered to the
/// consumer.
CodeCompletionResultSink CurrentResults;
@@ -813,13 +813,13 @@
CodeCompletionContext(CodeCompletionCache &Cache)
: Cache(Cache) {}
- /// \brief Allocate a string owned by the code completion context.
+ /// Allocate a string owned by the code completion context.
StringRef copyString(StringRef Str);
- /// \brief Return current code completion results.
+ /// Return current code completion results.
MutableArrayRef<CodeCompletionResult *> takeResults();
- /// \brief Sort code completion results in an implementation-defined order
+ /// Sort code completion results in an implementation-defined order
/// in place.
static void sortCompletionResults(
MutableArrayRef<CodeCompletionResult *> Results);
@@ -829,7 +829,7 @@
}
};
-/// \brief An abstract base class for consumers of code completion results.
+/// An abstract base class for consumers of code completion results.
/// \see \c SimpleCachingCodeCompletionConsumer.
class CodeCompletionConsumer {
public:
@@ -855,7 +855,7 @@
MutableArrayRef<CodeCompletionResult *> Results) = 0;
};
-/// \brief A code completion result consumer that prints the results to a
+/// A code completion result consumer that prints the results to a
/// \c raw_ostream.
class PrintingCodeCompletionConsumer
: public SimpleCachingCodeCompletionConsumer {
@@ -874,7 +874,7 @@
void handleResults(MutableArrayRef<CodeCompletionResult *> Results) override;
};
-/// \brief Create a factory for code completion callbacks.
+/// Create a factory for code completion callbacks.
CodeCompletionCallbacksFactory *
makeCodeCompletionCallbacksFactory(CodeCompletionContext &CompletionContext,
CodeCompletionConsumer &Consumer);
diff --git a/include/swift/IDE/CodeCompletionCache.h b/include/swift/IDE/CodeCompletionCache.h
index d274d27..38237a9 100644
--- a/include/swift/IDE/CodeCompletionCache.h
+++ b/include/swift/IDE/CodeCompletionCache.h
@@ -25,7 +25,7 @@
struct CodeCompletionCacheImpl;
class OnDiskCodeCompletionCache;
-/// \brief In-memory per-module code completion result cache.
+/// In-memory per-module code completion result cache.
///
/// These results persist between multiple code completion requests and can be
/// used with different ASTContexts.
@@ -34,7 +34,7 @@
OnDiskCodeCompletionCache *nextCache;
public:
- /// \brief Cache key.
+ /// Cache key.
struct Key {
std::string ModuleFilename;
std::string ModuleName;
@@ -72,7 +72,7 @@
void setImpl(const Key &K, ValueRefCntPtr V, bool setChain);
};
-/// \brief On-disk per-module code completion result cache.
+/// On-disk per-module code completion result cache.
///
/// These results persist between multiple code completion requests and can be
/// used with different ASTContexts.
diff --git a/include/swift/IDE/Formatting.h b/include/swift/IDE/Formatting.h
index 03feb00..f30789a 100644
--- a/include/swift/IDE/Formatting.h
+++ b/include/swift/IDE/Formatting.h
@@ -24,18 +24,18 @@
unsigned TabWidth = 4;
};
-/// \brief Returns the offset (in bytes) to the start of \p LineIndex
+/// Returns the offset (in bytes) to the start of \p LineIndex
size_t getOffsetOfLine(unsigned LineIndex, StringRef Text);
-/// \brief Returns the offset to the first Character. If \p Trim is true, the
+/// Returns the offset to the first Character. If \p Trim is true, the
/// first character is Non-WhiteSpace.
size_t getOffsetOfLine(unsigned LineIndex, StringRef Text, bool Trim);
-/// \brief Returns the Text on \p LineIndex, excluding Leading WS if \p Trim is
+/// Returns the Text on \p LineIndex, excluding Leading WS if \p Trim is
/// true.
StringRef getTextForLine(unsigned LineIndex, StringRef Text, bool Trim);
-/// \brief Returns the number of spaces at the beginning of \p LineIndex
+/// Returns the number of spaces at the beginning of \p LineIndex
/// or if indenting is done by Tabs, the number of Tabs * TabWidthp
size_t getExpandedIndentForLine(unsigned LineIndex, CodeFormatOptions Options,
StringRef Text);
diff --git a/include/swift/IDE/SyntaxModel.h b/include/swift/IDE/SyntaxModel.h
index a80b181..c304900 100644
--- a/include/swift/IDE/SyntaxModel.h
+++ b/include/swift/IDE/SyntaxModel.h
@@ -169,21 +169,21 @@
public:
virtual ~SyntaxModelWalker() {}
- /// \brief Called when first visiting a syntax node, before walking into its
+ /// Called when first visiting a syntax node, before walking into its
/// children. If it returns false, the subtree is skipped.
///
virtual bool walkToNodePre(SyntaxNode Node) { return true; }
- /// \brief Called after visiting the children of a syntax node. If it returns
+ /// Called after visiting the children of a syntax node. If it returns
/// false, the remaining traversal is terminated and returns failure.
virtual bool walkToNodePost(SyntaxNode Node) { return true; }
- /// \brief Called when first visiting a sub-structure node, before walking
+ /// Called when first visiting a sub-structure node, before walking
/// into its children. If it returns false, the subtree is skipped.
///
virtual bool walkToSubStructurePre(SyntaxStructureNode Node) { return true; }
- /// \brief Called after visiting the children of a sub-structure node. If it
+ /// Called after visiting the children of a sub-structure node. If it
/// returns false, the remaining traversal is terminated and returns failure.
///
virtual bool walkToSubStructurePost(SyntaxStructureNode Node) { return true; }
diff --git a/include/swift/Index/Utils.h b/include/swift/Index/Utils.h
index 0069489..00a590f 100644
--- a/include/swift/Index/Utils.h
+++ b/include/swift/Index/Utils.h
@@ -20,7 +20,7 @@
namespace swift {
class ValueDecl;
-/// \brief Collect all the protocol requirements that a given declaration can
+/// Collect all the protocol requirements that a given declaration can
/// provide default implementations for. VD is a declaration in extension
/// declaration. Scratch is the buffer to collect those protocol
/// requirements.
@@ -30,7 +30,7 @@
canDeclProvideDefaultImplementationFor(ValueDecl* VD,
llvm::SmallVectorImpl<ValueDecl*> &Scratch);
-/// \brief Get decls that the given decl overrides, protocol requirements that
+/// Get decls that the given decl overrides, protocol requirements that
/// it serves as a default implementation of, and optionally protocol
/// requirements it satisfies in a conforming class
std::vector<ValueDecl*>
diff --git a/include/swift/Option/SanitizerOptions.h b/include/swift/Option/SanitizerOptions.h
index 8454584..b8991cc 100644
--- a/include/swift/Option/SanitizerOptions.h
+++ b/include/swift/Option/SanitizerOptions.h
@@ -25,7 +25,7 @@
namespace swift {
class DiagnosticEngine;
-/// \brief Parses a -sanitize= argument's values.
+/// Parses a -sanitize= argument's values.
///
/// \param Diag If non null, the argument is used to diagnose invalid values.
/// \param sanitizerRuntimeLibExists Function which checks for existence of a
@@ -36,7 +36,7 @@
const llvm::Triple &Triple, DiagnosticEngine &Diag,
llvm::function_ref<bool(llvm::StringRef, bool)> sanitizerRuntimeLibExists);
-/// \brief Parses a -sanitize-coverage= argument's value.
+/// Parses a -sanitize-coverage= argument's value.
llvm::SanitizerCoverageOptions parseSanitizerCoverageArgValue(
const llvm::opt::Arg *A,
const llvm::Triple &Triple,
diff --git a/include/swift/Parse/CodeCompletionCallbacks.h b/include/swift/Parse/CodeCompletionCallbacks.h
index 9e400f5..33a021c 100644
--- a/include/swift/Parse/CodeCompletionCallbacks.h
+++ b/include/swift/Parse/CodeCompletionCallbacks.h
@@ -29,7 +29,7 @@
SetterSelector
};
-/// \brief Parser's interface to code completion.
+/// Parser's interface to code completion.
class CodeCompletionCallbacks {
protected:
Parser &P;
@@ -115,39 +115,39 @@
}
};
- /// \brief Complete the whole expression. This is a fallback that should
+ /// Complete the whole expression. This is a fallback that should
/// produce results when more specific completion methods failed.
virtual void completeExpr() = 0;
- /// \brief Complete expr-dot after we have consumed the dot.
+ /// Complete expr-dot after we have consumed the dot.
virtual void completeDotExpr(Expr *E, SourceLoc DotLoc) = 0;
- /// \brief Complete the beginning of a statement or expression.
+ /// Complete the beginning of a statement or expression.
virtual void completeStmtOrExpr() = 0;
- /// \brief Complete the beginning of expr-postfix -- no tokens provided
+ /// Complete the beginning of expr-postfix -- no tokens provided
/// by user.
virtual void completePostfixExprBeginning(CodeCompletionExpr *E) = 0;
- /// \brief Complete the beginning of expr-postfix in a for-each loop sequqence
+ /// Complete the beginning of expr-postfix in a for-each loop sequqence
/// -- no tokens provided by user.
virtual void completeForEachSequenceBeginning(CodeCompletionExpr *E) = 0;
- /// \brief Complete a given expr-postfix.
+ /// Complete a given expr-postfix.
virtual void completePostfixExpr(Expr *E, bool hasSpace) = 0;
- /// \brief Complete a given expr-postfix, given that there is a following
+ /// Complete a given expr-postfix, given that there is a following
/// left parenthesis.
virtual void completePostfixExprParen(Expr *E, Expr *CodeCompletionE) = 0;
- /// \brief Complete expr-super after we have consumed the 'super' keyword.
+ /// Complete expr-super after we have consumed the 'super' keyword.
virtual void completeExprSuper(SuperRefExpr *SRE) = 0;
- /// \brief Complete expr-super after we have consumed the 'super' keyword and
+ /// Complete expr-super after we have consumed the 'super' keyword and
/// a dot.
virtual void completeExprSuperDot(SuperRefExpr *SRE) = 0;
- /// \brief Complete the argument to an Objective-C #keyPath
+ /// Complete the argument to an Objective-C #keyPath
/// expression.
///
/// \param KPE A partial #keyPath expression that can be used to
@@ -155,20 +155,20 @@
/// #keyPath argument have been parsed yet.
virtual void completeExprKeyPath(KeyPathExpr *KPE, SourceLoc DotLoc) = 0;
- /// \brief Complete the beginning of type-simple -- no tokens provided
+ /// Complete the beginning of type-simple -- no tokens provided
/// by user.
virtual void completeTypeSimpleBeginning() = 0;
- /// \brief Complete a given type-identifier after we have consumed the dot.
+ /// Complete a given type-identifier after we have consumed the dot.
virtual void completeTypeIdentifierWithDot(IdentTypeRepr *ITR) = 0;
- /// \brief Complete a given type-identifier when there is no trailing dot.
+ /// Complete a given type-identifier when there is no trailing dot.
virtual void completeTypeIdentifierWithoutDot(IdentTypeRepr *ITR) = 0;
- /// \brief Complete at the beginning of a case stmt pattern.
+ /// Complete at the beginning of a case stmt pattern.
virtual void completeCaseStmtBeginning() = 0;
- /// \brief Complete a case stmt pattern that starts with a dot.
+ /// Complete a case stmt pattern that starts with a dot.
virtual void completeCaseStmtDotPrefix() = 0;
/// Complete at the beginning of member of a nominal decl member -- no tokens
@@ -226,17 +226,17 @@
virtual void completeGenericParams(TypeLoc TL) = 0;
- /// \brief Signals that the AST for the all the delayed-parsed code was
+ /// Signals that the AST for the all the delayed-parsed code was
/// constructed. No \c complete*() callbacks will be done after this.
virtual void doneParsing() = 0;
};
-/// \brief A factory to create instances of \c CodeCompletionCallbacks.
+/// A factory to create instances of \c CodeCompletionCallbacks.
class CodeCompletionCallbacksFactory {
public:
virtual ~CodeCompletionCallbacksFactory() {}
- /// \brief Create an instance of \c CodeCompletionCallbacks. The result
+ /// Create an instance of \c CodeCompletionCallbacks. The result
/// should be deallocated with 'delete'.
virtual CodeCompletionCallbacks *createCodeCompletionCallbacks(Parser &P) = 0;
};
diff --git a/include/swift/Parse/DelayedParsingCallbacks.h b/include/swift/Parse/DelayedParsingCallbacks.h
index 87bd8d0..b8dfc04 100644
--- a/include/swift/Parse/DelayedParsingCallbacks.h
+++ b/include/swift/Parse/DelayedParsingCallbacks.h
@@ -21,7 +21,7 @@
class DeclAttributes;
class AbstractFunctionDecl;
-/// \brief Callbacks for Parser's delayed parsing.
+/// Callbacks for Parser's delayed parsing.
class DelayedParsingCallbacks {
virtual void anchor();
@@ -44,7 +44,7 @@
}
};
-/// \brief Implementation of callbacks that guide the parser in delayed
+/// Implementation of callbacks that guide the parser in delayed
/// parsing for code completion.
class CodeCompleteDelayedCallbacks : public DelayedParsingCallbacks {
SourceLoc CodeCompleteLoc;
diff --git a/include/swift/Parse/Lexer.h b/include/swift/Parse/Lexer.h
index 35f172e..5cf9b20 100644
--- a/include/swift/Parse/Lexer.h
+++ b/include/swift/Parse/Lexer.h
@@ -99,7 +99,7 @@
Token NextToken;
- /// \brief This is true if we're lexing a .sil file instead of a .swift
+ /// This is true if we're lexing a .sil file instead of a .swift
/// file. This enables the 'sil' keyword.
const bool InSILMode;
@@ -143,7 +143,7 @@
void initialize(unsigned Offset, unsigned EndOffset);
public:
- /// \brief Create a normal lexer that scans the whole source buffer.
+ /// Create a normal lexer that scans the whole source buffer.
///
/// \param Options - the language options under which to lex. By
/// design, language options only affect whether a token is valid
@@ -163,14 +163,14 @@
CommentRetentionMode RetainComments = CommentRetentionMode::None,
TriviaRetentionMode TriviaRetention = TriviaRetentionMode::WithoutTrivia);
- /// \brief Create a lexer that scans a subrange of the source buffer.
+ /// Create a lexer that scans a subrange of the source buffer.
Lexer(const LangOptions &Options, const SourceManager &SourceMgr,
unsigned BufferID, DiagnosticEngine *Diags, bool InSILMode,
HashbangMode HashbangAllowed, CommentRetentionMode RetainComments,
TriviaRetentionMode TriviaRetention, unsigned Offset,
unsigned EndOffset);
- /// \brief Create a sub-lexer that lexes from the same buffer, but scans
+ /// Create a sub-lexer that lexes from the same buffer, but scans
/// a subrange of the buffer.
///
/// \param Parent the parent lexer that scans the whole buffer
@@ -178,7 +178,7 @@
/// \param EndState end of the subrange
Lexer(Lexer &Parent, State BeginState, State EndState);
- /// \brief Returns true if this lexer will produce a code completion token.
+ /// Returns true if this lexer will produce a code completion token.
bool isCodeCompletion() const {
return CodeCompletionPtr != nullptr;
}
@@ -220,12 +220,12 @@
/// actually lexing it.
const Token &peekNextToken() const { return NextToken; }
- /// \brief Returns the lexer state for the beginning of the given token
+ /// Returns the lexer state for the beginning of the given token
/// location. After restoring the state, lexer will return this token and
/// continue from there.
State getStateForBeginningOfTokenLoc(SourceLoc Loc) const;
- /// \brief Returns the lexer state for the beginning of the given token.
+ /// Returns the lexer state for the beginning of the given token.
/// After restoring the state, lexer will return this token and continue from
/// there.
State getStateForBeginningOfToken(const Token &Tok,
@@ -251,7 +251,7 @@
return SourceMgr.findBufferContainingLoc(State.Loc) == getBufferID();
}
- /// \brief Restore the lexer state to a given one, that can be located either
+ /// Restore the lexer state to a given one, that can be located either
/// before or after the current position.
void restoreState(State S, bool enableDiagnostics = false) {
assert(S.isValid());
@@ -268,7 +268,7 @@
LeadingTrivia = std::move(*LTrivia);
}
- /// \brief Restore the lexer state to a given state that is located before
+ /// Restore the lexer state to a given state that is located before
/// current position.
void backtrackToState(State S) {
assert(getBufferPtrForSourceLoc(S.Loc) <= CurPtr &&
@@ -276,7 +276,7 @@
restoreState(S);
}
- /// \brief Retrieve the Token referred to by \c Loc.
+ /// Retrieve the Token referred to by \c Loc.
///
/// \param SM The source manager in which the given source location
/// resides.
@@ -285,7 +285,7 @@
static Token getTokenAtLocation(const SourceManager &SM, SourceLoc Loc);
- /// \brief Retrieve the source location that points just past the
+ /// Retrieve the source location that points just past the
/// end of the token referred to by \c Loc.
///
/// \param SM The source manager in which the given source location
@@ -294,7 +294,7 @@
/// \param Loc The source location of the beginning of a token.
static SourceLoc getLocForEndOfToken(const SourceManager &SM, SourceLoc Loc);
- /// \brief Convert a SourceRange to the equivalent CharSourceRange
+ /// Convert a SourceRange to the equivalent CharSourceRange
///
/// \param SM The source manager in which the given source range
/// resides.
@@ -342,16 +342,16 @@
static StringRef getIndentationForLine(SourceManager &SM, SourceLoc Loc,
StringRef *ExtraIndentation = nullptr);
- /// \brief Determines if the given string is a valid non-operator
+ /// Determines if the given string is a valid non-operator
/// identifier, without escaping characters.
static bool isIdentifier(StringRef identifier);
- /// \brief Determine the token kind of the string, given that it is a valid
+ /// Determine the token kind of the string, given that it is a valid
/// non-operator identifier. Return tok::identifier if the string is not a
/// reserved word.
static tok kindOfIdentifier(StringRef Str, bool InSILMode);
- /// \brief Determines if the given string is a valid operator identifier,
+ /// Determines if the given string is a valid operator identifier,
/// without escaping characters.
static bool isOperator(StringRef string);
@@ -409,7 +409,7 @@
unsigned IndentToStrip,
unsigned CustomDelimiterLen);
- /// \brief Compute the bytes that the actual string literal should codegen to.
+ /// Compute the bytes that the actual string literal should codegen to.
/// If a copy needs to be made, it will be allocated out of the provided
/// \p Buffer.
StringRef getEncodedStringSegment(StringSegment Segment,
@@ -420,7 +420,7 @@
Segment.IndentToStrip, Segment.CustomDelimiterLen);
}
- /// \brief Given a string encoded with escapes like a string literal, compute
+ /// Given a string encoded with escapes like a string literal, compute
/// the byte content.
///
/// If a copy needs to be made, it will be allocated out of the provided
@@ -445,7 +445,7 @@
return Result;
}
- /// \brief Given a string literal token, separate it into string/expr segments
+ /// Given a string literal token, separate it into string/expr segments
/// of a potentially interpolated string.
static void getStringLiteralSegments(
const Token &Str,
diff --git a/include/swift/Parse/LexerState.h b/include/swift/Parse/LexerState.h
index 5151d2b..5ce65d3 100644
--- a/include/swift/Parse/LexerState.h
+++ b/include/swift/Parse/LexerState.h
@@ -24,7 +24,7 @@
namespace swift {
class Lexer;
-/// \brief Lexer state can be saved/restored to/from objects of this class.
+/// Lexer state can be saved/restored to/from objects of this class.
class LexerState {
public:
LexerState() {}
diff --git a/include/swift/Parse/Parser.h b/include/swift/Parse/Parser.h
index 414ee24..7a25f52 100644
--- a/include/swift/Parse/Parser.h
+++ b/include/swift/Parse/Parser.h
@@ -195,21 +195,21 @@
(Tok.is(tok::eof) && Tok.getText() != ")");
}
- /// \brief This is the current token being considered by the parser.
+ /// This is the current token being considered by the parser.
Token Tok;
- /// \brief leading trivias for \c Tok.
+ /// leading trivias for \c Tok.
/// Always empty if !SF.shouldBuildSyntaxTree().
syntax::Trivia LeadingTrivia;
- /// \brief trailing trivias for \c Tok.
+ /// trailing trivias for \c Tok.
/// Always empty if !SF.shouldBuildSyntaxTree().
syntax::Trivia TrailingTrivia;
- /// \brief The receiver to collect all consumed tokens.
+ /// The receiver to collect all consumed tokens.
ConsumeTokenReceiver *TokReceiver;
- /// \brief The location of the previous token.
+ /// The location of the previous token.
SourceLoc PreviousLoc;
/// Stop parsing immediately.
@@ -443,7 +443,7 @@
//===--------------------------------------------------------------------===//
// Utilities
- /// \brief Return the next token that will be installed by \c consumeToken.
+ /// Return the next token that will be installed by \c consumeToken.
const Token &peekToken();
/// Consume a token that we created on the fly to correct the original token
@@ -473,11 +473,11 @@
return consumeToken();
}
- /// \brief Retrieve the location just past the end of the previous
+ /// Retrieve the location just past the end of the previous
/// source location.
SourceLoc getEndOfPreviousLoc();
- /// \brief If the current token is the specified kind, consume it and
+ /// If the current token is the specified kind, consume it and
/// return true. Otherwise, return false without consuming it.
bool consumeIf(tok K) {
if (Tok.isNot(K)) return false;
@@ -485,7 +485,7 @@
return true;
}
- /// \brief If the current token is the specified kind, consume it and
+ /// If the current token is the specified kind, consume it and
/// return true. Otherwise, return false without consuming it.
bool consumeIf(tok K, SourceLoc &consumedLoc) {
if (Tok.isNot(K)) return false;
@@ -504,13 +504,13 @@
cast<AccessorDecl>(CurDeclContext)->isCoroutine());
}
- /// \brief Read tokens until we get to one of the specified tokens, then
+ /// Read tokens until we get to one of the specified tokens, then
/// return without consuming it. Because we cannot guarantee that the token
/// will ever occur, this skips to some likely good stopping point.
void skipUntil(tok T1, tok T2 = tok::NUM_TOKENS);
void skipUntilAnyOperator();
- /// \brief Skip until a token that starts with '>', and consume it if found.
+ /// Skip until a token that starts with '>', and consume it if found.
/// Applies heuristics that are suitable when trying to find the end of a list
/// of generic parameters, generic arguments, or list of types in a protocol
/// composition.
@@ -531,10 +531,10 @@
/// but not when used as comparison operators.
void skipSingle();
- /// \brief Skip until the next '#else', '#endif' or until eof.
+ /// Skip until the next '#else', '#endif' or until eof.
void skipUntilConditionalBlockClose();
- /// \brief Skip until either finding \c T1 or reaching the end of the line.
+ /// Skip until either finding \c T1 or reaching the end of the line.
///
/// This uses \c skipSingle and so matches parens etc. After calling, one or
/// more of the following will be true: Tok.is(T1), Tok.isStartOfLine(),
@@ -601,23 +601,23 @@
return (Tok.isAnyOperator() || Tok.isPunctuation()) &&
Tok.getText()[0] == symbol;
}
- /// \brief Check whether the current token starts with '<'.
+ /// Check whether the current token starts with '<'.
bool startsWithLess(Token Tok) { return startsWithSymbol(Tok, '<'); }
- /// \brief Check whether the current token starts with '>'.
+ /// Check whether the current token starts with '>'.
bool startsWithGreater(Token Tok) { return startsWithSymbol(Tok, '>'); }
- /// \brief Consume the starting '<' of the current token, which may either
+ /// Consume the starting '<' of the current token, which may either
/// be a complete '<' token or some kind of operator token starting with '<',
/// e.g., '<>'.
SourceLoc consumeStartingLess();
- /// \brief Consume the starting '>' of the current token, which may either
+ /// Consume the starting '>' of the current token, which may either
/// be a complete '>' token or some kind of operator token starting with '>',
/// e.g., '>>'.
SourceLoc consumeStartingGreater();
- /// \brief Consume the starting character of the current token, and split the
+ /// Consume the starting character of the current token, and split the
/// remainder of the token into a new token (or tokens).
SourceLoc
consumeStartingCharacterOfCurrentToken(tok Kind = tok::oper_binary_unspaced,
@@ -625,7 +625,7 @@
swift::ScopeInfo &getScopeInfo() { return State->getScopeInfo(); }
- /// \brief Add the given Decl to the current scope.
+ /// Add the given Decl to the current scope.
void addToScope(ValueDecl *D) {
getScopeInfo().addToScope(D, *this);
}
@@ -640,7 +640,7 @@
//===--------------------------------------------------------------------===//
// Primitive Parsing
- /// \brief Consume an identifier (but not an operator) if present and return
+ /// Consume an identifier (but not an operator) if present and return
/// its name in \p Result. Otherwise, emit an error.
///
/// \returns false on success, true on error.
@@ -671,7 +671,7 @@
return parseSpecificIdentifier(expected, L, Diagnostic(ID, Args...));
}
- /// \brief Consume an identifier or operator if present and return its name
+ /// Consume an identifier or operator if present and return its name
/// in \p Result. Otherwise, emit an error and return true.
bool parseAnyIdentifier(Identifier &Result, SourceLoc &Loc,
const Diagnostic &D);
@@ -689,7 +689,7 @@
return parseAnyIdentifier(Result, L, Diagnostic(ID, Args...));
}
- /// \brief The parser expects that \p K is next token in the input. If so,
+ /// The parser expects that \p K is next token in the input. If so,
/// it is consumed and false is returned.
///
/// If the input is malformed, this emits the specified error diagnostic.
@@ -706,13 +706,13 @@
return parseToken(K, L, Diagnostic(ID, Args...));
}
- /// \brief Parse the specified expected token and return its location
+ /// Parse the specified expected token and return its location
/// on success. On failure, emit the specified error diagnostic, and
/// a note at the specified note location.
bool parseMatchingToken(tok K, SourceLoc &TokLoc, Diag<> ErrorDiag,
SourceLoc OtherLoc);
- /// \brief Parse a comma separated list of some elements.
+ /// Parse a comma separated list of some elements.
ParserStatus parseList(tok RightK, SourceLoc LeftLoc, SourceLoc &RightLoc,
bool AllowSepAfterLast, Diag<> ErrorDiag,
syntax::SyntaxKind Kind,
@@ -969,7 +969,7 @@
ParserResult<TypeRepr> parseTypeSimple(Diag<> MessageID,
bool HandleCodeCompletion = true);
- /// \brief Parse layout constraint.
+ /// Parse layout constraint.
LayoutConstraint parseLayoutConstraint(Identifier LayoutConstraintID);
ParserStatus parseGenericArguments(SmallVectorImpl<TypeRepr *> &Args,
@@ -1137,7 +1137,7 @@
ParserResult<Pattern> parseTypedPattern();
ParserResult<Pattern> parsePattern();
- /// \brief Parse a tuple pattern element.
+ /// Parse a tuple pattern element.
///
/// \code
/// pattern-tuple-element:
@@ -1162,7 +1162,7 @@
VarDecl::Specifier specifier);
- /// \brief Determine whether this token can only start a matching pattern
+ /// Determine whether this token can only start a matching pattern
/// production and not an expression.
bool isOnlyStartOfMatchingPattern();
@@ -1263,7 +1263,7 @@
Expr *parseExprEditorPlaceholder(Token PlaceholderTok,
Identifier PlaceholderId);
- /// \brief Parse a closure expression after the opening brace.
+ /// Parse a closure expression after the opening brace.
///
/// \verbatim
/// expr-closure:
@@ -1280,7 +1280,7 @@
/// \endverbatim
ParserResult<Expr> parseExprClosure();
- /// \brief Parse the closure signature, if present.
+ /// Parse the closure signature, if present.
///
/// \verbatim
/// closure-signature:
@@ -1491,7 +1491,7 @@
/// Whether a given token can be the start of a decl.
bool isKeywordPossibleDeclStart(const Token &Tok);
-/// \brief Lex and return a vector of `TokenSyntax` tokens, which include
+/// Lex and return a vector of `TokenSyntax` tokens, which include
/// leading and trailing trivia.
std::vector<std::pair<RC<syntax::RawSyntax>,
syntax::AbsolutePosition>>
diff --git a/include/swift/Parse/ParserResult.h b/include/swift/Parse/ParserResult.h
index 6b18d86..696f581 100644
--- a/include/swift/Parse/ParserResult.h
+++ b/include/swift/Parse/ParserResult.h
@@ -21,7 +21,7 @@
class ParserStatus;
-/// \brief A wrapper for a parser AST node result (Decl, Stmt, Expr, Pattern,
+/// A wrapper for a parser AST node result (Decl, Stmt, Expr, Pattern,
/// etc.)
///
/// Contains the pointer to the AST node itself (or null) and additional bits
@@ -123,7 +123,7 @@
return PR;
}
-/// \brief Same as \c ParserResult, but just the status bits without the AST
+/// Same as \c ParserResult, but just the status bits without the AST
/// node.
///
/// Useful when the AST node is returned by some other means (for example, in
diff --git a/include/swift/Parse/PersistentParserState.h b/include/swift/Parse/PersistentParserState.h
index 7c6d52a..7b7c7ed 100644
--- a/include/swift/Parse/PersistentParserState.h
+++ b/include/swift/Parse/PersistentParserState.h
@@ -29,7 +29,7 @@
class LazyMemberParser;
class ASTContext;
-/// \brief Parser state persistent across multiple parses.
+/// Parser state persistent across multiple parses.
class PersistentParserState: public LazyMemberParser {
public:
struct ParserPos {
@@ -118,7 +118,7 @@
std::unique_ptr<FunctionBodyState>>;
DelayedFunctionBodiesTy DelayedFunctionBodies;
- /// \brief Parser sets this if it stopped parsing before the buffer ended.
+ /// Parser sets this if it stopped parsing before the buffer ended.
ParserPosition MarkedPos;
std::unique_ptr<DelayedDeclState> CodeCompletionDelayedDeclState;
@@ -190,7 +190,7 @@
this->InPoundLineEnvironment = InPoundLineEnvironment;
}
- /// \brief Returns the marked parser position and resets it.
+ /// Returns the marked parser position and resets it.
ParserPosition takeParserPosition() {
ParserPosition Pos = MarkedPos;
MarkedPos = ParserPosition();
diff --git a/include/swift/Parse/Scope.h b/include/swift/Parse/Scope.h
index 8662134..c21f141 100644
--- a/include/swift/Parse/Scope.h
+++ b/include/swift/Parse/Scope.h
@@ -80,7 +80,7 @@
ClosureParams,
};
-/// \brief An opaque object that owns the scope frame. The scope frame can be
+/// An opaque object that owns the scope frame. The scope frame can be
/// re-entered later.
class SavedScope {
friend class Scope;
@@ -124,7 +124,7 @@
ScopeKind Kind;
bool IsInactiveConfigBlock;
- /// \brief Save this scope so that it can be re-entered later. Transfers the
+ /// Save this scope so that it can be re-entered later. Transfers the
/// ownership of the scope frame to returned object.
SavedScope saveScope() {
return SavedScope(HTScope.detach(), Depth, Kind, IsInactiveConfigBlock);
@@ -137,10 +137,10 @@
bool isResolvable() const;
public:
- /// \brief Create a lexical scope of the specified kind.
+ /// Create a lexical scope of the specified kind.
Scope(Parser *P, ScopeKind SC, bool isInactiveConfigBlock = false);
- /// \brief Re-enter the specified scope, transferring the ownership of the
+ /// Re-enter the specified scope, transferring the ownership of the
/// scope frame to the new object.
Scope(Parser *P, SavedScope &&SS);
diff --git a/include/swift/Parse/Token.h b/include/swift/Parse/Token.h
index 59e3e45..c13f585 100644
--- a/include/swift/Parse/Token.h
+++ b/include/swift/Parse/Token.h
@@ -36,10 +36,10 @@
///
tok Kind;
- /// \brief Whether this token is the first token on the line.
+ /// Whether this token is the first token on the line.
unsigned AtStartOfLine : 1;
- /// \brief Whether this token is an escaped `identifier` token.
+ /// Whether this token is an escaped `identifier` token.
unsigned EscapedIdentifier : 1;
/// Modifiers for string literals
@@ -50,7 +50,7 @@
// Padding bits == 32 - 11;
- /// \brief The length of the comment that precedes the token.
+ /// The length of the comment that precedes the token.
unsigned CommentLength;
/// Text - The actual string covered by the token in the source buffer.
@@ -114,15 +114,15 @@
return !isEllipsis();
}
- /// \brief Determine whether this token occurred at the start of a line.
+ /// Determine whether this token occurred at the start of a line.
bool isAtStartOfLine() const { return AtStartOfLine; }
- /// \brief Set whether this token occurred at the start of a line.
+ /// Set whether this token occurred at the start of a line.
void setAtStartOfLine(bool value) { AtStartOfLine = value; }
- /// \brief True if this token is an escaped identifier token.
+ /// True if this token is an escaped identifier token.
bool isEscapedIdentifier() const { return EscapedIdentifier; }
- /// \brief Set whether this token is an escaped identifier token.
+ /// Set whether this token is an escaped identifier token.
void setEscapedIdentifier(bool value) {
assert((!value || Kind == tok::identifier) &&
"only identifiers can be escaped identifiers");
@@ -221,15 +221,15 @@
}
}
- /// \brief True if the string literal token is multiline.
+ /// True if the string literal token is multiline.
bool isMultilineString() const {
return MultilineString;
}
- /// \brief Count of extending escaping '#'.
+ /// Count of extending escaping '#'.
unsigned getCustomDelimiterLen() const {
return CustomDelimiterLen;
}
- /// \brief Set characteristics of string literal token.
+ /// Set characteristics of string literal token.
void setStringLiteral(bool IsMultilineString, unsigned CustomDelimiterLen) {
assert(Kind == tok::string_literal);
this->MultilineString = IsMultilineString;
@@ -282,7 +282,7 @@
void setText(StringRef T) { Text = T; }
- /// \brief Set the token to the specified kind and source range.
+ /// Set the token to the specified kind and source range.
void setToken(tok K, StringRef T, unsigned CommentLength = 0) {
Kind = K;
Text = T;
diff --git a/include/swift/Runtime/Casting.h b/include/swift/Runtime/Casting.h
index f634a07..d41f6c8 100644
--- a/include/swift/Runtime/Casting.h
+++ b/include/swift/Runtime/Casting.h
@@ -21,7 +21,7 @@
namespace swift {
-/// \brief Perform a checked dynamic cast of a value to a target type.
+/// Perform a checked dynamic cast of a value to a target type.
///
/// \param dest A buffer into which to write the destination value.
/// In all cases, this will be left uninitialized if the cast fails.
@@ -44,7 +44,7 @@
const Metadata *targetType,
DynamicCastFlags flags);
-/// \brief Checked dynamic cast to a Swift class type.
+/// Checked dynamic cast to a Swift class type.
///
/// \param object The object to cast.
/// \param targetType The type to which we are casting, which is known to be
@@ -55,7 +55,7 @@
const void *
swift_dynamicCastClass(const void *object, const ClassMetadata *targetType);
-/// \brief Unconditional, checked dynamic cast to a Swift class type.
+/// Unconditional, checked dynamic cast to a Swift class type.
///
/// Aborts if the object isn't of the target type.
///
@@ -70,7 +70,7 @@
const ClassMetadata *targetType);
#if SWIFT_OBJC_INTEROP
-/// \brief Checked Objective-C-style dynamic cast to a class type.
+/// Checked Objective-C-style dynamic cast to a class type.
///
/// \param object The object to cast, or nil.
/// \param targetType The type to which we are casting, which is known to be
@@ -81,7 +81,7 @@
const void *
swift_dynamicCastObjCClass(const void *object, const ClassMetadata *targetType);
-/// \brief Checked dynamic cast to a foreign class type.
+/// Checked dynamic cast to a foreign class type.
///
/// \param object The object to cast, or nil.
/// \param targetType The type to which we are casting, which is known to be
@@ -93,7 +93,7 @@
swift_dynamicCastForeignClass(const void *object,
const ForeignClassMetadata *targetType);
-/// \brief Unconditional, checked, Objective-C-style dynamic cast to a class
+/// Unconditional, checked, Objective-C-style dynamic cast to a class
/// type.
///
/// Aborts if the object isn't of the target type.
@@ -110,7 +110,7 @@
swift_dynamicCastObjCClassUnconditional(const void *object,
const ClassMetadata *targetType);
-/// \brief Unconditional, checked dynamic cast to a foreign class type.
+/// Unconditional, checked dynamic cast to a foreign class type.
///
/// \param object The object to cast, or nil.
/// \param targetType The type to which we are casting, which is known to be
@@ -124,7 +124,7 @@
const ForeignClassMetadata *targetType);
#endif
-/// \brief Checked dynamic cast of a class instance pointer to the given type.
+/// Checked dynamic cast of a class instance pointer to the given type.
///
/// \param object The class instance to cast.
///
@@ -136,7 +136,7 @@
const void *
swift_dynamicCastUnknownClass(const void *object, const Metadata *targetType);
-/// \brief Unconditional checked dynamic cast of a class instance pointer to
+/// Unconditional checked dynamic cast of a class instance pointer to
/// the given type.
///
/// Aborts if the object isn't of the target type.
@@ -181,7 +181,7 @@
const ClassMetadata *sourceType,
const ClassMetadata *targetType);
-/// \brief Return the dynamic type of an opaque value.
+/// Return the dynamic type of an opaque value.
///
/// \param value An opaque value.
/// \param self The static type metadata for the opaque value and the result
@@ -201,7 +201,7 @@
swift_getDynamicType(OpaqueValue *value, const Metadata *self,
bool existentialMetatype);
-/// \brief Fetch the type metadata associated with the formal dynamic
+/// Fetch the type metadata associated with the formal dynamic
/// type of the given (possibly Objective-C) object. The formal
/// dynamic type ignores dynamic subclasses such as those introduced
/// by KVO.
@@ -210,7 +210,7 @@
SWIFT_RUNTIME_EXPORT
const Metadata *swift_getObjectType(HeapObject *object);
-/// \brief Check whether a type conforms to a given native Swift protocol,
+/// Check whether a type conforms to a given native Swift protocol,
/// visible from the named module.
///
/// If so, returns a pointer to the witness table for its conformance.
diff --git a/include/swift/Runtime/Enum.h b/include/swift/Runtime/Enum.h
index aba2436..507d1a4 100644
--- a/include/swift/Runtime/Enum.h
+++ b/include/swift/Runtime/Enum.h
@@ -34,7 +34,7 @@
using EnumMetadata = TargetEnumMetadata<InProcess>;
struct TypeLayout;
-/// \brief Initialize the type metadata for a single-case enum type.
+/// Initialize the type metadata for a single-case enum type.
///
/// \param enumType - pointer to the instantiated but uninitialized metadata
/// for the enum.
@@ -45,7 +45,7 @@
EnumLayoutFlags flags,
const TypeLayout *payload);
-/// \brief Initialize the type metadata for a single-payload enum type.
+/// Initialize the type metadata for a single-payload enum type.
///
/// \param enumType - pointer to the instantiated but uninitialized metadata
/// for the enum.
@@ -58,7 +58,7 @@
const TypeLayout *payload,
unsigned emptyCases);
-/// \brief Faster variant of the above which avoids digging into the enum type
+/// Faster variant of the above which avoids digging into the enum type
/// metadata when the caller already has the payload information handy.
///
/// \param value - pointer to the enum value.
@@ -73,7 +73,7 @@
const Metadata *payload,
unsigned emptyCases);
-/// \brief Store the tag value for the given case into a single-payload enum,
+/// Store the tag value for the given case into a single-payload enum,
/// whose associated payload (if any) has already been initialized.
///
/// \param value - pointer to the enum value. If the case being initialized is
@@ -90,7 +90,7 @@
unsigned whichCase,
unsigned emptyCases);
-/// \brief Initialize the type metadata for a generic, multi-payload
+/// Initialize the type metadata for a generic, multi-payload
/// enum instance.
SWIFT_RUNTIME_EXPORT
void swift_initEnumMetadataMultiPayload(EnumMetadata *enumType,
@@ -98,7 +98,7 @@
unsigned numPayloads,
const TypeLayout * const *payloadTypes);
-/// \brief Return an integer value representing which case of a multi-payload
+/// Return an integer value representing which case of a multi-payload
/// enum is inhabited.
///
/// \param value - pointer to the enum value.
@@ -109,7 +109,7 @@
unsigned swift_getEnumCaseMultiPayload(const OpaqueValue *value,
const EnumMetadata *enumType);
-/// \brief Store the tag value for the given case into a multi-payload enum,
+/// Store the tag value for the given case into a multi-payload enum,
/// whose associated payload (if any) has already been initialized.
SWIFT_RUNTIME_EXPORT
void swift_storeEnumTagMultiPayload(OpaqueValue *value,
diff --git a/include/swift/Runtime/Metadata.h b/include/swift/Runtime/Metadata.h
index 0aec2af..8824de7 100644
--- a/include/swift/Runtime/Metadata.h
+++ b/include/swift/Runtime/Metadata.h
@@ -332,14 +332,14 @@
const ClassDescriptor *descriptor);
int32_t getResilientImmediateMembersOffset(const ClassDescriptor *descriptor);
-/// \brief Fetch a uniqued metadata object for a nominal type which requires
+/// Fetch a uniqued metadata object for a nominal type which requires
/// singleton metadata initialization.
SWIFT_RUNTIME_EXPORT SWIFT_CC(swift)
MetadataResponse
swift_getSingletonMetadata(MetadataRequest request,
const TypeContextDescriptor *description);
-/// \brief Fetch a uniqued metadata object for a generic nominal type.
+/// Fetch a uniqued metadata object for a generic nominal type.
SWIFT_RUNTIME_EXPORT SWIFT_CC(swift)
MetadataResponse
swift_getGenericMetadata(MetadataRequest request,
@@ -383,7 +383,7 @@
const GenericValueMetadataPattern *pattern,
size_t extraDataSize);
-/// \brief Check that the given metadata has the right state.
+/// Check that the given metadata has the right state.
SWIFT_RUNTIME_EXPORT SWIFT_CC(swift)
MetadataResponse swift_checkMetadataState(MetadataRequest request,
const Metadata *type);
@@ -442,7 +442,7 @@
const ProtocolRequirement *reqBase,
const ProtocolRequirement *assocConformance);
-/// \brief Fetch a uniqued metadata for a function type.
+/// Fetch a uniqued metadata for a function type.
SWIFT_RUNTIME_EXPORT
const FunctionTypeMetadata *
swift_getFunctionTypeMetadata(FunctionTypeFlags flags,
@@ -485,12 +485,12 @@
Class
swift_getInitializedObjCClass(Class c);
-/// \brief Fetch a uniqued type metadata for an ObjC class.
+/// Fetch a uniqued type metadata for an ObjC class.
SWIFT_RUNTIME_EXPORT
const Metadata *
swift_getObjCClassMetadata(const ClassMetadata *theClass);
-/// \brief Get the ObjC class object from class type metadata.
+/// Get the ObjC class object from class type metadata.
SWIFT_RUNTIME_EXPORT
const ClassMetadata *
swift_getObjCClassFromMetadata(const Metadata *theClass);
@@ -505,13 +505,13 @@
swift_getObjCClassFromObject(HeapObject *object);
#endif
-/// \brief Fetch a unique type metadata object for a foreign type.
+/// Fetch a unique type metadata object for a foreign type.
SWIFT_RUNTIME_EXPORT SWIFT_CC(swift)
MetadataResponse
swift_getForeignTypeMetadata(MetadataRequest request,
ForeignTypeMetadata *nonUnique);
-/// \brief Fetch a uniqued metadata for a tuple type.
+/// Fetch a uniqued metadata for a tuple type.
///
/// The labels argument is null if and only if there are no element
/// labels in the tuple. Otherwise, it is a null-terminated
@@ -676,17 +676,17 @@
const MethodDescriptor *method,
const ClassDescriptor *description);
-/// \brief Fetch a uniqued metadata for a metatype type.
+/// Fetch a uniqued metadata for a metatype type.
SWIFT_RUNTIME_EXPORT
const MetatypeMetadata *
swift_getMetatypeMetadata(const Metadata *instanceType);
-/// \brief Fetch a uniqued metadata for an existential metatype type.
+/// Fetch a uniqued metadata for an existential metatype type.
SWIFT_RUNTIME_EXPORT
const ExistentialMetatypeMetadata *
swift_getExistentialMetatypeMetadata(const Metadata *instanceType);
-/// \brief Fetch a uniqued metadata for an existential type. The array
+/// Fetch a uniqued metadata for an existential type. The array
/// referenced by \c protocols will be sorted in-place.
SWIFT_RUNTIME_EXPORT
const ExistentialTypeMetadata *
@@ -695,7 +695,7 @@
size_t numProtocols,
const ProtocolDescriptorRef *protocols);
-/// \brief Perform a copy-assignment from one existential container to another.
+/// Perform a copy-assignment from one existential container to another.
/// Both containers must be of the same existential type representable with the
/// same number of witness tables.
SWIFT_RUNTIME_EXPORT
@@ -703,14 +703,14 @@
const OpaqueValue *src,
const Metadata *type);
-/// \brief Perform a copy-assignment from one existential container to another.
+/// Perform a copy-assignment from one existential container to another.
/// Both containers must be of the same existential type representable with no
/// witness tables.
OpaqueValue *swift_assignExistentialWithCopy0(OpaqueValue *dest,
const OpaqueValue *src,
const Metadata *type);
-/// \brief Perform a copy-assignment from one existential container to another.
+/// Perform a copy-assignment from one existential container to another.
/// Both containers must be of the same existential type representable with one
/// witness table.
OpaqueValue *swift_assignExistentialWithCopy1(OpaqueValue *dest,
diff --git a/include/swift/SIL/BasicBlockUtils.h b/include/swift/SIL/BasicBlockUtils.h
index fe40616..a8c1499 100644
--- a/include/swift/SIL/BasicBlockUtils.h
+++ b/include/swift/SIL/BasicBlockUtils.h
@@ -25,7 +25,7 @@
class DominanceInfo;
class SILLoopInfo;
-/// \brief Replace a branch target.
+/// Replace a branch target.
///
/// \param T The terminating instruction to modify.
/// \param edgeIdx The successor edges index that will be replaced.
@@ -39,7 +39,7 @@
void getEdgeArgs(TermInst *T, unsigned edgeIdx, SILBasicBlock *newEdgeBB,
llvm::SmallVectorImpl<SILValue> &args);
-/// \brief Splits the edge from terminator.
+/// Splits the edge from terminator.
///
/// Also updates dominance and loop information if not null.
///
@@ -48,7 +48,7 @@
DominanceInfo *DT = nullptr,
SILLoopInfo *LI = nullptr);
-/// \brief Merge a basic block ending in a branch with its successor
+/// Merge a basic block ending in a branch with its successor
/// if possible.
void mergeBasicBlockWithSingleSuccessor(SILBasicBlock *BB,
SILBasicBlock *succBB);
diff --git a/include/swift/SIL/DynamicCasts.h b/include/swift/SIL/DynamicCasts.h
index aa46086..5d799c1 100644
--- a/include/swift/SIL/DynamicCasts.h
+++ b/include/swift/SIL/DynamicCasts.h
@@ -85,14 +85,14 @@
SILBasicBlock *falseBB, ProfileCounter TrueCount = ProfileCounter(),
ProfileCounter FalseCount = ProfileCounter());
-/// \brief Does the type conform to the _ObjectiveCBridgeable protocol.
+/// Does the type conform to the _ObjectiveCBridgeable protocol.
bool isObjectiveCBridgeable(ModuleDecl *M, CanType Ty);
-/// \brief Get the bridged NS class of a CF class if it exists. Returns
+/// Get the bridged NS class of a CF class if it exists. Returns
/// an empty CanType if such class does not exist.
CanType getNSBridgedClassOfCFClass(ModuleDecl *M, CanType type);
-/// \brief Does the type conform to Error.
+/// Does the type conform to Error.
bool isError(ModuleDecl *M, CanType Ty);
} // end namespace swift
diff --git a/include/swift/SIL/OptimizationRemark.h b/include/swift/SIL/OptimizationRemark.h
index f60e0e5..8d213be 100644
--- a/include/swift/SIL/OptimizationRemark.h
+++ b/include/swift/SIL/OptimizationRemark.h
@@ -31,7 +31,7 @@
namespace OptRemark {
-/// \brief Used in the streaming interface as the general argument type. It
+/// Used in the streaming interface as the general argument type. It
/// internally converts everything into a key-value pair.
struct Argument {
std::string Key;
@@ -148,7 +148,7 @@
public:
Emitter(StringRef PassName, SILModule &M);
- /// \brief Take a lambda that returns a remark which will be emitted. The
+ /// Take a lambda that returns a remark which will be emitted. The
/// lambda is not evaluated unless remarks are enabled. Second argument is
/// only used to restrict this to functions.
template <typename T>
diff --git a/include/swift/SIL/SILBasicBlock.h b/include/swift/SIL/SILBasicBlock.h
index 2a12d9b..c27f9d1 100644
--- a/include/swift/SIL/SILBasicBlock.h
+++ b/include/swift/SIL/SILBasicBlock.h
@@ -132,20 +132,20 @@
return const_cast<SILBasicBlock *>(this)->getTerminator();
}
- /// \brief Splits a basic block into two at the specified instruction.
+ /// Splits a basic block into two at the specified instruction.
///
/// Note that all the instructions BEFORE the specified iterator
/// stay as part of the original basic block. The old basic block is left
/// without a terminator.
SILBasicBlock *split(iterator I);
- /// \brief Move the basic block to after the specified basic block in the IR.
+ /// Move the basic block to after the specified basic block in the IR.
///
/// Assumes that the basic blocks must reside in the same function. In asserts
/// builds, an assert verifies that this is true.
void moveAfter(SILBasicBlock *After);
- /// \brief Moves the instruction to the iterator in this basic block.
+ /// Moves the instruction to the iterator in this basic block.
void moveTo(SILBasicBlock::iterator To, SILInstruction *I);
//===--------------------------------------------------------------------===//
@@ -257,7 +257,7 @@
return insertPhiArgument(Pos, Ty, Kind, D);
}
- /// \brief Remove all block arguments.
+ /// Remove all block arguments.
void dropAllArguments() { ArgumentList.clear(); }
//===--------------------------------------------------------------------===//
@@ -311,7 +311,7 @@
return getTerminator()->getSingleSuccessorBlock();
}
- /// \brief Returns true if \p BB is a successor of this block.
+ /// Returns true if \p BB is a successor of this block.
bool isSuccessorBlock(SILBasicBlock *Block) const {
return getTerminator()->isSuccessorBlock(Block);
}
@@ -403,7 +403,7 @@
return &SILBasicBlock::InstList;
}
- /// \brief Drops all uses that belong to this basic block.
+ /// Drops all uses that belong to this basic block.
void dropAllReferences() {
dropAllArguments();
for (SILInstruction &I : *this)
diff --git a/include/swift/SIL/SILBuilder.h b/include/swift/SIL/SILBuilder.h
index bb13196..75766d9 100644
--- a/include/swift/SIL/SILBuilder.h
+++ b/include/swift/SIL/SILBuilder.h
@@ -380,7 +380,7 @@
moveBlockTo(BB, BB->getParent()->end());
}
- /// \brief Move the insertion point to the end of the given block.
+ /// Move the insertion point to the end of the given block.
///
/// Assumes that no insertion point is currently active.
void emitBlock(SILBasicBlock *BB) {
@@ -388,7 +388,7 @@
setInsertionPoint(BB);
}
- /// \brief Branch to the given block if there's an active insertion point,
+ /// Branch to the given block if there's an active insertion point,
/// then move the insertion point to the end of that block.
void emitBlock(SILBasicBlock *BB, SILLocation BranchLoc);
@@ -2095,7 +2095,8 @@
/// lowering for the non-address value.
void emitDestroyValueOperation(SILLocation Loc, SILValue v) {
assert(!v->getType().isAddress());
- if (v.getOwnershipKind() == ValueOwnershipKind::Trivial)
+ if (F->hasQualifiedOwnership() &&
+ v.getOwnershipKind() == ValueOwnershipKind::Any)
return;
auto &lowering = getTypeLowering(v->getType());
lowering.emitDestroyValue(*this, Loc, v);
diff --git a/include/swift/SIL/SILCloner.h b/include/swift/SIL/SILCloner.h
index adfef30..9451e1e 100644
--- a/include/swift/SIL/SILCloner.h
+++ b/include/swift/SIL/SILCloner.h
@@ -398,7 +398,7 @@
void doFixUp(SILFunction *F);
};
-/// \brief A SILBuilder that automatically invokes postprocess on each
+/// A SILBuilder that automatically invokes postprocess on each
/// inserted instruction.
template<class SomeSILCloner, unsigned N = 4>
class SILBuilderWithPostProcess : public SILBuilder {
@@ -711,7 +711,7 @@
}
}
-/// \brief Clean-up after cloning.
+/// Clean-up after cloning.
template<typename ImplClass>
void
SILCloner<ImplClass>::doFixUp(SILFunction *F) {
@@ -2130,8 +2130,8 @@
getBuilder().setCurrentDebugScope(getOpScope(Inst->getDebugScope()));
ValueOwnershipKind Kind = SILValue(Inst).getOwnershipKind();
if (getOpValue(Inst->getOperand()).getOwnershipKind() ==
- ValueOwnershipKind::Trivial) {
- Kind = ValueOwnershipKind::Trivial;
+ ValueOwnershipKind::Any) {
+ Kind = ValueOwnershipKind::Any;
}
recordClonedInstruction(Inst, getBuilder().createUncheckedOwnershipConversion(
getOpLocation(Inst->getLoc()),
diff --git a/include/swift/SIL/SILDeclRef.h b/include/swift/SIL/SILDeclRef.h
index b513fac..ba0d151 100644
--- a/include/swift/SIL/SILDeclRef.h
+++ b/include/swift/SIL/SILDeclRef.h
@@ -70,7 +70,7 @@
ForDefinition = true
};
-/// \brief A key for referencing a Swift declaration in SIL.
+/// A key for referencing a Swift declaration in SIL.
///
/// This can currently be either a reference to a ValueDecl for functions,
/// methods, constructors, and other named entities, or a reference to a
@@ -85,7 +85,7 @@
/// Represents the "kind" of the SILDeclRef. For some Swift decls there
/// are multiple SIL entry points, and the kind is used to distinguish them.
enum class Kind : unsigned {
- /// \brief This constant references the FuncDecl or AbstractClosureExpr
+ /// This constant references the FuncDecl or AbstractClosureExpr
/// in loc.
Func,
@@ -258,13 +258,13 @@
return kind == Kind::Initializer || kind == Kind::Destroyer;
}
- /// \brief True if the function should be treated as transparent.
+ /// True if the function should be treated as transparent.
bool isTransparent() const;
- /// \brief True if the function should have its body serialized.
+ /// True if the function should have its body serialized.
IsSerialized_t isSerialized() const;
- /// \brief True if the function has noinline attribute.
+ /// True if the function has noinline attribute.
bool isNoinline() const;
- /// \brief True if the function has __always inline attribute.
+ /// True if the function has __always inline attribute.
bool isAlwaysInline() const;
/// \return True if the function has an effects attribute.
@@ -273,10 +273,10 @@
/// \return the effects kind of the function.
EffectsKind getEffectsAttribute() const;
- /// \brief Return the expected linkage of this declaration.
+ /// Return the expected linkage of this declaration.
SILLinkage getLinkage(ForDefinition_t forDefinition) const;
- /// \brief Return the hash code for the SIL declaration.
+ /// Return the hash code for the SIL declaration.
llvm::hash_code getHashCode() const {
return llvm::hash_combine(loc.getOpaqueValue(),
static_cast<int>(kind),
diff --git a/include/swift/SIL/SILFunction.h b/include/swift/SIL/SILFunction.h
index 9157fb4..47fcde4 100644
--- a/include/swift/SIL/SILFunction.h
+++ b/include/swift/SIL/SILFunction.h
@@ -713,7 +713,7 @@
return EffectsKindAttr != EffectsKind::Unspecified;
}
- /// \brief Set the function side effect information.
+ /// Set the function side effect information.
void setEffectsKind(EffectsKind E) {
EffectsKindAttr = E;
}
diff --git a/include/swift/SIL/SILInstruction.h b/include/swift/SIL/SILInstruction.h
index b7b1a98..667f4f4 100644
--- a/include/swift/SIL/SILInstruction.h
+++ b/include/swift/SIL/SILInstruction.h
@@ -370,11 +370,11 @@
None,
/// The instruction may read memory.
MayRead,
- /// \brief The instruction may write to memory.
+ /// The instruction may write to memory.
MayWrite,
/// The instruction may read or write memory.
MayReadWrite,
- /// \brief The instruction may have side effects not captured
+ /// The instruction may have side effects not captured
/// solely by its users. Specifically, it can return,
/// release memory, or store. Note, alloc is not considered
/// to have side effects because its result/users represent
@@ -430,22 +430,22 @@
/// the basic block that Earlier lives in, right after Earlier.
void moveAfter(SILInstruction *Earlier);
- /// \brief Drops all uses that belong to this instruction.
+ /// Drops all uses that belong to this instruction.
void dropAllReferences();
- /// \brief Replace all uses of all results of this instruction with undef.
+ /// Replace all uses of all results of this instruction with undef.
void replaceAllUsesOfAllResultsWithUndef();
- /// \brief Replace all uses of all results of this instruction
+ /// Replace all uses of all results of this instruction
/// with the parwise-corresponding results of the given instruction.
void replaceAllUsesPairwiseWith(SILInstruction *other);
- /// \brief Replace all uses of all results of this instruction with the
+ /// Replace all uses of all results of this instruction with the
/// parwise-corresponding results of the passed in array.
void
replaceAllUsesPairwiseWith(const llvm::SmallVectorImpl<SILValue> &NewValues);
- /// \brief Are there uses of any of the results of this instruction?
+ /// Are there uses of any of the results of this instruction?
bool hasUsesOfAnyResult() const {
for (auto result : getResults()) {
if (!result->use_empty())
@@ -567,7 +567,7 @@
return hasIdenticalState(RHS);
}
- /// \brief Returns true if the instruction may have side effects.
+ /// Returns true if the instruction may have side effects.
///
/// Instructions that store into memory or change retain counts as well as
/// calls and deallocation instructions are considered to have side effects
@@ -2841,17 +2841,17 @@
Identifier getName() const { return Name; }
void setName(Identifier I) { Name = I; }
- /// \brief Looks up the llvm intrinsic ID and type for the builtin function.
+ /// Looks up the llvm intrinsic ID and type for the builtin function.
///
/// \returns Returns llvm::Intrinsic::not_intrinsic if the function is not an
/// intrinsic. The particular intrinsic functions which correspond to the
/// returned value are defined in llvm/Intrinsics.h.
const IntrinsicInfo &getIntrinsicInfo() const;
- /// \brief Looks up the lazily cached identification for the builtin function.
+ /// Looks up the lazily cached identification for the builtin function.
const BuiltinInfo &getBuiltinInfo() const;
- /// \brief Looks up the llvm intrinsic ID of this builtin. Returns None if
+ /// Looks up the llvm intrinsic ID of this builtin. Returns None if
/// this is not an intrinsic.
llvm::Optional<llvm::Intrinsic::ID> getIntrinsicID() const {
auto I = getIntrinsicInfo();
@@ -2860,7 +2860,7 @@
return I.ID;
}
- /// \brief Looks up the BuiltinKind of this builtin. Returns None if this is
+ /// Looks up the BuiltinKind of this builtin. Returns None if this is
/// not a builtin.
llvm::Optional<BuiltinValueKind> getBuiltinKind() const {
auto I = getBuiltinInfo();
@@ -2996,10 +2996,10 @@
const APFloat &Value, SILModule &M);
public:
- /// \brief Return the APFloat for the underlying FP literal.
+ /// Return the APFloat for the underlying FP literal.
APFloat getValue() const;
- /// \brief Return the bitcast representation of the FP literal as an APInt.
+ /// Return the bitcast representation of the FP literal as an APInt.
APInt getBits() const;
ArrayRef<Operand> getAllOperands() const { return {}; }
@@ -5023,7 +5023,7 @@
: InstructionBase(DebugLoc, ResultTy,
Operand
? Operand.getOwnershipKind()
- : ValueOwnershipKind(ValueOwnershipKind::Trivial)),
+ : ValueOwnershipKind(ValueOwnershipKind::Any)),
Element(Element) {
if (Operand) {
OptionalOperand.emplace(this, Operand);
@@ -5252,7 +5252,7 @@
return getDefaultResult();
}
- /// \brief If the default refers to exactly one case decl, return it.
+ /// If the default refers to exactly one case decl, return it.
NullablePtr<EnumElementDecl> getUniqueCaseForDefault();
bool hasDefault() const {
@@ -6723,7 +6723,7 @@
return const_cast<TermInst *>(this)->getSingleSuccessorBlock();
}
- /// \brief Returns true if \p BB is a successor of this block.
+ /// Returns true if \p BB is a successor of this block.
bool isSuccessorBlock(SILBasicBlock *BB) const {
auto Range = getSuccessorBlocks();
return any_of(Range, [&BB](const SILBasicBlock *SuccBB) -> bool {
@@ -6940,7 +6940,7 @@
ArrayRef<SILValue> Args, SILFunction &F);
public:
- /// \brief returns jump target for the branch.
+ /// returns jump target for the branch.
SILBasicBlock *getDestBB() const { return DestBB; }
/// The arguments for the destination BB.
@@ -7249,7 +7249,7 @@
// Swap the cases at indices \p i and \p j.
void swapCase(unsigned i, unsigned j);
- /// \brief Return the block that will be branched to on the specified enum
+ /// Return the block that will be branched to on the specified enum
/// case.
SILBasicBlock *getCaseDestination(EnumElementDecl *D) {
for (unsigned i = 0, e = getNumCases(); i != e; ++i) {
@@ -7261,10 +7261,10 @@
return getDefaultBB();
}
- /// \brief If the default refers to exactly one case decl, return it.
+ /// If the default refers to exactly one case decl, return it.
NullablePtr<EnumElementDecl> getUniqueCaseForDefault();
- /// \brief If the given block only has one enum element decl matched to it,
+ /// If the given block only has one enum element decl matched to it,
/// return it.
NullablePtr<EnumElementDecl> getUniqueCaseForDestination(SILBasicBlock *BB);
diff --git a/include/swift/SIL/SILModule.h b/include/swift/SIL/SILModule.h
index 540407e..97ede7c 100644
--- a/include/swift/SIL/SILModule.h
+++ b/include/swift/SIL/SILModule.h
@@ -73,14 +73,14 @@
/// A stage of SIL processing.
enum class SILStage {
- /// \brief "Raw" SIL, emitted by SILGen, but not yet run through guaranteed
+ /// "Raw" SIL, emitted by SILGen, but not yet run through guaranteed
/// optimization and diagnostic passes.
///
/// Raw SIL does not have fully-constructed SSA and may contain undiagnosed
/// dataflow errors.
Raw,
- /// \brief Canonical SIL, which has been run through at least the guaranteed
+ /// Canonical SIL, which has been run through at least the guaranteed
/// optimization and diagnostic passes.
///
/// Canonical SIL has stricter invariants than raw SIL. It must not contain
@@ -88,7 +88,7 @@
/// forms.
Canonical,
- /// \brief Lowered SIL, which has been prepared for IRGen and will no longer
+ /// Lowered SIL, which has been prepared for IRGen and will no longer
/// be passed to canonical SIL transform passes.
///
/// In lowered SIL, the SILType of all SILValues is its SIL storage
@@ -101,7 +101,7 @@
Lowered,
};
-/// \brief A SIL module. The SIL module owns all of the SILFunctions generated
+/// A SIL module. The SIL module owns all of the SILFunctions generated
/// when a Swift compilation context is lowered to SIL.
class SILModule {
friend class SILFunctionBuilder;
@@ -312,7 +312,7 @@
/// Serialize a SIL module using the configured SerializeSILAction.
void serialize();
- /// \brief This converts Swift types to SILTypes.
+ /// This converts Swift types to SILTypes.
mutable Lowering::TypeConverter Types;
/// Look up the TypeLowering for a SILType.
@@ -347,7 +347,7 @@
static std::unique_ptr<SILModule>
constructSIL(ModuleDecl *M, SILOptions &Options, FileUnit *sf = nullptr);
- /// \brief Create and return an empty SIL module that we can
+ /// Create and return an empty SIL module that we can
/// later parse SIL bodies directly into, without converting from an AST.
static std::unique_ptr<SILModule>
createEmptyModule(ModuleDecl *M, SILOptions &Options,
@@ -584,10 +584,10 @@
/// Deletes a dead witness table.
void deleteWitnessTable(SILWitnessTable *Wt);
- /// \brief Return the stage of processing this module is at.
+ /// Return the stage of processing this module is at.
SILStage getStage() const { return Stage; }
- /// \brief Advance the module to a further stage of processing.
+ /// Advance the module to a further stage of processing.
void setStage(SILStage s) {
assert(s >= Stage && "regressing stage?!");
Stage = s;
@@ -607,7 +607,7 @@
/// the given module?
bool isTypeMetadataAccessible(CanType type);
- /// \brief Run the SIL verifier to make sure that all Functions follow
+ /// Run the SIL verifier to make sure that all Functions follow
/// invariants.
void verify() const;
@@ -671,14 +671,14 @@
/// Deallocate memory of an instruction.
void deallocateInst(SILInstruction *I);
- /// \brief Looks up the llvm intrinsic ID and type for the builtin function.
+ /// Looks up the llvm intrinsic ID and type for the builtin function.
///
/// \returns Returns llvm::Intrinsic::not_intrinsic if the function is not an
/// intrinsic. The particular intrinsic functions which correspond to the
/// returned value are defined in llvm/Intrinsics.h.
const IntrinsicInfo &getIntrinsicInfo(Identifier ID);
- /// \brief Looks up the lazily cached identification for the builtin function.
+ /// Looks up the lazily cached identification for the builtin function.
///
/// \returns Returns builtin info of BuiltinValueKind::None kind if the
/// declaration is not a builtin.
diff --git a/include/swift/SIL/SILSuccessor.h b/include/swift/SIL/SILSuccessor.h
index cab1f58..f0e14af 100644
--- a/include/swift/SIL/SILSuccessor.h
+++ b/include/swift/SIL/SILSuccessor.h
@@ -23,7 +23,7 @@
class SILBasicBlock;
class TermInst;
-/// \brief An edge in the control flow graph.
+/// An edge in the control flow graph.
///
/// A SILSuccessor is stored in the terminator instruction of the tail block of
/// the CFG edge. Internally it has a back reference to the terminator that
diff --git a/include/swift/SIL/SILValue.h b/include/swift/SIL/SILValue.h
index 2037dde..29b351a 100644
--- a/include/swift/SIL/SILValue.h
+++ b/include/swift/SIL/SILValue.h
@@ -19,6 +19,7 @@
#include "swift/Basic/Range.h"
#include "swift/Basic/ArrayRefView.h"
+#include "swift/Basic/STLExtras.h"
#include "swift/SIL/SILNode.h"
#include "swift/SIL/SILType.h"
#include "llvm/ADT/ArrayRef.h"
@@ -86,17 +87,6 @@
/// have.
struct ValueOwnershipKind {
enum innerty : uint8_t {
- /// A SILValue with Trivial ownership kind is an independent value that can
- /// not be owned. Ownership does not place any constraints on how a SILValue
- /// with Trivial ownership kind can be used. Other side effects (e.g. Memory
- /// dependencies) must still be respected. A SILValue with Trivial ownership
- /// kind must be of Trivial SILType (i.e. SILType::isTrivial(SILModule &)
- /// must return true).
- ///
- /// Some examples of SIL types with Trivial ownership are: Builtin.Int32,
- /// Builtin.RawPointer, aggregates containing all trivial types.
- Trivial,
-
/// A SILValue with `Unowned` ownership kind is an independent value that
/// has a lifetime that is only guaranteed to last until the next program
/// visible side-effect. To maintain the lifetime of an unowned value, it
@@ -127,10 +117,11 @@
/// instruction exactly once along any path through the program.
Guaranteed,
- /// A SILValue with undefined ownership. It can pair with /Any/ ownership
- /// kinds. This means that it could take on /any/ ownership semantics. This
- /// is meant only to model SILUndef and to express certain situations where
- /// we use unqualified ownership. Expected to tighten over time.
+ /// A SILValue with Any ownership kind is an independent value outside of
+ /// the ownership system. It is used to model trivially typed values as well
+ /// as trivial cases of non-trivial enums. Naturally Any can be merged with
+ /// any ValueOwnershipKind allowing us to naturally model merge and branch
+ /// points in the SSA graph.
Any,
LastValueOwnershipKind = Any,
@@ -162,10 +153,6 @@
Optional<ValueOwnershipKind> merge(ValueOwnershipKind RHS) const;
- bool isTrivialOr(ValueOwnershipKind Kind) const {
- return Value == Trivial || Value == Kind;
- }
-
/// Given that there is an aggregate value (like a struct or enum) with this
/// ownership kind, and a subobject of type Proj is being projected from the
/// aggregate, return Trivial if Proj has trivial type and the aggregate's
@@ -180,7 +167,6 @@
/// kinds.
UseLifetimeConstraint getForwardingLifetimeConstraint() const {
switch (Value) {
- case ValueOwnershipKind::Trivial:
case ValueOwnershipKind::Any:
case ValueOwnershipKind::Guaranteed:
case ValueOwnershipKind::Unowned:
@@ -199,12 +185,16 @@
return merge(other).hasValue();
}
- /// Returns true if \p Other is compatible with ValueOwnershipKind::Trivial or
- /// this. See isCompatibleWith for more information on what "compatibility"
- /// means.
- bool isTrivialOrCompatibleWith(ValueOwnershipKind other) const {
- return isCompatibleWith(ValueOwnershipKind::Trivial) ||
- isCompatibleWith(other);
+ template <typename RangeTy>
+ static Optional<ValueOwnershipKind> merge(RangeTy &&r) {
+ auto initial = Optional<ValueOwnershipKind>(ValueOwnershipKind::Any);
+ return accumulate(
+ std::forward<RangeTy>(r), initial,
+ [](Optional<ValueOwnershipKind> acc, ValueOwnershipKind x) {
+ if (!acc)
+ return acc;
+ return acc.getValue().merge(x);
+ });
}
};
@@ -247,7 +237,7 @@
/// results. To replace just one result use SILValue::replaceAllUsesWith.
void replaceAllUsesWith(ValueBase *RHS);
- /// \brief Replace all uses of this instruction with an undef value of the
+ /// Replace all uses of this instruction with an undef value of the
/// same type as the result of this instruction.
void replaceAllUsesWithUndef();
@@ -580,7 +570,7 @@
set(OtherV);
}
- /// \brief Remove this use of the operand.
+ /// Remove this use of the operand.
void drop() {
removeFromCurrent();
TheValue = SILValue();
diff --git a/include/swift/SIL/TypeLowering.h b/include/swift/SIL/TypeLowering.h
index a64ee94..759243d 100644
--- a/include/swift/SIL/TypeLowering.h
+++ b/include/swift/SIL/TypeLowering.h
@@ -218,13 +218,13 @@
virtual ~TypeLowering() {}
- /// \brief Are r-values of this type passed as arguments indirectly by formal
+ /// Are r-values of this type passed as arguments indirectly by formal
/// convention?
///
/// This is independent of whether the SIL argument is address type.
bool isFormallyPassedIndirectly() const { return isAddressOnly(); }
- /// \brief Are r-values of this type returned indirectly by formal convention?
+ /// Are r-values of this type returned indirectly by formal convention?
///
/// This is independent of whether the SIL result is address type.
bool isFormallyReturnedIndirectly() const { return isAddressOnly(); }
@@ -934,7 +934,7 @@
NeedsThunk
};
- /// \brief Test if type1 is ABI compatible with type2, and can be converted
+ /// Test if type1 is ABI compatible with type2, and can be converted
/// with a trivial bitcast.
///
/// Note that type1 and type2 must be lowered types, and type1 must be a
@@ -946,7 +946,7 @@
ABIDifference checkForABIDifferences(SILType type1, SILType type2,
bool thunkOptionals = true);
- /// \brief Same as above but for SIL function types.
+ /// Same as above but for SIL function types.
ABIDifference checkFunctionForABIDifferences(SILFunctionType *fnTy1,
SILFunctionType *fnTy2);
diff --git a/include/swift/SIL/TypeSubstCloner.h b/include/swift/SIL/TypeSubstCloner.h
index 22adf0c..13ef594 100644
--- a/include/swift/SIL/TypeSubstCloner.h
+++ b/include/swift/SIL/TypeSubstCloner.h
@@ -30,7 +30,7 @@
namespace swift {
-/// \brief A utility class for cloning code while remapping types.
+/// A utility class for cloning code while remapping types.
///
/// \tparam FunctionBuilderTy Function builder type injected by
/// subclasses. Used to break a circular dependency from SIL <=>
diff --git a/include/swift/SILOptimizer/Analysis/CallerAnalysis.h b/include/swift/SILOptimizer/Analysis/CallerAnalysis.h
index 9b392a3..35ea773 100644
--- a/include/swift/SILOptimizer/Analysis/CallerAnalysis.h
+++ b/include/swift/SILOptimizer/Analysis/CallerAnalysis.h
@@ -25,7 +25,7 @@
namespace swift {
-/// \brief A lazy caller analysis that works by only recomputing its state upon
+/// A lazy caller analysis that works by only recomputing its state upon
/// an ask for information.
///
/// This laziness is implemented by the pass invalidating its internal state for
diff --git a/include/swift/SILOptimizer/Analysis/SimplifyInstruction.h b/include/swift/SILOptimizer/Analysis/SimplifyInstruction.h
index 145e6c9..19ccdd9 100644
--- a/include/swift/SILOptimizer/Analysis/SimplifyInstruction.h
+++ b/include/swift/SILOptimizer/Analysis/SimplifyInstruction.h
@@ -26,7 +26,7 @@
class SILInstruction;
-/// \brief Try to simplify the specified instruction, performing local
+/// Try to simplify the specified instruction, performing local
/// analysis of the operands of the instruction, without looking at its uses
/// (e.g. constant folding). If a simpler result can be found, it is
/// returned, otherwise a null SILValue is returned.
diff --git a/include/swift/SILOptimizer/PassManager/PassManager.h b/include/swift/SILOptimizer/PassManager/PassManager.h
index 3e47268..971d8512 100644
--- a/include/swift/SILOptimizer/PassManager/PassManager.h
+++ b/include/swift/SILOptimizer/PassManager/PassManager.h
@@ -37,7 +37,7 @@
class IRGenModule;
}
-/// \brief The SIL pass manager.
+/// The SIL pass manager.
class SILPassManager {
/// The module that the pass manager will transform.
SILModule *Mod;
@@ -127,7 +127,7 @@
const SILOptions &getOptions() const;
- /// \brief Searches for an analysis of type T in the list of registered
+ /// Searches for an analysis of type T in the list of registered
/// analysis. If the analysis is not found, the program terminates.
template<typename T>
T *getAnalysis() {
@@ -145,13 +145,13 @@
/// pass manager.
irgen::IRGenModule *getIRGenModule() { return IRMod; }
- /// \brief Restart the function pass pipeline on the same function
+ /// Restart the function pass pipeline on the same function
/// that is currently being processed.
void restartWithCurrentFunction(SILTransform *T);
void clearRestartPipeline() { RestartPipeline = false; }
bool shouldRestartPipeline() { return RestartPipeline; }
- /// \brief Iterate over all analysis and invalidate them.
+ /// Iterate over all analysis and invalidate them.
void invalidateAllAnalysis() {
// Invalidate the analysis (unless they are locked)
for (auto AP : Analyses)
@@ -164,16 +164,16 @@
CompletedPassesMap.clear();
}
- /// \brief Notify the pass manager of a newly create function for tracing.
+ /// Notify the pass manager of a newly create function for tracing.
void notifyOfNewFunction(SILFunction *F, SILTransform *T);
- /// \brief Add the function \p F to the function pass worklist.
+ /// Add the function \p F to the function pass worklist.
/// If not null, the function \p DerivedFrom is the function from which \p F
/// is derived. This is used to avoid an infinite amount of functions pushed
/// on the worklist (e.g. caused by a bug in a specializing optimization).
void addFunctionToWorklist(SILFunction *F, SILFunction *DerivedFrom);
- /// \brief Iterate over all analysis and notify them of the function.
+ /// Iterate over all analysis and notify them of the function.
///
/// This function does not necessarily have to be newly created function. It
/// is the job of the analysis to make sure no extra work is done if the
@@ -184,7 +184,7 @@
}
}
- /// \brief Broadcast the invalidation of the function to all analysis.
+ /// Broadcast the invalidation of the function to all analysis.
void invalidateAnalysis(SILFunction *F,
SILAnalysis::InvalidationKind K) {
// Invalidate the analysis (unless they are locked)
@@ -197,7 +197,7 @@
CompletedPassesMap[F].reset();
}
- /// \brief Iterate over all analysis and notify them of a change in witness-
+ /// Iterate over all analysis and notify them of a change in witness-
/// or vtables.
void invalidateFunctionTables() {
// Invalidate the analysis (unless they are locked)
@@ -211,7 +211,7 @@
CompletedPassesMap.clear();
}
- /// \brief Iterate over all analysis and notify them of a deleted function.
+ /// Iterate over all analysis and notify them of a deleted function.
void notifyWillDeleteFunction(SILFunction *F) {
// Invalidate the analysis (unless they are locked)
for (auto AP : Analyses)
@@ -223,16 +223,16 @@
CompletedPassesMap[F].reset();
}
- /// \brief Reset the state of the pass manager and remove all transformation
+ /// Reset the state of the pass manager and remove all transformation
/// owned by the pass manager. Analysis passes will be kept.
void resetAndRemoveTransformations();
- /// \brief Set the name of the current optimization stage.
+ /// Set the name of the current optimization stage.
///
/// This is useful for debugging.
void setStageName(llvm::StringRef NextStage = "");
- /// \brief Get the name of the current optimization stage.
+ /// Get the name of the current optimization stage.
///
/// This is useful for debugging.
StringRef getStageName() const;
diff --git a/include/swift/SILOptimizer/PassManager/Passes.h b/include/swift/SILOptimizer/PassManager/Passes.h
index 74a55bd..6e92759 100644
--- a/include/swift/SILOptimizer/PassManager/Passes.h
+++ b/include/swift/SILOptimizer/PassManager/Passes.h
@@ -28,40 +28,40 @@
class IRGenModule;
}
- /// \brief Run all the SIL diagnostic passes on \p M.
+ /// Run all the SIL diagnostic passes on \p M.
///
/// \returns true if the diagnostic passes produced an error
bool runSILDiagnosticPasses(SILModule &M);
- /// \brief Prepare SIL for the -O pipeline.
+ /// Prepare SIL for the -O pipeline.
void runSILOptPreparePasses(SILModule &Module);
- /// \brief Run all the SIL performance optimization passes on \p M.
+ /// Run all the SIL performance optimization passes on \p M.
void runSILOptimizationPasses(SILModule &M);
- /// \brief Run all SIL passes for -Onone on module \p M.
+ /// Run all SIL passes for -Onone on module \p M.
void runSILPassesForOnone(SILModule &M);
- /// \brief Run the SIL ownership eliminator pass on \p M.
+ /// Run the SIL ownership eliminator pass on \p M.
bool runSILOwnershipEliminatorPass(SILModule &M);
void runSILOptimizationPassesWithFileSpecification(SILModule &Module,
StringRef FileName);
- /// \brief Detect and remove unreachable code. Diagnose provably unreachable
+ /// Detect and remove unreachable code. Diagnose provably unreachable
/// user code.
void performSILDiagnoseUnreachable(SILModule *M);
- /// \brief Remove dead functions from \p M.
+ /// Remove dead functions from \p M.
void performSILDeadFunctionElimination(SILModule *M);
- /// \brief Convert SIL to a lowered form suitable for IRGen.
+ /// Convert SIL to a lowered form suitable for IRGen.
void runSILLoweringPasses(SILModule &M);
- /// \brief Perform SIL Inst Count on M if needed.
+ /// Perform SIL Inst Count on M if needed.
void performSILInstCountIfNeeded(SILModule *M);
- /// \brief Identifiers for all passes. Used to procedurally create passes from
+ /// Identifiers for all passes. Used to procedurally create passes from
/// lists of passes.
enum class PassKind {
#define PASS(ID, TAG, NAME) ID,
diff --git a/include/swift/SILOptimizer/PassManager/Transforms.h b/include/swift/SILOptimizer/PassManager/Transforms.h
index 1ad36aa..edc9177 100644
--- a/include/swift/SILOptimizer/PassManager/Transforms.h
+++ b/include/swift/SILOptimizer/PassManager/Transforms.h
@@ -81,7 +81,7 @@
llvm::StringRef getID() { return PassKindID(getPassKind()); }
protected:
- /// \brief Searches for an analysis of type T in the list of registered
+ /// Searches for an analysis of type T in the list of registered
/// analysis. If the analysis is not found, the program terminates.
template<typename T>
T* getAnalysis() { return PM->getAnalysis<T>(); }
@@ -107,7 +107,7 @@
void injectFunction(SILFunction *Func) { F = Func; }
- /// \brief Notify the pass manager of a function \p F that needs to be
+ /// Notify the pass manager of a function \p F that needs to be
/// processed by the function passes and the analyses.
///
/// If not null, the function \p DerivedFrom is the function from which \p F
@@ -120,7 +120,7 @@
PM->addFunctionToWorklist(F, DerivedFrom);
}
- /// \brief Reoptimize the current function by restarting the pass
+ /// Reoptimize the current function by restarting the pass
/// pipeline on it.
void restartPassPipeline() { PM->restartWithCurrentFunction(this); }
diff --git a/include/swift/SILOptimizer/Utils/CFG.h b/include/swift/SILOptimizer/Utils/CFG.h
index fe3581a..13e2532 100644
--- a/include/swift/SILOptimizer/Utils/CFG.h
+++ b/include/swift/SILOptimizer/Utils/CFG.h
@@ -22,7 +22,7 @@
class SILLoop;
class SILLoopInfo;
-/// \brief Adds a new argument to an edge between a branch and a destination
+/// Adds a new argument to an edge between a branch and a destination
/// block.
///
/// \param Branch The terminator to add the argument to.
@@ -33,7 +33,7 @@
TermInst *addNewEdgeValueToBranch(TermInst *Branch, SILBasicBlock *Dest,
SILValue Val);
-/// \brief Changes the edge value between a branch and destination basic block
+/// Changes the edge value between a branch and destination basic block
/// at the specified index. Changes all edges from \p Branch to \p Dest to carry
/// the value.
///
@@ -45,7 +45,7 @@
TermInst *changeEdgeValue(TermInst *Branch, SILBasicBlock *Dest, size_t Idx,
SILValue Val);
-/// \brief Replace a branch target.
+/// Replace a branch target.
///
/// \param T The terminating instruction to modify.
/// \param OldDest The successor block that will be replaced.
@@ -54,10 +54,10 @@
void replaceBranchTarget(TermInst *T, SILBasicBlock *OldDest,
SILBasicBlock *NewDest, bool PreserveArgs);
-/// \brief Check if the edge from the terminator is critical.
+/// Check if the edge from the terminator is critical.
bool isCriticalEdge(TermInst *T, unsigned EdgeIdx);
-/// \brief Splits the edge from terminator if it is critical.
+/// Splits the edge from terminator if it is critical.
///
/// Updates dominance information and loop information if not null.
/// Returns the newly created basic block on success or nullptr otherwise (if
@@ -80,13 +80,13 @@
bool splitCriticalEdgesFrom(SILBasicBlock *fromBB, DominanceInfo *DT = nullptr,
SILLoopInfo *LI = nullptr);
-/// \brief Splits the edges between two basic blocks.
+/// Splits the edges between two basic blocks.
///
/// Updates dominance information and loop information if not null.
void splitEdgesFromTo(SILBasicBlock *From, SILBasicBlock *To,
DominanceInfo *DT = nullptr, SILLoopInfo *LI = nullptr);
-/// \brief Rotate a loop's header as long as it is exiting and not equal to the
+/// Rotate a loop's header as long as it is exiting and not equal to the
/// passed basic block.
/// If \p RotateSingleBlockLoops is true a single basic block loop will be
/// rotated once. ShouldVerify specifies whether to perform verification after
@@ -96,22 +96,22 @@
bool RotateSingleBlockLoops, SILBasicBlock *UpTo,
bool ShouldVerify);
-/// \brief Splits the basic block before the instruction with an unconditional
+/// Splits the basic block before the instruction with an unconditional
/// branch and updates the dominator tree and loop info.
SILBasicBlock *splitBasicBlockAndBranch(SILBuilder &B,
SILInstruction *SplitBeforeInst,
DominanceInfo *DT, SILLoopInfo *LI);
-/// \brief Return true if the function has a critical edge, false otherwise.
+/// Return true if the function has a critical edge, false otherwise.
bool hasCriticalEdges(SILFunction &F, bool OnlyNonCondBr);
-/// \brief Split all critical edges in the given function, updating the
+/// Split all critical edges in the given function, updating the
/// dominator tree and loop information if they are provided.
///
/// FIXME: This should never be called! Fix passes that create critical edges.
bool splitAllCriticalEdges(SILFunction &F, DominanceInfo *DT, SILLoopInfo *LI);
-/// \brief Split all cond_br critical edges with non-trivial arguments in the
+/// Split all cond_br critical edges with non-trivial arguments in the
/// function updating the dominator tree and loop information (if they are not
/// set to null).
///
@@ -121,7 +121,7 @@
DominanceInfo *DT,
SILLoopInfo *LI);
-/// \brief Merge a basic block ending in a branch with its successor
+/// Merge a basic block ending in a branch with its successor
/// if possible. If dominance information or loop info is non null update it.
/// Return true if block was merged.
bool mergeBasicBlockWithSuccessor(SILBasicBlock *BB, DominanceInfo *DT,
@@ -167,7 +167,7 @@
ArrayRef<SILBasicBlock *> UserBlocks, ArrayRef<SILBasicBlock *> DefBlocks,
llvm::SmallVectorImpl<SILBasicBlock *> &Completion);
-/// \brief Remove all unreachable blocks in a function.
+/// Remove all unreachable blocks in a function.
bool removeUnreachableBlocks(SILFunction &Fn);
} // end namespace swift
diff --git a/include/swift/SILOptimizer/Utils/CastOptimizer.h b/include/swift/SILOptimizer/Utils/CastOptimizer.h
index 49f73711..c8d37ad 100644
--- a/include/swift/SILOptimizer/Utils/CastOptimizer.h
+++ b/include/swift/SILOptimizer/Utils/CastOptimizer.h
@@ -30,7 +30,7 @@
class SILOptFunctionBuilder;
-/// \brief This is a helper class used to optimize casts.
+/// This is a helper class used to optimize casts.
class CastOptimizer {
SILOptFunctionBuilder &FunctionBuilder;
diff --git a/include/swift/SILOptimizer/Utils/Local.h b/include/swift/SILOptimizer/Utils/Local.h
index f0348a0..358bc36 100644
--- a/include/swift/SILOptimizer/Utils/Local.h
+++ b/include/swift/SILOptimizer/Utils/Local.h
@@ -44,15 +44,15 @@
using DeadInstructionSet = llvm::SmallSetVector<SILInstruction *, 8>;
-/// \brief Create a retain of \p Ptr before the \p InsertPt.
+/// Create a retain of \p Ptr before the \p InsertPt.
NullablePtr<SILInstruction> createIncrementBefore(SILValue Ptr,
SILInstruction *InsertPt);
-/// \brief Create a release of \p Ptr before the \p InsertPt.
+/// Create a release of \p Ptr before the \p InsertPt.
NullablePtr<SILInstruction> createDecrementBefore(SILValue Ptr,
SILInstruction *InsertPt);
-/// \brief For each of the given instructions, if they are dead delete them
+/// For each of the given instructions, if they are dead delete them
/// along with their dead operands.
///
/// \param I The ArrayRef of instructions to be deleted.
@@ -64,7 +64,7 @@
ArrayRef<SILInstruction*> I, bool Force = false,
llvm::function_ref<void(SILInstruction *)> C = [](SILInstruction *){});
-/// \brief For each of the given instructions, if they are dead delete them
+/// For each of the given instructions, if they are dead delete them
/// along with their dead operands.
///
/// \param I The ArrayRef of instructions to be deleted.
@@ -78,7 +78,7 @@
bool Force = false,
llvm::function_ref<void(SILInstruction *)> C = [](SILInstruction *) {});
-/// \brief If the given instruction is dead, delete it along with its dead
+/// If the given instruction is dead, delete it along with its dead
/// operands.
///
/// \param I The instruction to be deleted.
@@ -92,27 +92,27 @@
SILInstruction *I, bool Force = false,
llvm::function_ref<void(SILInstruction *)> C = [](SILInstruction *) {});
-/// \brief Perform a fast local check to see if the instruction is dead.
+/// Perform a fast local check to see if the instruction is dead.
///
/// This routine only examines the state of the instruction at hand.
bool isInstructionTriviallyDead(SILInstruction *I);
-/// \brief Return true if this is a release instruction that's not going to
+/// Return true if this is a release instruction that's not going to
/// free the object.
bool isIntermediateRelease(SILInstruction *I, EpilogueARCFunctionInfo *ERFI);
-/// \brief Recursively collect all the uses and transitive uses of the
+/// Recursively collect all the uses and transitive uses of the
/// instruction.
void
collectUsesOfValue(SILValue V, llvm::SmallPtrSetImpl<SILInstruction *> &Insts);
-/// \brief Recursively erase all of the uses of the instruction (but not the
+/// Recursively erase all of the uses of the instruction (but not the
/// instruction itself)
void eraseUsesOfInstruction(
SILInstruction *Inst,
llvm::function_ref<void(SILInstruction *)> C = [](SILInstruction *){});
-/// \brief Recursively erase all of the uses of the value (but not the
+/// Recursively erase all of the uses of the value (but not the
/// value itself)
void eraseUsesOfValue(SILValue V);
@@ -140,17 +140,17 @@
/// after \p ABI and returns it.
ProjectBoxInst *getOrCreateProjectBox(AllocBoxInst *ABI, unsigned Index);
-/// \brief Return true if any call inside the given function may bind dynamic
+/// Return true if any call inside the given function may bind dynamic
/// 'Self' to a generic argument of the callee.
bool mayBindDynamicSelf(SILFunction *F);
/// Check whether the \p addr is an address of a tail-allocated array element.
bool isAddressOfArrayElement(SILValue addr);
-/// \brief Move an ApplyInst's FuncRef so that it dominates the call site.
+/// Move an ApplyInst's FuncRef so that it dominates the call site.
void placeFuncRef(ApplyInst *AI, DominanceInfo *DT);
-/// \brief Add an argument, \p val, to the branch-edge that is pointing into
+/// Add an argument, \p val, to the branch-edge that is pointing into
/// block \p Dest. Return a new instruction and do not erase the old
/// instruction.
TermInst *addArgumentToBranch(SILValue Val, SILBasicBlock *Dest,
@@ -163,7 +163,7 @@
/// undef.
void clearBlockBody(SILBasicBlock *BB);
-/// \brief Get the linkage to be used for specializations of a function with
+/// Get the linkage to be used for specializations of a function with
/// the given linkage.
SILLinkage getSpecializedLinkage(SILFunction *F, SILLinkage L);
diff --git a/include/swift/SILOptimizer/Utils/SILSSAUpdater.h b/include/swift/SILOptimizer/Utils/SILSSAUpdater.h
index 695d12e..bff40e2 100644
--- a/include/swift/SILOptimizer/Utils/SILSSAUpdater.h
+++ b/include/swift/SILOptimizer/Utils/SILSSAUpdater.h
@@ -63,16 +63,16 @@
SmallVectorImpl<SILPhiArgument *> *InsertedPHIs = nullptr);
~SILSSAUpdater();
- /// \brief Initialize for a use of a value of type.
+ /// Initialize for a use of a value of type.
void Initialize(SILType T);
bool HasValueForBlock(SILBasicBlock *BB) const;
void AddAvailableValue(SILBasicBlock *BB, SILValue V);
- /// \brief Construct SSA for a value that is live at the *end* of a basic block.
+ /// Construct SSA for a value that is live at the *end* of a basic block.
SILValue GetValueAtEndOfBlock(SILBasicBlock *BB);
- /// \brief Construct SSA for a value that is live in the middle of a block.
+ /// Construct SSA for a value that is live in the middle of a block.
/// This handles the case where the use is before a definition of the value.
/// BB1:
/// val_1 = def
@@ -95,7 +95,7 @@
SILValue GetValueAtEndOfBlockInternal(SILBasicBlock *BB);
};
-/// \brief Utility to wrap 'Operand's to deal with invalidation of
+/// Utility to wrap 'Operand's to deal with invalidation of
/// ValueUseIterators during SSA construction.
///
/// Uses in branches change under us - we need to identify them by an
@@ -123,7 +123,7 @@
public:
- /// \brief Construct a use wrapper. For branches we store information so that
+ /// Construct a use wrapper. For branches we store information so that
/// we can reconstruct the use after the branch has been modified.
///
/// When a branch is modified existing pointers to the operand
diff --git a/include/swift/Sema/IDETypeChecking.h b/include/swift/Sema/IDETypeChecking.h
index c55dbce..4665320 100644
--- a/include/swift/Sema/IDETypeChecking.h
+++ b/include/swift/Sema/IDETypeChecking.h
@@ -11,7 +11,7 @@
//===----------------------------------------------------------------------===//
//
/// \file
-/// \brief Provides extra type-checking entry points for use during code
+/// Provides extra type-checking entry points for use during code
/// completion, which happens *without* type-checking an entire file at once.
//
//===----------------------------------------------------------------------===//
@@ -36,10 +36,10 @@
class ValueDecl;
class DeclName;
- /// \brief Typecheck a declaration parsed during code completion.
+ /// Typecheck a declaration parsed during code completion.
void typeCheckCompletionDecl(Decl *D);
- /// \brief Check if T1 is convertible to T2.
+ /// Check if T1 is convertible to T2.
///
/// \returns true on convertible, false on not.
bool isConvertibleTo(Type T1, Type T2, DeclContext &DC);
@@ -74,7 +74,7 @@
ResolvedMemberResult resolveValueMember(DeclContext &DC, Type BaseTy,
DeclName Name);
- /// \brief Given a type and an extension to the original type decl of that type,
+ /// Given a type and an extension to the original type decl of that type,
/// decide if the extension has been applied, i.e. if the requirements of the
/// extension have been fulfilled.
/// \returns True on applied, false on not applied.
@@ -89,7 +89,7 @@
KeyPath,
};
- /// \brief Return the type of an expression parsed during code completion, or
+ /// Return the type of an expression parsed during code completion, or
/// None on error.
Optional<Type> getTypeOfCompletionContextExpr(
ASTContext &Ctx,
@@ -116,7 +116,7 @@
bool typeCheckAbstractFunctionBodyUntil(AbstractFunctionDecl *AFD,
SourceLoc EndTypeCheckLoc);
- /// \brief Typecheck top-level code parsed during code completion.
+ /// Typecheck top-level code parsed during code completion.
///
/// \returns true on success, false on error.
bool typeCheckTopLevelCodeDecl(TopLevelCodeDecl *TLCD);
diff --git a/include/swift/Sema/SourceLoader.h b/include/swift/Sema/SourceLoader.h
index 87047e2..715bc9f 100644
--- a/include/swift/Sema/SourceLoader.h
+++ b/include/swift/Sema/SourceLoader.h
@@ -20,7 +20,7 @@
class ASTContext;
class ModuleDecl;
-/// \brief Imports serialized Swift modules into an ASTContext.
+/// Imports serialized Swift modules into an ASTContext.
class SourceLoader : public ModuleLoader {
private:
ASTContext &Ctx;
@@ -48,14 +48,14 @@
SourceLoader &operator=(const SourceLoader &) = delete;
SourceLoader &operator=(SourceLoader &&) = delete;
- /// \brief Check whether the module with a given name can be imported without
+ /// Check whether the module with a given name can be imported without
/// importing it.
///
/// Note that even if this check succeeds, errors may still occur if the
/// module is loaded in full.
virtual bool canImportModule(std::pair<Identifier, SourceLoc> named) override;
- /// \brief Import a module with the given module path.
+ /// Import a module with the given module path.
///
/// \param importLoc The location of the 'import' keyword.
///
@@ -68,7 +68,7 @@
loadModule(SourceLoc importLoc,
ArrayRef<std::pair<Identifier, SourceLoc>> path) override;
- /// \brief Load extensions to the given nominal type.
+ /// Load extensions to the given nominal type.
///
/// \param nominal The nominal type whose extensions should be loaded.
///
diff --git a/include/swift/Serialization/DeclTypeRecordNodes.def b/include/swift/Serialization/DeclTypeRecordNodes.def
index cb4ba52..8754c5f 100644
--- a/include/swift/Serialization/DeclTypeRecordNodes.def
+++ b/include/swift/Serialization/DeclTypeRecordNodes.def
@@ -11,7 +11,7 @@
//===----------------------------------------------------------------------===//
//
/// \file
-/// \brief Defines macros used for metaprogramming with the serialized records
+/// Defines macros used for metaprogramming with the serialized records
/// in the "decls-and-types" block of serialized ASTs.
///
/// You should define one of the following sets of macros:
diff --git a/include/swift/Serialization/ModuleFile.h b/include/swift/Serialization/ModuleFile.h
index bcb382b..e0d934b 100644
--- a/include/swift/Serialization/ModuleFile.h
+++ b/include/swift/Serialization/ModuleFile.h
@@ -703,7 +703,7 @@
/// Note that this may cause other decls to load as well.
void loadExtensions(NominalTypeDecl *nominal);
- /// \brief Load the methods within the given class that produce
+ /// Load the methods within the given class that produce
/// Objective-C class or instance methods with the given selector.
///
/// \param classDecl The class in which we are searching for @objc methods.
diff --git a/include/swift/Serialization/ModuleFormat.h b/include/swift/Serialization/ModuleFormat.h
index 4cbb719..4aac6a6 100644
--- a/include/swift/Serialization/ModuleFormat.h
+++ b/include/swift/Serialization/ModuleFormat.h
@@ -11,7 +11,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief Contains various constants and helper types to deal with serialized
+/// Contains various constants and helper types to deal with serialized
/// modules.
///
//===----------------------------------------------------------------------===//
@@ -52,7 +52,7 @@
/// describe what change you made. The content of this comment isn't important;
/// it just ensures a conflict if two people change the module format.
/// Don't worry about adhering to the 80-column limit for this line.
-const uint16_t SWIFTMODULE_VERSION_MINOR = 469; // @_hasStorage
+const uint16_t SWIFTMODULE_VERSION_MINOR = 470; // Last change: Remove @trivial
using DeclIDField = BCFixed<31>;
diff --git a/include/swift/Subsystems.h b/include/swift/Subsystems.h
index 488f7bb..75be094 100644
--- a/include/swift/Subsystems.h
+++ b/include/swift/Subsystems.h
@@ -86,7 +86,7 @@
/// compilation.
bool shouldVerify(const Decl *D, const ASTContext &Context);
- /// \brief Check that the source file is well-formed, aborting and spewing
+ /// Check that the source file is well-formed, aborting and spewing
/// errors if not.
///
/// "Well-formed" here means following the invariants of the AST, not that the
@@ -96,7 +96,7 @@
/// @}
- /// \brief Parse a single buffer into the given source file.
+ /// Parse a single buffer into the given source file.
///
/// If the source file is the main file, stop parsing after the next
/// stmt-brace-item with side-effects.
@@ -121,13 +121,13 @@
PersistentParserState *PersistentState = nullptr,
DelayedParsingCallbacks *DelayedParseCB = nullptr);
- /// \brief Finish the parsing by going over the nodes that were delayed
+ /// Finish the parsing by going over the nodes that were delayed
/// during the first parsing pass.
void performDelayedParsing(DeclContext *DC,
PersistentParserState &PersistentState,
CodeCompletionCallbacksFactory *Factory);
- /// \brief Lex and return a vector of tokens for the given buffer.
+ /// Lex and return a vector of tokens for the given buffer.
std::vector<Token> tokenize(const LangOptions &LangOpts,
const SourceManager &SM, unsigned BufferID,
unsigned Offset = 0, unsigned EndOffset = 0,
@@ -207,7 +207,7 @@
/// Incrementally type-check only added external definitions.
void typeCheckExternalDefinitions(SourceFile &SF);
- /// \brief Recursively validate the specified type.
+ /// Recursively validate the specified type.
///
/// This is used when dealing with partial source files (e.g. SIL parsing,
/// code completion).
@@ -217,7 +217,7 @@
DeclContext *DC,
bool ProduceDiagnostics = true);
- /// \brief Recursively validate the specified type.
+ /// Recursively validate the specified type.
///
/// This is used when dealing with partial source files (e.g. SIL parsing,
/// code completion).
diff --git a/include/swift/SwiftDemangle/SwiftDemangle.h b/include/swift/SwiftDemangle/SwiftDemangle.h
index fefc9d6..a53b1f4 100644
--- a/include/swift/SwiftDemangle/SwiftDemangle.h
+++ b/include/swift/SwiftDemangle/SwiftDemangle.h
@@ -37,7 +37,7 @@
extern "C" {
#endif
-/// \brief Demangle Swift function names.
+/// Demangle Swift function names.
///
/// \returns the length of the demangled function name (even if greater than the
/// size of the output buffer) or 0 if the input is not a Swift-mangled function
@@ -46,7 +46,7 @@
size_t swift_demangle_getDemangledName(const char *MangledName,
char *OutputBuffer, size_t Length);
-/// \brief Demangle Swift function names with module names and implicit self
+/// Demangle Swift function names with module names and implicit self
/// and metatype type names in function signatures stripped.
///
/// \returns the length of the demangled function name (even if greater than the
@@ -57,7 +57,7 @@
char *OutputBuffer,
size_t Length);
-/// \brief Demangles a Swift function name and returns true if the function
+/// Demangles a Swift function name and returns true if the function
/// conforms to the Swift calling convention.
///
/// \returns true if the function conforms to the Swift calling convention.
@@ -88,7 +88,7 @@
extern "C" {
#endif
-/// \brief Demangle Swift function names.
+/// Demangle Swift function names.
///
/// Note that this function has a generic name because it is called from
/// contexts where it is not appropriate to use code names.
diff --git a/include/swift/SwiftRemoteMirror/SwiftRemoteMirrorTypes.h b/include/swift/SwiftRemoteMirror/SwiftRemoteMirrorTypes.h
index ef720b8..83e9daa 100644
--- a/include/swift/SwiftRemoteMirror/SwiftRemoteMirrorTypes.h
+++ b/include/swift/SwiftRemoteMirror/SwiftRemoteMirrorTypes.h
@@ -26,13 +26,13 @@
typedef uintptr_t swift_typeref_t;
-/// \brief Represents one of the Swift reflection sections of an image.
+/// Represents one of the Swift reflection sections of an image.
typedef struct swift_reflection_section {
void *Begin;
void *End;
} swift_reflection_section_t;
-/// \brief Represents the set of Swift reflection sections of an image.
+/// Represents the set of Swift reflection sections of an image.
/// Not all sections may be present.
typedef struct swift_reflection_info {
struct {
@@ -140,7 +140,7 @@
swift_typeref_t TR;
} swift_childinfo_t;
-/// \brief An opaque pointer to a context which maintains state and
+/// An opaque pointer to a context which maintains state and
/// caching of reflection structure for heap instances.
typedef struct SwiftReflectionContext *SwiftReflectionContextRef;
diff --git a/lib/AST/ASTContext.cpp b/lib/AST/ASTContext.cpp
index 1589086..4675171 100644
--- a/lib/AST/ASTContext.cpp
+++ b/lib/AST/ASTContext.cpp
@@ -219,23 +219,23 @@
// -> Builtin.Int1
FuncDecl *IsOSVersionAtLeastDecl = nullptr;
- /// \brief The set of known protocols, lazily populated as needed.
+ /// The set of known protocols, lazily populated as needed.
ProtocolDecl *KnownProtocols[NumKnownProtocols] = { };
- /// \brief The various module loaders that import external modules into this
+ /// The various module loaders that import external modules into this
/// ASTContext.
SmallVector<std::unique_ptr<swift::ModuleLoader>, 4> ModuleLoaders;
- /// \brief The module loader used to load Clang modules.
+ /// The module loader used to load Clang modules.
ClangModuleLoader *TheClangModuleLoader = nullptr;
- /// \brief Map from Swift declarations to raw comments.
+ /// Map from Swift declarations to raw comments.
llvm::DenseMap<const Decl *, RawComment> RawComments;
- /// \brief Map from Swift declarations to brief comments.
+ /// Map from Swift declarations to brief comments.
llvm::DenseMap<const Decl *, StringRef> BriefComments;
- /// \brief Map from declarations to foreign error conventions.
+ /// Map from declarations to foreign error conventions.
/// This applies to both actual imported functions and to @objc functions.
llvm::DenseMap<const AbstractFunctionDecl *,
ForeignErrorConvention> ForeignErrorConventions;
@@ -290,7 +290,7 @@
ProtocolConformanceRef>
DefaultAssociatedConformanceWitnesses;
- /// \brief Structure that captures data that is segregated into different
+ /// Structure that captures data that is segregated into different
/// arenas.
struct Arena {
llvm::DenseMap<Type, ErrorType *> ErrorTypesWithOriginal;
@@ -391,7 +391,7 @@
llvm::StringMap<OptionSet<SearchPathKind>> SearchPathsSet;
- /// \brief The permanent arena.
+ /// The permanent arena.
Arena Permanent;
/// Temporary arena used for a constraint solver.
@@ -408,7 +408,7 @@
ConstraintSolverArena &operator=(ConstraintSolverArena &&) = delete;
};
- /// \brief The current constraint solver arena, if any.
+ /// The current constraint solver arena, if any.
std::unique_ptr<ConstraintSolverArena> CurrentConstraintSolverArena;
Arena &getArena(AllocationArena arena) {
@@ -1380,6 +1380,7 @@
void ASTContext::addSynthesizedDecl(Decl *decl) {
auto *mod = cast<FileUnit>(decl->getDeclContext()->getModuleScopeContext());
if (mod->getKind() == FileUnitKind::ClangModule ||
+ mod->getKind() == FileUnitKind::DWARFModule ||
mod->getKind() == FileUnitKind::SerializedAST) {
ExternalDefinitions.insert(decl);
return;
@@ -1396,7 +1397,7 @@
return Diags.hadAnyError();
}
-/// \brief Retrieve the arena from which we should allocate storage for a type.
+/// Retrieve the arena from which we should allocate storage for a type.
static AllocationArena getArena(RecursiveTypeProperties properties) {
bool hasTypeVariable = properties.hasTypeVariable();
return hasTypeVariable? AllocationArena::ConstraintSolver
@@ -1422,11 +1423,10 @@
void ASTContext::addModuleLoader(std::unique_ptr<ModuleLoader> loader,
bool IsClang) {
- if (IsClang) {
- assert(!getImpl().TheClangModuleLoader && "Already have a Clang module loader");
+ if (IsClang && !getImpl().TheClangModuleLoader)
getImpl().TheClangModuleLoader =
- static_cast<ClangModuleLoader *>(loader.get());
- }
+ static_cast<ClangModuleLoader *>(loader.get());
+
getImpl().ModuleLoaders.push_back(std::move(loader));
}
diff --git a/lib/AST/ASTMangler.cpp b/lib/AST/ASTMangler.cpp
index e621748..12d74ed 100644
--- a/lib/AST/ASTMangler.cpp
+++ b/lib/AST/ASTMangler.cpp
@@ -1309,7 +1309,8 @@
// Clang decls. Check getKind() directly to avoid a layering dependency.
// known-context ::= 'SC'
if (auto file = dyn_cast<FileUnit>(decl->getDeclContext())) {
- if (file->getKind() == FileUnitKind::ClangModule) {
+ if (file->getKind() == FileUnitKind::ClangModule ||
+ file->getKind() == FileUnitKind::DWARFModule) {
if (decl->getClangDecl())
return ASTMangler::ObjCContext;
return ASTMangler::ClangImporterContext;
@@ -2273,7 +2274,8 @@
bool needsModule = true;
if (auto *file = dyn_cast<FileUnit>(topLevelContext)) {
- if (file->getKind() == FileUnitKind::ClangModule) {
+ if (file->getKind() == FileUnitKind::ClangModule ||
+ file->getKind() == FileUnitKind::DWARFModule) {
if (conformance->getProtocol()->hasClangNode())
appendOperator("So");
else
diff --git a/lib/AST/ASTNode.cpp b/lib/AST/ASTNode.cpp
index f182f01..b5af788 100644
--- a/lib/AST/ASTNode.cpp
+++ b/lib/AST/ASTNode.cpp
@@ -32,12 +32,12 @@
llvm_unreachable("unsupported AST node");
}
-/// \brief Return the location of the start of the statement.
+/// Return the location of the start of the statement.
SourceLoc ASTNode::getStartLoc() const {
return getSourceRange().Start;
}
-/// \brief Return the location of the end of the statement.
+/// Return the location of the end of the statement.
SourceLoc ASTNode::getEndLoc() const {
return getSourceRange().End;
}
diff --git a/lib/AST/ASTPrinter.cpp b/lib/AST/ASTPrinter.cpp
index 1c6f0b7..50bc61f 100644
--- a/lib/AST/ASTPrinter.cpp
+++ b/lib/AST/ASTPrinter.cpp
@@ -418,7 +418,7 @@
}
namespace {
-/// \brief AST pretty-printer.
+/// AST pretty-printer.
class PrintAST : public ASTVisitor<PrintAST> {
ASTPrinter &Printer;
PrintOptions Options;
@@ -428,7 +428,7 @@
friend DeclVisitor<PrintAST>;
- /// \brief RAII object that increases the indentation level.
+ /// RAII object that increases the indentation level.
class IndentRAII {
PrintAST &Self;
bool DoIndent;
@@ -446,12 +446,12 @@
}
};
- /// \brief Indent the current number of indentation spaces.
+ /// Indent the current number of indentation spaces.
void indent() {
Printer.setIndent(IndentLevel);
}
- /// \brief Record the location of this declaration, which is about to
+ /// Record the location of this declaration, which is about to
/// be printed, marking the name and signature end locations.
template<typename FnTy>
void recordDeclLoc(Decl *decl, const FnTy &NameFn,
@@ -758,7 +758,7 @@
ArrayRef<AnyFunctionType::Param> params,
bool isAPINameByDefault);
- /// \brief Print the function parameters in curried or selector style,
+ /// Print the function parameters in curried or selector style,
/// to match the original function declaration.
void printFunctionParameters(AbstractFunctionDecl *AFD);
@@ -1406,13 +1406,10 @@
}
} else {
Printer.callPrintStructurePre(PrintStructureKind::GenericRequirement);
- if (second) {
- Requirement substReq(req.getKind(), first, second);
- printRequirement(substReq);
- } else {
- Requirement substReq(req.getKind(), first, req.getLayoutConstraint());
- printRequirement(substReq);
- }
+
+ // We don't substitute type for the printed requirement so that the
+ // printed requirement agrees with separately reported generic parameters.
+ printRequirement(req);
Printer.printStructurePost(PrintStructureKind::GenericRequirement);
}
}
@@ -3354,7 +3351,8 @@
// Don't print qualifiers for imported types.
for (auto File : M->getFiles()) {
- if (File->getKind() == FileUnitKind::ClangModule)
+ if (File->getKind() == FileUnitKind::ClangModule ||
+ File->getKind() == FileUnitKind::DWARFModule)
return false;
}
@@ -4160,11 +4158,15 @@
void GenericSignature::print(raw_ostream &OS, PrintOptions Opts) const {
StreamPrinter Printer(OS);
- PrintAST(Printer, Opts)
- .printGenericSignature(this,
- PrintAST::PrintParams |
- PrintAST::PrintRequirements);
+ print(Printer, Opts);
}
+
+void GenericSignature::print(ASTPrinter &Printer, PrintOptions Opts) const {
+ PrintAST(Printer, Opts).printGenericSignature(this,
+ PrintAST::PrintParams |
+ PrintAST::PrintRequirements);
+}
+
void GenericSignature::dump() const {
print(llvm::errs());
llvm::errs() << '\n';
diff --git a/lib/AST/ASTVerifier.cpp b/lib/AST/ASTVerifier.cpp
index e989eb2..496d6aa 100644
--- a/lib/AST/ASTVerifier.cpp
+++ b/lib/AST/ASTVerifier.cpp
@@ -222,20 +222,20 @@
const bool HadError;
SmallVector<bool, 8> InImplicitBraceStmt;
- /// \brief The stack of functions we're visiting.
+ /// The stack of functions we're visiting.
SmallVector<DeclContext *, 4> Functions;
- /// \brief The stack of scopes we're visiting.
+ /// The stack of scopes we're visiting.
using ScopeLike = llvm::PointerUnion<DeclContext *, BraceStmt *>;
SmallVector<ScopeLike, 4> Scopes;
/// The stack of generic environments.
SmallVector<LazyGenericEnvironment, 2> GenericEnv;
- /// \brief The stack of optional evaluations active at this point.
+ /// The stack of optional evaluations active at this point.
SmallVector<OptionalEvaluationExpr *, 4> OptionalEvaluations;
- /// \brief The set of opaque value expressions active at this point.
+ /// The set of opaque value expressions active at this point.
llvm::DenseMap<OpaqueValueExpr *, unsigned> OpaqueValues;
/// The set of opened existential archetypes that are currently
@@ -3580,7 +3580,7 @@
[&]{ D->print(Out); });
}
- /// \brief Verify that the given source ranges is contained within the
+ /// Verify that the given source ranges is contained within the
/// parent's source range.
void checkSourceRanges(SourceRange Current, ASTWalker::ParentTy Parent,
llvm::function_ref<void()> printEntity) {
diff --git a/lib/AST/ASTWalker.cpp b/lib/AST/ASTWalker.cpp
index c9b0610..a7f391d 100644
--- a/lib/AST/ASTWalker.cpp
+++ b/lib/AST/ASTWalker.cpp
@@ -75,7 +75,7 @@
ASTWalker &Walker;
- /// \brief RAII object that sets the parent of the walk context
+ /// RAII object that sets the parent of the walk context
/// appropriately.
class SetParentRAII {
ASTWalker &Walker;
diff --git a/lib/AST/Decl.cpp b/lib/AST/Decl.cpp
index 3fc2e04..a727882 100644
--- a/lib/AST/Decl.cpp
+++ b/lib/AST/Decl.cpp
@@ -3910,15 +3910,22 @@
return Bits.ProtocolDecl.RequiresClass;
}
+bool ProtocolDecl::requiresSelfConformanceWitnessTable() const {
+ return isSpecificProtocol(KnownProtocolKind::Error);
+}
+
bool ProtocolDecl::existentialConformsToSelfSlow() {
// Assume for now that the existential conforms to itself; this
// prevents circularity issues.
Bits.ProtocolDecl.ExistentialConformsToSelfValid = true;
Bits.ProtocolDecl.ExistentialConformsToSelf = true;
+ // If it's not @objc, it conforms to itself only if it has a
+ // self-conformance witness table.
if (!isObjC()) {
- Bits.ProtocolDecl.ExistentialConformsToSelf = false;
- return false;
+ bool hasSelfConformance = requiresSelfConformanceWitnessTable();
+ Bits.ProtocolDecl.ExistentialConformsToSelf = hasSelfConformance;
+ return hasSelfConformance;
}
// Check whether this protocol conforms to itself.
@@ -4567,7 +4574,7 @@
setInterfaceType(ErrorType::get(Ctx));
}
-/// \brief Returns whether the var is settable in the specified context: this
+/// Returns whether the var is settable in the specified context: this
/// is either because it is a stored var, because it has a custom setter, or
/// is a let member in an initializer.
bool VarDecl::isSettable(const DeclContext *UseDC,
@@ -4898,7 +4905,7 @@
}
-/// \brief Retrieve the type of 'self' for the given context.
+/// Retrieve the type of 'self' for the given context.
Type DeclContext::getSelfTypeInContext() const {
assert(isTypeContext());
@@ -4912,7 +4919,7 @@
return getDeclaredTypeInContext();
}
-/// \brief Retrieve the interface type of 'self' for the given context.
+/// Retrieve the interface type of 'self' for the given context.
Type DeclContext::getSelfInterfaceType() const {
assert(isTypeContext());
diff --git a/lib/AST/DeclContext.cpp b/lib/AST/DeclContext.cpp
index 07d3223..05be882 100644
--- a/lib/AST/DeclContext.cpp
+++ b/lib/AST/DeclContext.cpp
@@ -537,6 +537,7 @@
break;
case FileUnitKind::SerializedAST:
case FileUnitKind::ClangModule:
+ case FileUnitKind::DWARFModule:
OS << " file=\"" << cast<LoadedFile>(this)->getFilename() << "\"";
break;
}
diff --git a/lib/AST/DiagnosticEngine.cpp b/lib/AST/DiagnosticEngine.cpp
index 0d84111..61d031b 100644
--- a/lib/AST/DiagnosticEngine.cpp
+++ b/lib/AST/DiagnosticEngine.cpp
@@ -113,14 +113,14 @@
return CharSourceRange(SM, Start, End);
}
-/// \brief Extract a character at \p Loc. If \p Loc is the end of the buffer,
+/// Extract a character at \p Loc. If \p Loc is the end of the buffer,
/// return '\f'.
static char extractCharAfter(SourceManager &SM, SourceLoc Loc) {
auto chars = SM.extractText({Loc, 1});
return chars.empty() ? '\f' : chars[0];
}
-/// \brief Extract a character immediately before \p Loc. If \p Loc is the
+/// Extract a character immediately before \p Loc. If \p Loc is the
/// start of the buffer, return '\f'.
static char extractCharBefore(SourceManager &SM, SourceLoc Loc) {
// We have to be careful not to go off the front of the buffer.
@@ -150,7 +150,7 @@
return *this;
}
-/// \brief Add an insertion fix-it to the currently-active diagnostic. The
+/// Add an insertion fix-it to the currently-active diagnostic. The
/// text is inserted immediately *after* the token specified.
///
InFlightDiagnostic &InFlightDiagnostic::fixItInsertAfter(SourceLoc L,
@@ -159,7 +159,7 @@
return fixItInsert(L, Str);
}
-/// \brief Add a token-based removal fix-it to the currently-active
+/// Add a token-based removal fix-it to the currently-active
/// diagnostic.
InFlightDiagnostic &InFlightDiagnostic::fixItRemove(SourceRange R) {
assert(IsActive && "Cannot modify an inactive diagnostic");
@@ -261,7 +261,7 @@
return hadError;
}
-/// \brief Skip forward to one of the given delimiters.
+/// Skip forward to one of the given delimiters.
///
/// \param Text The text to search through, which will be updated to point
/// just after the delimiter.
@@ -385,7 +385,7 @@
return true;
}
-/// \brief Format a single diagnostic argument and write it to the given
+/// Format a single diagnostic argument and write it to the given
/// stream.
static void formatDiagnosticArgument(StringRef Modifier,
StringRef ModifierArguments,
@@ -529,7 +529,7 @@
}
}
-/// \brief Format the given diagnostic text and place the result in the given
+/// Format the given diagnostic text and place the result in the given
/// buffer.
void DiagnosticEngine::formatDiagnosticText(
llvm::raw_ostream &Out, StringRef InText, ArrayRef<DiagnosticArgument> Args,
diff --git a/lib/AST/LookupVisibleDecls.cpp b/lib/AST/LookupVisibleDecls.cpp
index 8acde2c..b227443 100644
--- a/lib/AST/LookupVisibleDecls.cpp
+++ b/lib/AST/LookupVisibleDecls.cpp
@@ -216,7 +216,7 @@
removeShadowedDecls(FoundDecls, CurrDC->getParentModule());
}
-/// \brief Enumerate immediate members of the type \c LookupType and its
+/// Enumerate immediate members of the type \c LookupType and its
/// extensions, as seen from the context \c CurrDC.
///
/// Don't do lookup into superclasses or implemented protocols. Uses
@@ -920,7 +920,7 @@
};
} // end anonymous namespace
-/// \brief Enumerate all members in \c BaseTy (including members of extensions,
+/// Enumerate all members in \c BaseTy (including members of extensions,
/// superclasses and implemented protocols), as seen from the context \c CurrDC.
///
/// This operation corresponds to a standard "dot" lookup operation like "a.b"
diff --git a/lib/AST/Module.cpp b/lib/AST/Module.cpp
index 53c091d..a76b32e 100644
--- a/lib/AST/Module.cpp
+++ b/lib/AST/Module.cpp
@@ -585,6 +585,15 @@
// existential to an archetype parameter, so for now we restrict this to
// @objc protocols.
if (!layout.isObjC()) {
+ // There's a specific exception for protocols with self-conforming
+ // witness tables, but the existential has to be *exactly* that type.
+ // TODO: synthesize witness tables on-demand for protocol compositions
+ // that can satisfy the requirement.
+ if (protocol->requiresSelfConformanceWitnessTable() &&
+ type->is<ProtocolType>() &&
+ type->castTo<ProtocolType>()->getDecl() == protocol)
+ return ProtocolConformanceRef(protocol);
+
return None;
}
@@ -676,7 +685,7 @@
auto nominal = type->getAnyNominal();
// If we don't have a nominal type, there are no conformances.
- if (!nominal) return None;
+ if (!nominal || isa<ProtocolDecl>(nominal)) return None;
// Find the (unspecialized) conformance.
SmallVector<ProtocolConformance *, 2> conformances;
@@ -876,6 +885,7 @@
break;
case FileUnitKind::SerializedAST:
case FileUnitKind::ClangModule:
+ case FileUnitKind::DWARFModule:
return OperatorLookup<OP_DECL>::lookup(cast<LoadedFile>(File), Name);
}
diff --git a/lib/AST/NameLookup.cpp b/lib/AST/NameLookup.cpp
index 6f46836..f2a4629 100644
--- a/lib/AST/NameLookup.cpp
+++ b/lib/AST/NameLookup.cpp
@@ -1250,10 +1250,10 @@
/// Update a lookup table with members from newly-added extensions.
void updateLookupTable(NominalTypeDecl *nominal);
- /// \brief Add the given member to the lookup table.
+ /// Add the given member to the lookup table.
void addMember(Decl *members);
- /// \brief Add the given members to the lookup table.
+ /// Add the given members to the lookup table.
void addMembers(DeclRange members);
/// Iterator into the lookup table.
@@ -1290,7 +1290,7 @@
dump(llvm::errs());
}
- // \brief Mark all Decls in this table as not-resident in a table, drop
+ // Mark all Decls in this table as not-resident in a table, drop
// references to them. Should only be called when this was not fully-populated
// from an IterableDeclContext.
void clear() {
diff --git a/lib/AST/Pattern.cpp b/lib/AST/Pattern.cpp
index 94c0f8d..81a2ad4 100644
--- a/lib/AST/Pattern.cpp
+++ b/lib/AST/Pattern.cpp
@@ -194,7 +194,7 @@
} // end anonymous namespace
-/// \brief apply the specified function to all variables referenced in this
+/// apply the specified function to all variables referenced in this
/// pattern.
void Pattern::forEachVariable(llvm::function_ref<void(VarDecl *)> fn) const {
switch (getKind()) {
@@ -239,7 +239,7 @@
}
}
-/// \brief apply the specified function to all pattern nodes recursively in
+/// apply the specified function to all pattern nodes recursively in
/// this pattern. This is a pre-order traversal.
void Pattern::forEachNode(llvm::function_ref<void(Pattern*)> f) {
f(this);
diff --git a/lib/AST/ProtocolConformance.cpp b/lib/AST/ProtocolConformance.cpp
index d40616d..3d61508 100644
--- a/lib/AST/ProtocolConformance.cpp
+++ b/lib/AST/ProtocolConformance.cpp
@@ -1297,7 +1297,8 @@
// via the Clang importer, don't add any synthesized conformances.
auto *file = cast<FileUnit>(getModuleScopeContext());
if (file->getKind() != FileUnitKind::Source &&
- file->getKind() != FileUnitKind::ClangModule) {
+ file->getKind() != FileUnitKind::ClangModule &&
+ file->getKind() != FileUnitKind::DWARFModule) {
return;
}
@@ -1432,9 +1433,12 @@
if (!nominal)
return result;
- // Protocols don't have conformances.
- if (isa<ProtocolDecl>(nominal))
+ // Protocols only have self-conformances.
+ if (auto protocol = dyn_cast<ProtocolDecl>(nominal)) {
+ if (protocol->requiresSelfConformanceWitnessTable())
+ return { protocol->getASTContext().getSelfConformance(protocol) };
return { };
+ }
// Update to record all potential conformances.
nominal->prepareConformanceTable();
diff --git a/lib/AST/Type.cpp b/lib/AST/Type.cpp
index 9406e42..1f40279 100644
--- a/lib/AST/Type.cpp
+++ b/lib/AST/Type.cpp
@@ -542,7 +542,7 @@
return false;
}
-/// \brief Check if this type is equal to Swift.Bool.
+/// Check if this type is equal to Swift.Bool.
bool TypeBase::isBool() {
if (auto NTD = getAnyNominal())
if (isa<StructDecl>(NTD))
@@ -864,7 +864,7 @@
return this;
}
-/// \brief Collect the protocols in the existential type T into the given
+/// Collect the protocols in the existential type T into the given
/// vector.
static void addProtocols(Type T,
SmallVectorImpl<ProtocolDecl *> &Protocols,
@@ -890,7 +890,7 @@
Superclass = T;
}
-/// \brief Add the protocol (or protocols) in the type T to the stack of
+/// Add the protocol (or protocols) in the type T to the stack of
/// protocols, checking whether any of the protocols had already been seen and
/// zapping those in the original list that we find again.
static void
@@ -2474,7 +2474,7 @@
}
namespace {
- /// \brief Function object that orders archetypes by name.
+ /// Function object that orders archetypes by name.
struct OrderArchetypeByName {
bool operator()(std::pair<Identifier, Type> X,
std::pair<Identifier, Type> Y) const {
diff --git a/lib/Basic/Default/TaskQueue.inc b/lib/Basic/Default/TaskQueue.inc
index a01843e..a9e4a75 100644
--- a/lib/Basic/Default/TaskQueue.inc
+++ b/lib/Basic/Default/TaskQueue.inc
@@ -11,7 +11,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief This file contains a platform-agnostic implementation of TaskQueue
+/// This file contains a platform-agnostic implementation of TaskQueue
/// using the functions from llvm/Support/Program.h.
///
/// \note The default implementation of TaskQueue does not support parallel
diff --git a/lib/Basic/TaskQueue.cpp b/lib/Basic/TaskQueue.cpp
index 4573d2c..6f18d0f 100644
--- a/lib/Basic/TaskQueue.cpp
+++ b/lib/Basic/TaskQueue.cpp
@@ -11,7 +11,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief This file includes the appropriate platform-specific TaskQueue
+/// This file includes the appropriate platform-specific TaskQueue
/// implementation (or the default serial fallback if one is not available),
/// as well as any platform-agnostic TaskQueue functionality.
///
diff --git a/lib/Basic/Unix/TaskQueue.inc b/lib/Basic/Unix/TaskQueue.inc
index 07410f9..9afe1eb 100644
--- a/lib/Basic/Unix/TaskQueue.inc
+++ b/lib/Basic/Unix/TaskQueue.inc
@@ -123,18 +123,18 @@
int getPipe() const { return Pipe; }
int getErrorPipe() const { return ErrorPipe; }
- /// \brief Begins execution of this Task.
+ /// Begins execution of this Task.
/// \returns true on error.
bool execute();
- /// \brief Reads data from the pipes, if any is available.
+ /// Reads data from the pipes, if any is available.
///
/// If \p UntilEnd is true, reads until the end of the stream; otherwise reads
/// once (possibly with a retry on EINTR), and returns.
/// \returns true on error.
bool readFromPipes(bool UntilEnd);
- /// \brief Performs any post-execution work for this Task, such as reading
+ /// Performs any post-execution work for this Task, such as reading
/// piped output and closing the pipe.
void finishExecution();
};
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index 5a66ddb..4f25fbb 100644
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -19,6 +19,7 @@
add_subdirectory(ClangImporter)
add_subdirectory(Demangling)
add_subdirectory(Driver)
+add_subdirectory(DWARFImporter)
add_subdirectory(Frontend)
add_subdirectory(FrontendTool)
add_subdirectory(Index)
diff --git a/lib/ClangImporter/ImportDecl.cpp b/lib/ClangImporter/ImportDecl.cpp
index c601288..efb58c1 100644
--- a/lib/ClangImporter/ImportDecl.cpp
+++ b/lib/ClangImporter/ImportDecl.cpp
@@ -203,7 +203,7 @@
}
#endif
-/// \brief Map a well-known C type to a swift type from the standard library.
+/// Map a well-known C type to a swift type from the standard library.
///
/// \param IsError set to true when we know the corresponding swift type name,
/// but we could not find it. (For example, the type was not defined in the
@@ -1187,7 +1187,7 @@
return constructor;
}
-/// \brief Create a constructor that initializes a struct from its members.
+/// Create a constructor that initializes a struct from its members.
static ConstructorDecl *
createValueConstructor(ClangImporter::Implementation &Impl,
StructDecl *structDecl, ArrayRef<VarDecl *> members,
@@ -2005,7 +2005,7 @@
}
};
- /// \brief Convert Clang declarations into the corresponding Swift
+ /// Convert Clang declarations into the corresponding Swift
/// declarations.
class SwiftDeclConverter
: public clang::ConstDeclVisitor<SwiftDeclConverter, Decl *>
@@ -2093,7 +2093,7 @@
return alternateName;
}
- /// \brief Create a declaration name for anonymous enums, unions and
+ /// Create a declaration name for anonymous enums, unions and
/// structs.
///
/// Since Swift does not natively support these features, we fake them by
@@ -4110,7 +4110,7 @@
/// Record the function or initializer overridden by the given Swift method.
void recordObjCOverride(AbstractFunctionDecl *decl);
- /// \brief Given an imported method, try to import it as a constructor.
+ /// Given an imported method, try to import it as a constructor.
///
/// Objective-C methods in the 'init' family are imported as
/// constructors in Swift, enabling object construction syntax, e.g.,
@@ -4136,7 +4136,7 @@
const clang::ObjCMethodDecl *objcMethod,
CtorInitializerKind kind);
- /// \brief Given an imported method, try to import it as a constructor.
+ /// Given an imported method, try to import it as a constructor.
///
/// Objective-C methods in the 'init' family are imported as
/// constructors in Swift, enabling object construction syntax, e.g.,
@@ -4161,7 +4161,7 @@
void recordObjCOverride(SubscriptDecl *subscript);
- /// \brief Given either the getter or setter for a subscript operation,
+ /// Given either the getter or setter for a subscript operation,
/// create the Swift subscript declaration.
SubscriptDecl *importSubscript(Decl *decl,
const clang::ObjCMethodDecl *objcMethod);
@@ -4199,7 +4199,7 @@
importObjCGenericParams(const clang::ObjCInterfaceDecl *decl,
DeclContext *dc);
- /// \brief Import the members of all of the protocols to which the given
+ /// Import the members of all of the protocols to which the given
/// Objective-C class, category, or extension explicitly conforms into
/// the given list of members, so long as the method was not already
/// declared in the class.
@@ -4220,7 +4220,7 @@
MutableArrayRef<MirroredMethodEntry> entries,
SmallVectorImpl<Decl *> &newMembers);
- /// \brief Import constructors from our superclasses (and their
+ /// Import constructors from our superclasses (and their
/// categories/extensions), effectively "inheriting" constructors.
void importInheritedConstructors(ClassDecl *classDecl,
SmallVectorImpl<Decl *> &newMembers);
@@ -6005,7 +6005,7 @@
return false;
}
-/// \brief Given an imported method, try to import it as a constructor.
+/// Given an imported method, try to import it as a constructor.
///
/// Objective-C methods in the 'init' family are imported as
/// constructors in Swift, enabling object construction syntax, e.g.,
@@ -6363,7 +6363,7 @@
}
}
-/// \brief Given either the getter or setter for a subscript operation,
+/// Given either the getter or setter for a subscript operation,
/// create the Swift subscript declaration.
SubscriptDecl *
SwiftDeclConverter::importSubscript(Decl *decl,
@@ -8246,7 +8246,7 @@
return var;
}
-/// \brief Create a decl with error type and an "unavailable" attribute on it
+/// Create a decl with error type and an "unavailable" attribute on it
/// with the specified message.
void ClangImporter::Implementation::
markUnavailable(ValueDecl *decl, StringRef unavailabilityMsgRef) {
@@ -8257,7 +8257,7 @@
decl->getAttrs().add(ua);
}
-/// \brief Create a decl with error type and an "unavailable" attribute on it
+/// Create a decl with error type and an "unavailable" attribute on it
/// with the specified message.
ValueDecl *ClangImporter::Implementation::
createUnavailableDecl(Identifier name, DeclContext *dc, Type type,
diff --git a/lib/ClangImporter/ImportName.cpp b/lib/ClangImporter/ImportName.cpp
index c12904a..ce7faf3 100644
--- a/lib/ClangImporter/ImportName.cpp
+++ b/lib/ClangImporter/ImportName.cpp
@@ -265,7 +265,7 @@
return OTK_ImplicitlyUnwrappedOptional;
}
-/// \brief Determine whether the given name is reserved for Swift.
+/// Determine whether the given name is reserved for Swift.
static bool isSwiftReservedName(StringRef name) {
tok kind = Lexer::kindOfIdentifier(name, /*InSILMode=*/false);
return (kind != tok::identifier);
diff --git a/lib/ClangImporter/ImporterImpl.h b/lib/ClangImporter/ImporterImpl.h
index ec93cf0..c0eb95c 100644
--- a/lib/ClangImporter/ImporterImpl.h
+++ b/lib/ClangImporter/ImporterImpl.h
@@ -82,60 +82,60 @@
class SubscriptDecl;
class ValueDecl;
-/// \brief Describes the kind of conversion to apply to a constant value.
+/// Describes the kind of conversion to apply to a constant value.
enum class ConstantConvertKind {
- /// \brief No conversion required.
+ /// No conversion required.
None,
- /// \brief Coerce the constant to the given type.
+ /// Coerce the constant to the given type.
Coerce,
- /// \brief Construct the given type from the constant value.
+ /// Construct the given type from the constant value.
Construction,
- /// \brief Construct the given type from the constant value, using an
+ /// Construct the given type from the constant value, using an
/// optional initializer.
ConstructionWithUnwrap,
- /// \brief Perform an unchecked downcast to the given type.
+ /// Perform an unchecked downcast to the given type.
Downcast
};
-/// \brief Describes the kind of type import we're performing.
+/// Describes the kind of type import we're performing.
enum class ImportTypeKind {
- /// \brief Import a type in its most abstract form, without any adjustment.
+ /// Import a type in its most abstract form, without any adjustment.
Abstract,
- /// \brief Import the underlying type of a typedef.
+ /// Import the underlying type of a typedef.
Typedef,
- /// \brief Import the type of a literal value.
+ /// Import the type of a literal value.
Value,
- /// \brief Import the type of an Objective-C generic argument.
+ /// Import the type of an Objective-C generic argument.
ObjCCollectionElement,
- /// \brief Import the declared type of a variable.
+ /// Import the declared type of a variable.
Variable,
- /// \brief Import the declared type of an audited variable.
+ /// Import the declared type of an audited variable.
///
/// This is exactly like ImportTypeKind::Variable, except it
/// disables wrapping CF class types in Unmanaged.
AuditedVariable,
- /// \brief Import the declared type of a struct or union field.
+ /// Import the declared type of a struct or union field.
RecordField,
- /// \brief Import the result type of a function.
+ /// Import the result type of a function.
///
/// This provides special treatment for 'void', among other things, and
/// enables the conversion of bridged types.
Result,
- /// \brief Import the result type of an audited function.
+ /// Import the result type of an audited function.
///
/// This is exactly like ImportTypeKind::Result, except it
/// disables wrapping CF class types in Unmanaged.
AuditedResult,
- /// \brief Import the type of a function parameter.
+ /// Import the type of a function parameter.
///
/// This provides special treatment for C++ references (which become
/// [inout] parameters) and C pointers (which become magic [inout]-able types),
@@ -143,39 +143,39 @@
/// Parameters are always considered CF-audited.
Parameter,
- /// \brief Import the type of a parameter declared with
+ /// Import the type of a parameter declared with
/// \c CF_RETURNS_RETAINED.
///
/// This ensures that the parameter is not marked as Unmanaged.
CFRetainedOutParameter,
- /// \brief Import the type of a parameter declared with
+ /// Import the type of a parameter declared with
/// \c CF_RETURNS_NON_RETAINED.
///
/// This ensures that the parameter is not marked as Unmanaged.
CFUnretainedOutParameter,
- /// \brief Import the type pointed to by a pointer or reference.
+ /// Import the type pointed to by a pointer or reference.
///
/// This provides special treatment for pointer-to-ObjC-pointer
/// types, which get imported as pointers to *checked* optional,
/// *Pointer<NSFoo?>, instead of implicitly unwrapped optional as usual.
Pointee,
- /// \brief Import the type of an ObjC property.
+ /// Import the type of an ObjC property.
///
/// This enables the conversion of bridged types. Properties are always
/// considered CF-audited.
Property,
- /// \brief Import the type of an ObjC property accessor marked 'weak',
+ /// Import the type of an ObjC property accessor marked 'weak',
/// 'assign', or 'unsafe_unretained'.
///
/// Like Property, but doesn't allow bridging to a value type, since that
/// would discard the ownership.
PropertyWithReferenceSemantics,
- /// \brief Import the underlying type of an enum.
+ /// Import the underlying type of an enum.
///
/// This provides special treatment for 'NSUInteger'.
Enum
@@ -196,7 +196,7 @@
: Bridgeability::None;
}
-/// \brief Describes the kind of the C type that can be mapped to a stdlib
+/// Describes the kind of the C type that can be mapped to a stdlib
/// swift type.
enum class MappedCTypeKind {
UnsignedInt,
@@ -215,7 +215,7 @@
Block,
};
-/// \brief Describes what to do with the C name of a type that can be mapped to
+/// Describes what to do with the C name of a type that can be mapped to
/// a Swift standard library type.
enum class MappedTypeNameKind {
DoNothing,
@@ -223,7 +223,7 @@
DefineAndUse
};
-/// \brief Describes certain kinds of methods that need to be specially
+/// Describes certain kinds of methods that need to be specially
/// handled by the importer.
enum class SpecialMethodKind {
Regular,
@@ -310,7 +310,7 @@
explicit operator bool() const { return type.getPointer() != nullptr; }
};
-/// \brief Implementation of the Clang importer.
+/// Implementation of the Clang importer.
class LLVM_LIBRARY_VISIBILITY ClangImporter::Implementation
: public LazyMemberLoader,
public LazyConformanceLoader
@@ -322,7 +322,7 @@
Implementation(ASTContext &ctx, const ClangImporterOptions &opts);
~Implementation();
- /// \brief Swift AST context.
+ /// Swift AST context.
ASTContext &SwiftContext;
const bool ImportForwardDeclarations;
@@ -352,12 +352,12 @@
/// (through the Swift name lookup module file extension).
LookupTableMap LookupTables;
- /// \brief The fake buffer used to import modules.
+ /// The fake buffer used to import modules.
///
/// \see getNextIncludeLoc
clang::FileID DummyIncludeBuffer;
- /// \brief A count of the number of load module operations.
+ /// A count of the number of load module operations.
///
/// \see getNextIncludeLoc
unsigned IncludeCounter = 0;
@@ -368,24 +368,24 @@
/// These have to be unique and valid or Clang gets very confused.
clang::SourceLocation getNextIncludeLoc();
- /// \brief Used to avoid running the AST verifier over the same declarations.
+ /// Used to avoid running the AST verifier over the same declarations.
size_t VerifiedDeclsCounter = 0;
- /// \brief Clang compiler invocation.
+ /// Clang compiler invocation.
std::shared_ptr<clang::CompilerInvocation> Invocation;
- /// \brief Clang compiler instance, which is used to actually load Clang
+ /// Clang compiler instance, which is used to actually load Clang
/// modules.
std::unique_ptr<clang::CompilerInstance> Instance;
- /// \brief Clang compiler action, which is used to actually run the
+ /// Clang compiler action, which is used to actually run the
/// parser.
std::unique_ptr<clang::FrontendAction> Action;
- /// \brief Clang parser, which is used to load textual headers.
+ /// Clang parser, which is used to load textual headers.
std::unique_ptr<clang::Parser> Parser;
- /// \brief Clang parser, which is used to load textual headers.
+ /// Clang parser, which is used to load textual headers.
std::unique_ptr<clang::MangleContext> Mangler;
/// The active type checker, or null if there is no active type checker.
@@ -395,10 +395,10 @@
llvm::PointerIntPair<LazyResolver *, 1, bool> typeResolver;
public:
- /// \brief Mapping of already-imported declarations.
+ /// Mapping of already-imported declarations.
llvm::DenseMap<std::pair<const clang::Decl *, Version>, Decl *> ImportedDecls;
- /// \brief The set of "special" typedef-name declarations, which are
+ /// The set of "special" typedef-name declarations, which are
/// mapped to specific Swift types.
///
/// Normal typedef-name declarations imported into Swift will maintain
@@ -410,12 +410,12 @@
llvm::SmallDenseMap<const clang::TypedefNameDecl *, MappedTypeNameKind, 16>
SpecialTypedefNames;
- /// \brief Provide a single extension point for any given type per clang
+ /// Provide a single extension point for any given type per clang
/// submodule
llvm::DenseMap<std::pair<NominalTypeDecl *, const clang::Module *>,
ExtensionDecl *> extensionPoints;
- /// \brief Typedefs that we should not be importing. We should be importing
+ /// Typedefs that we should not be importing. We should be importing
/// underlying decls instead.
llvm::DenseSet<const clang::Decl *> SuperfluousTypedefs;
@@ -424,7 +424,7 @@
/// \sa SuperfluousTypedefs
llvm::DenseSet<const clang::Decl *> DeclsWithSuperfluousTypedefs;
- /// \brief Mapping of already-imported declarations from protocols, which
+ /// Mapping of already-imported declarations from protocols, which
/// can (and do) get replicated into classes.
llvm::DenseMap<std::tuple<const clang::Decl *, DeclContext *, Version>,
Decl *> ImportedProtocolDecls;
@@ -454,7 +454,7 @@
}
private:
- /// \brief Generation number that is used for crude versioning.
+ /// Generation number that is used for crude versioning.
///
/// This value is incremented every time a new module is imported.
unsigned Generation = 1;
@@ -465,7 +465,7 @@
}
public:
- /// \brief Keep track of subscript declarations based on getter/setter
+ /// Keep track of subscript declarations based on getter/setter
/// pairs.
llvm::DenseMap<std::pair<FuncDecl *, FuncDecl *>, SubscriptDecl *> Subscripts;
@@ -487,7 +487,7 @@
llvm::DenseMap<Decl *, TinyPtrVector<ValueDecl *>> AlternateDecls;
public:
- /// \brief Keep track of initializer declarations that correspond to
+ /// Keep track of initializer declarations that correspond to
/// imported methods.
llvm::DenseMap<
std::tuple<const clang::ObjCMethodDecl *, DeclContext *, Version>,
@@ -511,7 +511,7 @@
}
private:
- /// \brief NSObject, imported into Swift.
+ /// NSObject, imported into Swift.
Type NSObjectTy;
/// A pair containing a ClangModuleUnit,
@@ -534,16 +534,16 @@
/// These are used to look up Swift classes forward-declared with \@class.
TinyPtrVector<ModuleDecl *> ImportedHeaderOwners;
- /// \brief Clang's objectAtIndexedSubscript: selector.
+ /// Clang's objectAtIndexedSubscript: selector.
clang::Selector objectAtIndexedSubscript;
- /// \brief Clang's setObjectAt:indexedSubscript: selector.
+ /// Clang's setObjectAt:indexedSubscript: selector.
clang::Selector setObjectAtIndexedSubscript;
- /// \brief Clang's objectForKeyedSubscript: selector.
+ /// Clang's objectForKeyedSubscript: selector.
clang::Selector objectForKeyedSubscript;
- /// \brief Clang's setObject:forKeyedSubscript: selector.
+ /// Clang's setObject:forKeyedSubscript: selector.
clang::Selector setObjectForKeyedSubscript;
private:
@@ -627,17 +627,17 @@
decl->getAttrs().add(IUOAttr);
}
- /// \brief Retrieve the Clang AST context.
+ /// Retrieve the Clang AST context.
clang::ASTContext &getClangASTContext() const {
return Instance->getASTContext();
}
- /// \brief Retrieve the Clang Sema object.
+ /// Retrieve the Clang Sema object.
clang::Sema &getClangSema() const {
return Instance->getSema();
}
- /// \brief Retrieve the Clang AST context.
+ /// Retrieve the Clang AST context.
clang::Preprocessor &getClangPreprocessor() const {
return Instance->getPreprocessor();
}
@@ -652,7 +652,7 @@
std::unique_ptr<llvm::MemoryBuffer> contents,
bool implicitImport);
- /// \brief Retrieve the imported module that should contain the given
+ /// Retrieve the imported module that should contain the given
/// Clang decl.
ClangModuleUnit *getClangModuleForDecl(const clang::Decl *D,
bool allowForwardDeclaration = false);
@@ -669,7 +669,7 @@
static bool shouldAllowNSUIntegerAsInt(bool isFromSystemModule,
const clang::NamedDecl *decl);
- /// \brief Converts the given Swift identifier for Clang.
+ /// Converts the given Swift identifier for Clang.
clang::DeclarationName exportName(Identifier name);
/// Imports the full name of the given Clang declaration into Swift.
@@ -692,7 +692,7 @@
bool fullyQualified,
llvm::raw_ostream &os);
- /// \brief Import the given Clang identifier into Swift.
+ /// Import the given Clang identifier into Swift.
///
/// \param identifier The Clang identifier to map into Swift.
///
@@ -711,16 +711,16 @@
/// Export a Swift Objective-C selector as a Clang Objective-C selector.
clang::Selector exportSelector(ObjCSelector selector);
- /// \brief Import the given Swift source location into Clang.
+ /// Import the given Swift source location into Clang.
clang::SourceLocation exportSourceLoc(SourceLoc loc);
- /// \brief Import the given Clang source location into Swift.
+ /// Import the given Clang source location into Swift.
SourceLoc importSourceLoc(clang::SourceLocation loc);
- /// \brief Import the given Clang source range into Swift.
+ /// Import the given Clang source range into Swift.
SourceRange importSourceRange(clang::SourceRange loc);
- /// \brief Import the given Clang preprocessor macro as a Swift value decl.
+ /// Import the given Clang preprocessor macro as a Swift value decl.
///
/// \p macroNode must be a MacroInfo or a ModuleMacro.
///
@@ -752,7 +752,7 @@
Version version,
bool SuperfluousTypedefsAreTransparent);
- /// \brief Same as \c importDeclReal, but for use inside importer
+ /// Same as \c importDeclReal, but for use inside importer
/// implementation.
///
/// Unlike \c importDeclReal, this function for convenience transparently
@@ -763,7 +763,7 @@
/*SuperfluousTypedefsAreTransparent=*/true);
}
- /// \brief Import the given Clang declaration into Swift. Use this function
+ /// Import the given Clang declaration into Swift. Use this function
/// outside of the importer implementation, when importing a decl requested by
/// Swift code.
///
@@ -774,7 +774,7 @@
/*SuperfluousTypedefsAreTransparent=*/false);
}
- /// \brief Import a cloned version of the given declaration, which is part of
+ /// Import a cloned version of the given declaration, which is part of
/// an Objective-C protocol and currently must be a method or property, into
/// the given declaration context.
///
@@ -783,15 +783,15 @@
Decl *importMirroredDecl(const clang::NamedDecl *decl, DeclContext *dc,
Version version, ProtocolDecl *proto);
- /// \brief Utility function for building simple generic signatures.
+ /// Utility function for building simple generic signatures.
GenericSignature *buildGenericSignature(GenericParamList *genericParams,
DeclContext *dc);
- /// \brief Utility function for building simple generic environments.
+ /// Utility function for building simple generic environments.
GenericEnvironment *buildGenericEnvironment(GenericParamList *genericParams,
DeclContext *dc);
- /// \brief Import the given Clang declaration context into Swift.
+ /// Import the given Clang declaration context into Swift.
///
/// Usually one will use \c importDeclContextOf instead.
///
@@ -799,7 +799,7 @@
/// be converted.
DeclContext *importDeclContextImpl(const clang::DeclContext *dc);
- /// \brief Import the declaration context of a given Clang declaration into
+ /// Import the declaration context of a given Clang declaration into
/// Swift.
///
/// \param context The effective context as determined by importFullName.
@@ -809,7 +809,7 @@
DeclContext *importDeclContextOf(const clang::Decl *D,
EffectiveClangContext context);
- /// \brief Create a new named constant with the given value.
+ /// Create a new named constant with the given value.
///
/// \param name The name of the constant.
/// \param dc The declaration context into which the name will be introduced.
@@ -823,7 +823,7 @@
bool isStatic,
ClangNode ClangN);
- /// \brief Create a new named constant with the given value.
+ /// Create a new named constant with the given value.
///
/// \param name The name of the constant.
/// \param dc The declaration context into which the name will be introduced.
@@ -837,7 +837,7 @@
bool isStatic,
ClangNode ClangN);
- /// \brief Create a new named constant using the given expression.
+ /// Create a new named constant using the given expression.
///
/// \param name The name of the constant.
/// \param dc The declaration context into which the name will be introduced.
@@ -858,50 +858,50 @@
decl, platformAvailability, SwiftContext.LangOpts.EnableObjCInterop);
}
- /// \brief Add "Unavailable" annotation to the swift declaration.
+ /// Add "Unavailable" annotation to the swift declaration.
void markUnavailable(ValueDecl *decl, StringRef unavailabilityMsg);
- /// \brief Create a decl with error type and an "unavailable" attribute on it
+ /// Create a decl with error type and an "unavailable" attribute on it
/// with the specified message.
ValueDecl *createUnavailableDecl(Identifier name, DeclContext *dc,
Type type, StringRef UnavailableMessage,
bool isStatic, ClangNode ClangN);
- /// \brief Retrieve the standard library module.
+ /// Retrieve the standard library module.
ModuleDecl *getStdlibModule();
- /// \brief Retrieve the named module.
+ /// Retrieve the named module.
///
/// \param name The name of the module.
///
/// \returns The named module, or null if the module has not been imported.
ModuleDecl *getNamedModule(StringRef name);
- /// \brief Returns the "Foundation" module, if it can be loaded.
+ /// Returns the "Foundation" module, if it can be loaded.
///
/// After this has been called, the Foundation module will or won't be loaded
/// into the ASTContext.
ModuleDecl *tryLoadFoundationModule();
- /// \brief Returns the "SIMD" module, if it can be loaded.
+ /// Returns the "SIMD" module, if it can be loaded.
///
/// After this has been called, the SIMD module will or won't be loaded
/// into the ASTContext.
ModuleDecl *tryLoadSIMDModule();
- /// \brief Retrieves the Swift wrapper for the given Clang module, creating
+ /// Retrieves the Swift wrapper for the given Clang module, creating
/// it if necessary.
ClangModuleUnit *getWrapperForModule(const clang::Module *underlying);
- /// \brief Constructs a Swift module for the given Clang module.
+ /// Constructs a Swift module for the given Clang module.
ModuleDecl *finishLoadingClangModule(const clang::Module *clangModule,
bool preferAdapter);
- /// \brief Call finishLoadingClangModule on each deferred import collected
+ /// Call finishLoadingClangModule on each deferred import collected
/// while scanning a bridging header or PCH.
void handleDeferredImports();
- /// \brief Retrieve the named Swift type, e.g., Int32.
+ /// Retrieve the named Swift type, e.g., Int32.
///
/// \param moduleName The name of the module in which the type should occur.
///
@@ -910,7 +910,7 @@
/// \returns The named type, or null if the type could not be found.
Type getNamedSwiftType(StringRef moduleName, StringRef name);
- /// \brief Retrieve the named Swift type, e.g., Int32.
+ /// Retrieve the named Swift type, e.g., Int32.
///
/// \param module The module in which the type should occur.
///
@@ -919,7 +919,7 @@
/// \returns The named type, or null if the type could not be found.
Type getNamedSwiftType(ModuleDecl *module, StringRef name);
- /// \brief Retrieve a specialization of the named Swift type, e.g.,
+ /// Retrieve a specialization of the named Swift type, e.g.,
/// UnsafeMutablePointer<T>.
///
/// \param module The name of the module in which the type should occur.
@@ -932,32 +932,32 @@
Type getNamedSwiftTypeSpecialization(ModuleDecl *module, StringRef name,
ArrayRef<Type> args);
- /// \brief Retrieve the NSObject type.
+ /// Retrieve the NSObject type.
Type getNSObjectType();
- /// \brief Retrieve the NSObject protocol type.
+ /// Retrieve the NSObject protocol type.
Type getNSObjectProtocolType();
- /// \brief Retrieve the NSCopying protocol type.
+ /// Retrieve the NSCopying protocol type.
Type getNSCopyingType();
- /// \brief Retrieve a sugared referenece to the given (imported) type.
+ /// Retrieve a sugared referenece to the given (imported) type.
Type getSugaredTypeReference(TypeDecl *type);
- /// \brief Determines whether the given type matches an implicit type
+ /// Determines whether the given type matches an implicit type
/// bound of "Hashable", which is used to validate NSDictionary/NSSet.
bool matchesHashableBound(Type type);
- /// \brief Determines whether the type declared by the given declaration
+ /// Determines whether the type declared by the given declaration
/// is over-aligned.
bool isOverAligned(const clang::TypeDecl *typeDecl);
bool isOverAligned(clang::QualType type);
- /// \brief Look up and attempt to import a Clang declaration with
+ /// Look up and attempt to import a Clang declaration with
/// the given name.
Decl *importDeclByName(StringRef name);
- /// \brief Import the given Clang type into Swift.
+ /// Import the given Clang type into Swift.
///
/// \param type The Clang type to import.
///
@@ -1005,7 +1005,7 @@
OptionalTypeKind optional = OTK_ImplicitlyUnwrappedOptional,
bool resugarNSErrorPointer = true);
- /// \brief Import the given Clang type into Swift.
+ /// Import the given Clang type into Swift.
///
/// For a description of parameters, see importType(). This differs
/// only in that it returns a Type rather than ImportedType, which
@@ -1020,7 +1020,7 @@
OptionalTypeKind optional = OTK_ImplicitlyUnwrappedOptional,
bool resugarNSErrorPointer = true);
- /// \brief Import the given Clang type into Swift, returning the
+ /// Import the given Clang type into Swift, returning the
/// Swift parameters and result type and whether we should treat it
/// as an optional that is implicitly unwrapped.
///
@@ -1031,7 +1031,7 @@
/// it as an optional that is implicitly unwrapped. The returned
/// type is null if it cannot be represented in Swift.
- /// \brief Import the given function type.
+ /// Import the given function type.
///
/// This routine should be preferred when importing function types for
/// which we have actual function parameters, e.g., when dealing with a
@@ -1053,7 +1053,7 @@
bool isVariadic, bool isFromSystemModule,
DeclName name, ParameterList *¶meterList);
- /// \brief Import the given function return type.
+ /// Import the given function return type.
///
/// \param dc The context the function is being imported into.
/// \param clangDecl The underlying declaration, if any; should only be
@@ -1067,7 +1067,7 @@
const clang::FunctionDecl *clangDecl,
bool allowNSUIntegerAsInt);
- /// \brief Import the parameter list for a function
+ /// Import the parameter list for a function
///
/// \param clangDecl The underlying declaration, if any; should only be
/// considered for any attributes it might carry.
@@ -1153,16 +1153,16 @@
importer::ImportedName importedName,
ParameterList **params);
- /// \brief Determine whether the given typedef-name is "special", meaning
+ /// Determine whether the given typedef-name is "special", meaning
/// that it has performed some non-trivial mapping of its underlying type
/// based on the name of the typedef.
Optional<MappedTypeNameKind>
getSpecialTypedefKind(clang::TypedefNameDecl *decl);
- /// \brief Look up a name, accepting only typedef results.
+ /// Look up a name, accepting only typedef results.
const clang::TypedefNameDecl *lookupTypedef(clang::DeclarationName);
- /// \brief Return whether a global of the given type should be imported as a
+ /// Return whether a global of the given type should be imported as a
/// 'let' declaration as opposed to 'var'.
bool shouldImportGlobalAsLet(clang::QualType type);
diff --git a/lib/DWARFImporter/CMakeLists.txt b/lib/DWARFImporter/CMakeLists.txt
new file mode 100644
index 0000000..1c941dc
--- /dev/null
+++ b/lib/DWARFImporter/CMakeLists.txt
@@ -0,0 +1,8 @@
+add_swift_host_library(swiftDWARFImporter STATIC
+ DWARFImporter.cpp
+ LINK_LIBRARIES
+ swiftAST
+ swiftParse
+)
+
+#add_dependencies(swiftDWARFImporter )
diff --git a/lib/DWARFImporter/DWARFImporter.cpp b/lib/DWARFImporter/DWARFImporter.cpp
new file mode 100644
index 0000000..1219e5b
--- /dev/null
+++ b/lib/DWARFImporter/DWARFImporter.cpp
@@ -0,0 +1,188 @@
+//===--- DWARFImporter.cpp - Import Clang modules from DWARF --------------===//
+//
+// This source file is part of the Swift.org open source project
+//
+// Copyright (c) 2014 - 2018 Apple Inc. and the Swift project authors
+// Licensed under Apache License v2.0 with Runtime Library Exception
+//
+// See https://swift.org/LICENSE.txt for license information
+// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
+//
+//===----------------------------------------------------------------------===//
+
+#include "swift/DWARFImporter/DWARFImporter.h"
+#include "swift/AST/ASTContext.h"
+#include "swift/AST/Module.h"
+
+using namespace swift;
+
+std::unique_ptr<DWARFImporter>
+DWARFImporter::create(ASTContext &ctx,
+ const ClangImporterOptions &importerOpts,
+ DependencyTracker *tracker) {
+ std::unique_ptr<DWARFImporter> importer{
+ new DWARFImporter(ctx, importerOpts, tracker)
+ };
+ return importer;
+}
+
+class DWARFModuleUnit final : public LoadedFile {
+
+ ~DWARFModuleUnit() = default;
+
+public:
+ DWARFModuleUnit(ModuleDecl &M)
+ : LoadedFile(FileUnitKind::DWARFModule, M) {}
+
+ virtual bool isSystemModule() const override { return false; }
+
+ virtual void
+ lookupValue(ModuleDecl::AccessPathTy accessPath, DeclName name,
+ NLKind lookupKind,
+ SmallVectorImpl<ValueDecl *> &results) const override {}
+
+ virtual TypeDecl *
+ lookupNestedType(Identifier name,
+ const NominalTypeDecl *baseType) const override {
+ return nullptr;
+ }
+
+ virtual void lookupVisibleDecls(ModuleDecl::AccessPathTy accessPath,
+ VisibleDeclConsumer &consumer,
+ NLKind lookupKind) const override {}
+
+ virtual void
+ lookupClassMembers(ModuleDecl::AccessPathTy accessPath,
+ VisibleDeclConsumer &consumer) const override {}
+
+ virtual void
+ lookupClassMember(ModuleDecl::AccessPathTy accessPath, DeclName name,
+ SmallVectorImpl<ValueDecl *> &decls) const override {}
+
+ void lookupObjCMethods(
+ ObjCSelector selector,
+ SmallVectorImpl<AbstractFunctionDecl *> &results) const override {}
+
+ virtual void
+ getTopLevelDecls(SmallVectorImpl<Decl *> &results) const override {}
+
+ virtual void
+ getDisplayDecls(SmallVectorImpl<Decl *> &results) const override {}
+
+ virtual void
+ getImportedModules(SmallVectorImpl<ModuleDecl::ImportedModule> &imports,
+ ModuleDecl::ImportFilter filter) const override {}
+
+ virtual void getImportedModulesForLookup(
+ SmallVectorImpl<ModuleDecl::ImportedModule> &imports) const override {};
+
+ virtual void collectLinkLibraries(
+ ModuleDecl::LinkLibraryCallback callback) const override {};
+
+ Identifier
+ getDiscriminatorForPrivateValue(const ValueDecl *D) const override {
+ llvm_unreachable("no private decls in Clang modules");
+ }
+
+ virtual StringRef getFilename() const override { return ""; }
+
+ virtual const clang::Module *getUnderlyingClangModule() const override {
+ return nullptr;
+ }
+
+ static bool classof(const FileUnit *file) {
+ return file->getKind() == FileUnitKind::DWARFModule;
+ }
+ static bool classof(const DeclContext *DC) {
+ return isa<FileUnit>(DC) && classof(cast<FileUnit>(DC));
+ }
+};
+
+class DWARFImporter::Implementation {
+public:
+ ASTContext &SwiftContext;
+ clang::ASTContext *ClangASTContext = nullptr;
+ clang::CompilerInstance *Instance = nullptr;
+ clang::Preprocessor *PP = nullptr;
+ clang::Sema *Sema = nullptr;
+
+ llvm::DenseMap<Identifier, DWARFModuleUnit *> ModuleWrappers;
+ Implementation(ASTContext &ctx, const ClangImporterOptions &clangImporterOpts)
+ : SwiftContext(ctx) {}
+
+ ModuleDecl *loadModule(SourceLoc importLoc,
+ ArrayRef<std::pair<Identifier, SourceLoc>> path) {
+ // FIXME: Implement submodule support!
+ Identifier name = path[0].first;
+
+ auto it = ModuleWrappers.find(name);
+ if (it != ModuleWrappers.end())
+ return it->second->getParentModule();
+
+ auto *decl = ModuleDecl::create(name, SwiftContext);
+ // Silence error messages about testably importing a Clang module.
+ decl->setTestingEnabled();
+ decl->setHasResolvedImports();
+ auto wrapperUnit = new (SwiftContext) DWARFModuleUnit(*decl);
+ ModuleWrappers.insert({name, wrapperUnit});
+ decl->addFile(*wrapperUnit);
+
+ // Force load adapter modules for all imported modules.
+ decl->forAllVisibleModules({}, [](ModuleDecl::ImportedModule import) {});
+
+ return decl;
+ }
+};
+
+DWARFImporter::DWARFImporter(ASTContext &ctx,
+ const ClangImporterOptions &clangImporterOpts,
+ DependencyTracker *tracker)
+ : ClangModuleLoader(tracker),
+ Impl(*new Implementation(ctx, clangImporterOpts)) {}
+
+DWARFImporter::~DWARFImporter() { delete &Impl; }
+
+bool DWARFImporter::canImportModule(std::pair<Identifier, SourceLoc> named) {
+ return false;
+}
+
+bool DWARFImporter::addSearchPath(StringRef newSearchPath, bool isFramework,
+ bool isSystem) {
+ return false;
+}
+
+ModuleDecl *
+DWARFImporter::loadModule(SourceLoc importLoc,
+ ArrayRef<std::pair<Identifier, SourceLoc>> path) {
+ return Impl.loadModule(importLoc, path);
+}
+
+bool DWARFImporter::isInOverlayModuleForImportedModule(
+ const DeclContext *overlayDC, const DeclContext *importedDC) {
+ return false;
+}
+
+void DWARFImporter::loadExtensions(NominalTypeDecl *nominal,
+ unsigned previousGeneration) {}
+
+void DWARFImporter::loadObjCMethods(
+ ClassDecl *classDecl, ObjCSelector selector, bool isInstanceMethod,
+ unsigned previousGeneration,
+ llvm::TinyPtrVector<AbstractFunctionDecl *> &methods) {}
+
+ModuleDecl *DWARFImporter::getImportedHeaderModule() const { return nullptr; }
+
+void DWARFImporter::verifyAllModules() {};
+
+clang::ASTContext &DWARFImporter::getClangASTContext() const {
+ return *Impl.ClangASTContext;
+}
+clang::Preprocessor &DWARFImporter::getClangPreprocessor() const {
+ return *Impl.PP;
+}
+clang::Sema &DWARFImporter::getClangSema() const { return *Impl.Sema; }
+const clang::CompilerInstance &DWARFImporter::getClangInstance() const {
+ return *Impl.Instance;
+}
+
+void DWARFImporter::printStatistics() const {}
diff --git a/lib/Driver/Driver.cpp b/lib/Driver/Driver.cpp
index d69785e..3b74ee2 100644
--- a/lib/Driver/Driver.cpp
+++ b/lib/Driver/Driver.cpp
@@ -1171,7 +1171,7 @@
return DAL;
}
-/// \brief Check that the file referenced by \p Input exists. If it doesn't,
+/// Check that the file referenced by \p Input exists. If it doesn't,
/// issue a diagnostic and return false.
static bool checkInputExistence(const Driver &D, const DerivedArgList &Args,
DiagnosticEngine &Diags, StringRef Input) {
diff --git a/lib/Frontend/CompilerInvocation.cpp b/lib/Frontend/CompilerInvocation.cpp
index fc21d7b..219d682 100644
--- a/lib/Frontend/CompilerInvocation.cpp
+++ b/lib/Frontend/CompilerInvocation.cpp
@@ -114,7 +114,7 @@
}
}
-/// \brief Create a new Regex instance out of the string value in \p RpassArg.
+/// Create a new Regex instance out of the string value in \p RpassArg.
/// It returns a pointer to the newly generated Regex instance.
static std::shared_ptr<llvm::Regex>
generateOptimizationRemarkRegex(DiagnosticEngine &Diags, ArgList &Args,
diff --git a/lib/Frontend/DiagnosticVerifier.cpp b/lib/Frontend/DiagnosticVerifier.cpp
index e43fc97..37f8c6d 100644
--- a/lib/Frontend/DiagnosticVerifier.cpp
+++ b/lib/Frontend/DiagnosticVerifier.cpp
@@ -199,7 +199,7 @@
return OS.str();
}
-/// \brief After the file has been processed, check to see if we got all of
+/// After the file has been processed, check to see if we got all of
/// the expected diagnostics and check to see if there were any unexpected
/// ones.
bool DiagnosticVerifier::verifyFile(unsigned BufferID,
diff --git a/lib/Frontend/Frontend.cpp b/lib/Frontend/Frontend.cpp
index a8e4de8..175417e 100644
--- a/lib/Frontend/Frontend.cpp
+++ b/lib/Frontend/Frontend.cpp
@@ -23,6 +23,7 @@
#include "swift/Basic/FileTypes.h"
#include "swift/Basic/SourceManager.h"
#include "swift/Basic/Statistic.h"
+#include "swift/DWARFImporter/DWARFImporter.h"
#include "swift/Parse/DelayedParsingCallbacks.h"
#include "swift/Parse/Lexer.h"
#include "swift/SIL/SILModule.h"
@@ -338,6 +339,18 @@
}
Context->addModuleLoader(std::move(SML));
Context->addModuleLoader(std::move(clangImporter), /*isClang*/ true);
+
+ if (Invocation.getLangOptions().EnableDWARFImporter) {
+ auto dwarfImporter =
+ DWARFImporter::create(*Context, Invocation.getClangImporterOptions(),
+ getDependencyTracker());
+ if (!dwarfImporter) {
+ Diagnostics.diagnose(SourceLoc(), diag::error_clang_importer_create_fail);
+ return true;
+ }
+ Context->addModuleLoader(std::move(dwarfImporter));
+ }
+
return false;
}
diff --git a/lib/Frontend/SerializedDiagnosticConsumer.cpp b/lib/Frontend/SerializedDiagnosticConsumer.cpp
index 65dc0e8..12478fe 100644
--- a/lib/Frontend/SerializedDiagnosticConsumer.cpp
+++ b/lib/Frontend/SerializedDiagnosticConsumer.cpp
@@ -41,11 +41,11 @@
//===----------------------------------------------------------------------===//
enum BlockIDs {
- /// \brief A top-level block which represents any meta data associated
+ /// A top-level block which represents any meta data associated
/// with the diagnostics, including versioning of the format.
BLOCK_META = llvm::bitc::FIRST_APPLICATION_BLOCKID,
- /// \brief The this block acts as a container for all the information
+ /// The this block acts as a container for all the information
/// for a specific diagnostic.
BLOCK_DIAG
};
@@ -92,42 +92,42 @@
SerializedDiagnosticsPath(serializedDiagnosticsPath),
EmittedAnyDiagBlocks(false) {}
- /// \brief The byte buffer for the serialized content.
+ /// The byte buffer for the serialized content.
llvm::SmallString<1024> Buffer;
- /// \brief The BitStreamWriter for the serialized diagnostics.
+ /// The BitStreamWriter for the serialized diagnostics.
llvm::BitstreamWriter Stream;
- /// \brief The path of the diagnostics file.
+ /// The path of the diagnostics file.
std::string SerializedDiagnosticsPath;
- /// \brief The set of constructed record abbreviations.
+ /// The set of constructed record abbreviations.
AbbreviationMap Abbrevs;
- /// \brief A utility buffer for constructing record content.
+ /// A utility buffer for constructing record content.
RecordData Record;
- /// \brief A text buffer for rendering diagnostic text.
+ /// A text buffer for rendering diagnostic text.
llvm::SmallString<256> diagBuf;
- /// \brief The collection of files used.
+ /// The collection of files used.
llvm::DenseMap<const char *, unsigned> Files;
using DiagFlagsTy =
llvm::DenseMap<const void *, std::pair<unsigned, StringRef>>;
- /// \brief Map for uniquing strings.
+ /// Map for uniquing strings.
DiagFlagsTy DiagFlags;
- /// \brief Whether we have already started emission of any DIAG blocks. Once
+ /// Whether we have already started emission of any DIAG blocks. Once
/// this becomes \c true, we never close a DIAG block until we know that we're
/// starting another one or we're done.
bool EmittedAnyDiagBlocks;
};
-/// \brief Diagnostic consumer that serializes diagnostics to a stream.
+/// Diagnostic consumer that serializes diagnostics to a stream.
class SerializedDiagnosticConsumer : public DiagnosticConsumer {
- /// \brief State shared among the various clones of this diagnostic consumer.
+ /// State shared among the various clones of this diagnostic consumer.
llvm::IntrusiveRefCntPtr<SharedState> State;
bool CalledFinishProcessing = false;
bool CompilationWasComplete = true;
@@ -197,25 +197,25 @@
ArrayRef<DiagnosticArgument> FormatArgs,
const DiagnosticInfo &Info) override;
- /// \brief The version of the diagnostics file.
+ /// The version of the diagnostics file.
enum { Version = 1 };
private:
- /// \brief Emit bitcode for the preamble.
+ /// Emit bitcode for the preamble.
void emitPreamble();
- /// \brief Emit bitcode for the BlockInfoBlock (part of the preamble).
+ /// Emit bitcode for the BlockInfoBlock (part of the preamble).
void emitBlockInfoBlock();
- /// \brief Emit bitcode for metadata block (part of preamble).
+ /// Emit bitcode for metadata block (part of preamble).
void emitMetaBlock();
- /// \brief Emit bitcode to enter a block for a diagnostic.
+ /// Emit bitcode to enter a block for a diagnostic.
void enterDiagBlock() {
State->Stream.EnterSubblock(BLOCK_DIAG, 4);
}
- /// \brief Emit bitcode to exit a block for a diagnostic.
+ /// Emit bitcode to exit a block for a diagnostic.
void exitDiagBlock() {
State->Stream.ExitBlock();
}
@@ -223,7 +223,7 @@
// Record identifier for the file.
unsigned getEmitFile(StringRef Filename);
- /// \brief Add a source location to a record.
+ /// Add a source location to a record.
void addLocToRecord(SourceLoc Loc,
SourceManager &SM,
StringRef Filename,
@@ -232,7 +232,7 @@
void addRangeToRecord(CharSourceRange Range, SourceManager &SM,
StringRef Filename, RecordDataImpl &Record);
- /// \brief Emit the message payload of a diagnostic to bitcode.
+ /// Emit the message payload of a diagnostic to bitcode.
void emitDiagnosticMessage(SourceManager &SM, SourceLoc Loc,
DiagnosticKind Kind,
StringRef Text, const DiagnosticInfo &Info);
@@ -303,7 +303,7 @@
addLocToRecord(Range.getEnd(), SM, Filename, Record);
}
-/// \brief Map a Swift DiagnosticKind to the diagnostic level expected
+/// Map a Swift DiagnosticKind to the diagnostic level expected
/// for serialized diagnostics.
static clang::serialized_diags::Level getDiagnosticLevel(DiagnosticKind Kind) {
switch (Kind) {
@@ -344,7 +344,7 @@
}
-/// \brief Emits a block ID in the BLOCKINFO block.
+/// Emits a block ID in the BLOCKINFO block.
static void emitBlockID(unsigned ID, const char *Name,
llvm::BitstreamWriter &Stream,
RecordDataImpl &Record) {
@@ -364,7 +364,7 @@
Stream.EmitRecord(llvm::bitc::BLOCKINFO_CODE_BLOCKNAME, Record);
}
-/// \brief Emits a record ID in the BLOCKINFO block.
+/// Emits a record ID in the BLOCKINFO block.
static void emitRecordID(unsigned ID, const char *Name,
llvm::BitstreamWriter &Stream,
RecordDataImpl &Record) {
@@ -377,7 +377,7 @@
Stream.EmitRecord(llvm::bitc::BLOCKINFO_CODE_SETRECORDNAME, Record);
}
-/// \brief Emit bitcode for abbreviation for source locations.
+/// Emit bitcode for abbreviation for source locations.
static void
addSourceLocationAbbrev(std::shared_ptr<llvm::BitCodeAbbrev> Abbrev) {
using namespace llvm;
@@ -387,7 +387,7 @@
Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 32)); // Offset;
}
-/// \brief Emit bitcode for abbreviation for source ranges.
+/// Emit bitcode for abbreviation for source ranges.
static void
addRangeLocationAbbrev(std::shared_ptr<llvm::BitCodeAbbrev> Abbrev) {
addSourceLocationAbbrev(Abbrev);
diff --git a/lib/FrontendTool/CMakeLists.txt b/lib/FrontendTool/CMakeLists.txt
index 727bd01..f55afe0 100644
--- a/lib/FrontendTool/CMakeLists.txt
+++ b/lib/FrontendTool/CMakeLists.txt
@@ -15,6 +15,7 @@
swiftPrintAsObjC
swiftFrontend
swiftClangImporter
+ swiftDWARFImporter
swiftOption
clangAPINotes
clangBasic
diff --git a/lib/FrontendTool/FrontendTool.cpp b/lib/FrontendTool/FrontendTool.cpp
index 7cd757f..cc8997c 100644
--- a/lib/FrontendTool/FrontendTool.cpp
+++ b/lib/FrontendTool/FrontendTool.cpp
@@ -11,7 +11,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief This is the entry point to the swift -frontend functionality, which
+/// This is the entry point to the swift -frontend functionality, which
/// implements the core compiler functionality along with a number of additional
/// tools for demonstration and testing purposes.
///
diff --git a/lib/IDE/CMakeLists.txt b/lib/IDE/CMakeLists.txt
index 0b50e7c..a20a4cc 100644
--- a/lib/IDE/CMakeLists.txt
+++ b/lib/IDE/CMakeLists.txt
@@ -16,6 +16,7 @@
LINK_LIBRARIES
swiftFrontend
swiftClangImporter
+ swiftDWARFImporter
swiftParse
swiftSema
swiftIndex)
diff --git a/lib/IDE/CodeCompletion.cpp b/lib/IDE/CodeCompletion.cpp
index 415e6c3..54291b6 100644
--- a/lib/IDE/CodeCompletion.cpp
+++ b/lib/IDE/CodeCompletion.cpp
@@ -1339,7 +1339,7 @@
Builder.addTypeAnnotation(ST.getString());
}
- /// \brief Set to true when we have delivered code completion results
+ /// Set to true when we have delivered code completion results
/// to the \c Consumer.
bool DeliveredResults = false;
@@ -1636,10 +1636,10 @@
bool IncludeInstanceMembers = false;
- /// \brief True if we are code completing inside a static method.
+ /// True if we are code completing inside a static method.
bool InsideStaticMethod = false;
- /// \brief Innermost method that the code completion point is in.
+ /// Innermost method that the code completion point is in.
const AbstractFunctionDecl *CurrentMethod = nullptr;
Optional<SemanticContextKind> ForcedSemanticContext = None;
@@ -3248,6 +3248,7 @@
switch (fileUnit->getKind()) {
case FileUnitKind::Builtin:
case FileUnitKind::ClangModule:
+ case FileUnitKind::DWARFModule:
continue;
case FileUnitKind::Source:
collectOperatorsFrom(cast<SourceFile>(fileUnit), results);
diff --git a/lib/IDE/Utils.cpp b/lib/IDE/Utils.cpp
index 627a41d..288aa3e 100644
--- a/lib/IDE/Utils.cpp
+++ b/lib/IDE/Utils.cpp
@@ -227,6 +227,8 @@
break;
}
OS << '-' << Triple.getVendorName() << '-' << Triple.getOSName();
+ if (Triple.hasEnvironment())
+ OS << '-' << Triple.getEnvironmentName();
OS.flush();
return Result;
}
diff --git a/lib/IRGen/EnumPayload.cpp b/lib/IRGen/EnumPayload.cpp
index 82bd130..c3c455f 100644
--- a/lib/IRGen/EnumPayload.cpp
+++ b/lib/IRGen/EnumPayload.cpp
@@ -719,9 +719,10 @@
llvm::Value *newBits;
if (u > usedBits)
newBits = IGF.Builder.CreateLShr(spareBits, u - usedBits);
- else if (u < usedBits)
- newBits = IGF.Builder.CreateShl(spareBits, usedBits - u);
- else
+ else if (u < usedBits) {
+ newBits = IGF.Builder.CreateZExtOrTrunc(spareBits, destTy);
+ newBits = IGF.Builder.CreateShl(newBits, usedBits - u);
+ } else
newBits = spareBits;
newBits = IGF.Builder.CreateZExtOrTrunc(newBits, destTy);
diff --git a/lib/IRGen/GenCast.h b/lib/IRGen/GenCast.h
index 1043674..db29099 100644
--- a/lib/IRGen/GenCast.h
+++ b/lib/IRGen/GenCast.h
@@ -51,7 +51,7 @@
SILType valueType, SILType loweredTargetType,
CheckedCastMode mode, Explosion &out);
- /// \brief Convert a class object to the given destination type,
+ /// Convert a class object to the given destination type,
/// using a runtime-checked cast.
///
/// FIXME: toType should be an AST CanType.
@@ -68,7 +68,7 @@
llvm::Value *casted;
};
- /// \brief Convert the given value to the exact destination type.
+ /// Convert the given value to the exact destination type.
FailableCastResult emitClassIdenticalCast(IRGenFunction &IGF,
llvm::Value *from,
SILType fromType,
diff --git a/lib/IRGen/GenEnum.h b/lib/IRGen/GenEnum.h
index 50f56e0..29a2665 100644
--- a/lib/IRGen/GenEnum.h
+++ b/lib/IRGen/GenEnum.h
@@ -44,7 +44,7 @@
class TypeConverter;
using clang::CodeGen::swiftcall::SwiftAggLowering;
-/// \brief Emit the dispatch branch(es) for an address-only enum.
+/// Emit the dispatch branch(es) for an address-only enum.
void emitSwitchAddressOnlyEnumDispatch(IRGenFunction &IGF,
SILType enumTy,
Address enumAddr,
@@ -52,7 +52,7 @@
llvm::BasicBlock*>> dests,
llvm::BasicBlock *defaultDest);
-/// \brief Injects a case and its associated data, if any, into a loadable enum
+/// Injects a case and its associated data, if any, into a loadable enum
/// value.
void emitInjectLoadableEnum(IRGenFunction &IGF,
SILType enumTy,
@@ -60,7 +60,7 @@
Explosion &data,
Explosion &out);
-/// \brief Extracts the associated data for an enum case. This is an unchecked
+/// Extracts the associated data for an enum case. This is an unchecked
/// operation; the input enum value must be of the given case.
void emitProjectLoadableEnum(IRGenFunction &IGF,
SILType enumTy,
@@ -68,14 +68,14 @@
EnumElementDecl *theCase,
Explosion &out);
-/// \brief Projects the address of the associated data for a case inside a
+/// Projects the address of the associated data for a case inside a
/// enum, to which a new data value can be stored.
Address emitProjectEnumAddressForStore(IRGenFunction &IGF,
SILType enumTy,
Address enumAddr,
EnumElementDecl *theCase);
-/// \brief Projects the address of the associated data for a case inside a
+/// Projects the address of the associated data for a case inside a
/// enum, clearing any tag bits interleaved into the data area, so that the
/// value inside can be loaded. Does not check that the enum has a value of the
/// given case.
@@ -84,7 +84,7 @@
Address enumAddr,
EnumElementDecl *theCase);
-/// \brief Stores the tag bits for an enum case to the given address, overlaying
+/// Stores the tag bits for an enum case to the given address, overlaying
/// the data (if any) stored there.
void emitStoreEnumTagToAddress(IRGenFunction &IGF,
SILType enumTy,
@@ -221,7 +221,7 @@
/// Emit field names for enum reflection.
virtual bool isReflectable() const;
- /// \brief Return the bits used for discriminators for payload cases.
+ /// Return the bits used for discriminators for payload cases.
///
/// These bits are populated in increasing value according to the order of
/// the getElementsWithPayload() array, starting from zero for the first
diff --git a/lib/IRGen/GenProto.cpp b/lib/IRGen/GenProto.cpp
index 0fa6a26..4c018ac 100644
--- a/lib/IRGen/GenProto.cpp
+++ b/lib/IRGen/GenProto.cpp
@@ -2876,16 +2876,23 @@
// If we don't have concrete conformance information, the type must be
// an archetype and the conformance must be via one of the protocol
// requirements of the archetype. Look at what's locally bound.
+ ProtocolConformance *concreteConformance;
if (conformance.isAbstract()) {
- auto archetype = cast<ArchetypeType>(srcType);
- return emitArchetypeWitnessTableRef(IGF, archetype, proto);
- }
+ if (auto archetype = dyn_cast<ArchetypeType>(srcType))
+ return emitArchetypeWitnessTableRef(IGF, archetype, proto);
+
+ // Otherwise, this must be a self-conformance.
+ assert(proto->requiresSelfConformanceWitnessTable());
+ assert(cast<ProtocolType>(srcType)->getDecl() == proto);
+ concreteConformance = IGF.IGM.Context.getSelfConformance(proto);
// All other source types should be concrete enough that we have
// conformance info for them. However, that conformance info might be
// more concrete than we're expecting.
// TODO: make a best effort to devirtualize, maybe?
- auto concreteConformance = conformance.getConcrete();
+ } else {
+ concreteConformance = conformance.getConcrete();
+ }
assert(concreteConformance->getProtocol() == proto);
auto cacheKind =
@@ -3423,7 +3430,7 @@
return Signature(fnType, attrs, SwiftCC);
}
-/// \brief Load a reference to the protocol descriptor for the given protocol.
+/// Load a reference to the protocol descriptor for the given protocol.
///
/// For Swift protocols, this is a constant reference to the protocol descriptor
/// symbol.
diff --git a/lib/IRGen/GenProto.h b/lib/IRGen/GenProto.h
index 96e2c41..82d6da8 100644
--- a/lib/IRGen/GenProto.h
+++ b/lib/IRGen/GenProto.h
@@ -157,7 +157,7 @@
CanSILFunctionType &SubstFnType,
Explosion &nativeParam, unsigned paramIndex);
- /// \brief Load a reference to the protocol descriptor for the given protocol.
+ /// Load a reference to the protocol descriptor for the given protocol.
///
/// For Swift protocols, this is a constant reference to the protocol
/// descriptor symbol.
diff --git a/lib/IRGen/GenType.cpp b/lib/IRGen/GenType.cpp
index cedca45..5b3b1f5 100644
--- a/lib/IRGen/GenType.cpp
+++ b/lib/IRGen/GenType.cpp
@@ -1562,7 +1562,7 @@
return *type;
}
-/// \brief Convert a primitive builtin type to its LLVM type, size, and
+/// Convert a primitive builtin type to its LLVM type, size, and
/// alignment.
static std::tuple<llvm::Type *, Size, Alignment>
convertPrimitiveBuiltin(IRGenModule &IGM, CanType canTy) {
diff --git a/lib/IRGen/IRGen.cpp b/lib/IRGen/IRGen.cpp
index 589edae..e7f67eb 100644
--- a/lib/IRGen/IRGen.cpp
+++ b/lib/IRGen/IRGen.cpp
@@ -740,7 +740,7 @@
delete IRGenPair.first;
}
-/// \brief Run the IRGen preparation SIL pipeline. Passes have access to the
+/// Run the IRGen preparation SIL pipeline. Passes have access to the
/// IRGenModule.
static void runIRGenPreparePasses(SILModule &Module,
irgen::IRGenModule &IRModule) {
diff --git a/lib/IRGen/LoadableByAddress.cpp b/lib/IRGen/LoadableByAddress.cpp
index 5a91e73..bd18ddc 100644
--- a/lib/IRGen/LoadableByAddress.cpp
+++ b/lib/IRGen/LoadableByAddress.cpp
@@ -1326,7 +1326,7 @@
arg) == pass.largeLoadableArgs.end());
arg = arg->getParent()->replaceFunctionArgument(
- arg->getIndex(), newSILType, ValueOwnershipKind::Trivial, arg->getDecl());
+ arg->getIndex(), newSILType, ValueOwnershipKind::Any, arg->getDecl());
copyArg->replaceAllUsesWith(arg);
copyArg->eraseFromParent();
@@ -1352,7 +1352,7 @@
ctx.getIdentifier("$return_value"),
pass.F->getDeclContext());
pass.F->begin()->insertFunctionArgument(0, resultStorageType.getAddressType(),
- ValueOwnershipKind::Trivial, var);
+ ValueOwnershipKind::Any, var);
}
void LoadableStorageAllocation::convertIndirectFunctionArgs() {
diff --git a/lib/IRGen/ReferenceTypeInfo.h b/lib/IRGen/ReferenceTypeInfo.h
index cb091a4..0595b85 100644
--- a/lib/IRGen/ReferenceTypeInfo.h
+++ b/lib/IRGen/ReferenceTypeInfo.h
@@ -25,7 +25,7 @@
class TypeConverter;
-/// \brief An abstract class designed for use when implementing a type
+/// An abstract class designed for use when implementing a type
/// that has reference semantics.
class ReferenceTypeInfo : public LoadableTypeInfo {
protected:
diff --git a/lib/Index/Index.cpp b/lib/Index/Index.cpp
index 023d0cd..a19a2c7 100644
--- a/lib/Index/Index.cpp
+++ b/lib/Index/Index.cpp
@@ -664,6 +664,7 @@
IsClangModuleOpt = false;
break;
case FileUnitKind::ClangModule:
+ case FileUnitKind::DWARFModule:
assert(!IsClangModuleOpt.hasValue() &&
"cannot handle multi-file modules");
IsClangModuleOpt = true;
@@ -1462,6 +1463,7 @@
Info += "\"";
break;
case FileUnitKind::ClangModule:
+ case FileUnitKind::DWARFModule:
Info += "clang module, file=\"";
Info += cast<LoadedFile>(FU)->getFilename();
Info += "\"";
@@ -1498,7 +1500,8 @@
// need to hash the clang module.
// FIXME: This is a bit of a hack.
if (TopMod.getFiles().size() == 1)
- if (TopMod.getFiles().front()->getKind() == FileUnitKind::ClangModule)
+ if (TopMod.getFiles().front()->getKind() == FileUnitKind::ClangModule ||
+ TopMod.getFiles().front()->getKind() == FileUnitKind::DWARFModule)
return;
auto It = ImportsMap.find(&TopMod);
diff --git a/lib/Index/IndexRecord.cpp b/lib/Index/IndexRecord.cpp
index cefe390..fe27519 100644
--- a/lib/Index/IndexRecord.cpp
+++ b/lib/Index/IndexRecord.cpp
@@ -406,6 +406,7 @@
case FileUnitKind::Builtin:
break;
case FileUnitKind::SerializedAST:
+ case FileUnitKind::DWARFModule:
case FileUnitKind::ClangModule: {
auto *LFU = cast<LoadedFile>(FU);
if (auto *F = fileMgr.getFile(LFU->getFilename())) {
diff --git a/lib/Parse/Lexer.cpp b/lib/Parse/Lexer.cpp
index a5acee6..095ff69 100644
--- a/lib/Parse/Lexer.cpp
+++ b/lib/Parse/Lexer.cpp
@@ -635,7 +635,7 @@
return p == end;
}
-/// \brief Determines if the given string is a valid operator identifier,
+/// Determines if the given string is a valid operator identifier,
/// without escaping characters.
bool Lexer::isOperator(StringRef string) {
if (string.empty()) return false;
diff --git a/lib/Parse/ParseDecl.cpp b/lib/Parse/ParseDecl.cpp
index 90e59b3..86e1c07 100644
--- a/lib/Parse/ParseDecl.cpp
+++ b/lib/Parse/ParseDecl.cpp
@@ -201,7 +201,7 @@
TheParser.parseDeclListDelayed(IDC);
}
-/// \brief Main entrypoint for the parser.
+/// Main entrypoint for the parser.
///
/// \verbatim
/// top-level:
@@ -2275,7 +2275,7 @@
}
}
-/// \brief This is the internal implementation of \c parseTypeAttributeList,
+/// This is the internal implementation of \c parseTypeAttributeList,
/// which we expect to be inlined to handle the common case of an absent
/// attribute list.
///
@@ -2335,7 +2335,7 @@
Tok2.isContextualKeyword("infix"));
}
-/// \brief Diagnose issues with fixity attributes, if any.
+/// Diagnose issues with fixity attributes, if any.
static void diagnoseOperatorFixityAttributes(Parser &P,
DeclAttributes &Attrs,
const Decl *D) {
@@ -2618,7 +2618,7 @@
consumeToken();
}
-/// \brief Parse a single syntactic declaration and return a list of decl
+/// Parse a single syntactic declaration and return a list of decl
/// ASTs. This can return multiple results for var decls that bind to multiple
/// values, structs that define a struct decl and a constructor, etc.
///
@@ -3054,7 +3054,7 @@
});
}
-/// \brief Parse an 'import' declaration, doing no token skipping on error.
+/// Parse an 'import' declaration, doing no token skipping on error.
///
/// \verbatim
/// decl-import:
@@ -3161,7 +3161,7 @@
return DCC.fixupParserResult(ID);
}
-/// \brief Parse an inheritance clause.
+/// Parse an inheritance clause.
///
/// \verbatim
/// inheritance:
@@ -3421,7 +3421,7 @@
return Result;
}
-/// \brief Parse the members in a struct/class/enum/protocol/extension.
+/// Parse the members in a struct/class/enum/protocol/extension.
///
/// \verbatim
/// decl* '}'
@@ -3484,7 +3484,7 @@
return !BackTrack.willBacktrack();
}
-/// \brief Parse an 'extension' declaration.
+/// Parse an 'extension' declaration.
///
/// \verbatim
/// extension:
@@ -3804,7 +3804,7 @@
return makeParserSuccess();
}
-/// \brief Parse a typealias decl.
+/// Parse a typealias decl.
///
/// \verbatim
/// decl-typealias:
@@ -3916,7 +3916,7 @@
return DCC.fixupParserResult(Status, TAD);
}
-/// \brief Parse an associatedtype decl.
+/// Parse an associatedtype decl.
///
/// \verbatim
/// decl-associatedtype:
@@ -4578,7 +4578,7 @@
#include "swift/AST/AccessorKinds.def"
}
-/// \brief Parse the brace-enclosed getter and setter for a variable.
+/// Parse the brace-enclosed getter and setter for a variable.
ParserResult<VarDecl>
Parser::parseDeclVarGetSet(Pattern *pattern, ParseDeclOptions Flags,
SourceLoc StaticLoc, SourceLoc VarLoc,
@@ -5039,7 +5039,7 @@
}
-/// \brief Parse a 'var' or 'let' declaration, doing no token skipping on error.
+/// Parse a 'var' or 'let' declaration, doing no token skipping on error.
ParserResult<PatternBindingDecl>
Parser::parseDeclVar(ParseDeclOptions Flags,
DeclAttributes &Attributes,
@@ -5423,7 +5423,7 @@
}
}
-/// \brief Parse a 'func' declaration, returning null on error. The caller
+/// Parse a 'func' declaration, returning null on error. The caller
/// handles this case and does recovery as appropriate.
///
/// \verbatim
@@ -5681,7 +5681,7 @@
return false;
}
-/// \brief Parse a 'enum' declaration, returning true (and doing no token
+/// Parse a 'enum' declaration, returning true (and doing no token
/// skipping) on error.
///
/// \verbatim
@@ -5780,7 +5780,7 @@
return DCC.fixupParserResult(Status, ED);
}
-/// \brief Parse a 'case' of an enum.
+/// Parse a 'case' of an enum.
///
/// \verbatim
/// enum-case:
@@ -5962,7 +5962,7 @@
return makeParserResult(Status, TheCase);
}
-/// \brief Parse a 'struct' declaration, returning true (and doing no token
+/// Parse a 'struct' declaration, returning true (and doing no token
/// skipping) on error.
///
/// \verbatim
@@ -6065,7 +6065,7 @@
return DCC.fixupParserResult(Status, SD);
}
-/// \brief Parse a 'class' declaration, doing no token skipping on error.
+/// Parse a 'class' declaration, doing no token skipping on error.
///
/// \verbatim
/// decl-class:
@@ -6194,7 +6194,7 @@
return DCC.fixupParserResult(Status, CD);
}
-/// \brief Parse a 'protocol' declaration, doing no token skipping on error.
+/// Parse a 'protocol' declaration, doing no token skipping on error.
///
/// \verbatim
/// decl-protocol:
@@ -6300,7 +6300,7 @@
return DCC.fixupParserResult(Status, Proto);
}
-/// \brief Parse a 'subscript' declaration.
+/// Parse a 'subscript' declaration.
///
/// \verbatim
/// decl-subscript:
diff --git a/lib/Parse/ParseExpr.cpp b/lib/Parse/ParseExpr.cpp
index 89b691a..7949956 100644
--- a/lib/Parse/ParseExpr.cpp
+++ b/lib/Parse/ParseExpr.cpp
@@ -3143,7 +3143,7 @@
return closure;
}
-/// \brief Parse an object literal expression.
+/// Parse an object literal expression.
///
/// expr-literal:
/// '#' identifier expr-paren
@@ -3184,7 +3184,7 @@
trailingClosure, /*implicit=*/false));
}
-/// \brief Parse and diagnose unknown pound expression
+/// Parse and diagnose unknown pound expression
///
/// If it look like a legacy (Swift 2) object literal expression, suggest fix-it
/// to use new object literal syntax.
@@ -3266,7 +3266,7 @@
return makeParserError();
}
-/// \brief Handle code completion after pound in expression position.
+/// Handle code completion after pound in expression position.
///
/// In case it's in a stmt condition position, specify \p ParentKind to
/// decide the position accepts #available(...) condtion.
@@ -3285,7 +3285,7 @@
return makeParserCodeCompletionResult(Expr);
}
-/// \brief Parse an expression call suffix.
+/// Parse an expression call suffix.
///
/// expr-call-suffix:
/// expr-paren
diff --git a/lib/Parse/ParsePattern.cpp b/lib/Parse/ParsePattern.cpp
index b8af9b3..d43209c 100644
--- a/lib/Parse/ParsePattern.cpp
+++ b/lib/Parse/ParsePattern.cpp
@@ -31,7 +31,7 @@
using namespace swift;
using namespace swift::syntax;
-/// \brief Determine the kind of a default argument given a parsed
+/// Determine the kind of a default argument given a parsed
/// expression that has not yet been type-checked.
static DefaultArgumentKind getDefaultArgKind(Expr *init) {
if (!init)
diff --git a/lib/Parse/Parser.cpp b/lib/Parse/Parser.cpp
index ea3f509..09d779c 100644
--- a/lib/Parse/Parser.cpp
+++ b/lib/Parse/Parser.cpp
@@ -211,7 +211,7 @@
parseDelayedDecl(PersistentState, CodeCompletionFactory);
}
-/// \brief Tokenizes a string literal, taking into account string interpolation.
+/// Tokenizes a string literal, taking into account string interpolation.
static void getStringPartTokens(const Token &Tok, const LangOptions &LangOpts,
const SourceManager &SM,
int BufID, std::vector<Token> &Toks) {
@@ -635,7 +635,7 @@
skipSingle();
}
-/// \brief Skip until a token that starts with '>', and consume it if found.
+/// Skip until a token that starts with '>', and consume it if found.
/// Applies heuristics that are suitable when trying to find the end of a list
/// of generic parameters, generic arguments, or list of types in a protocol
/// composition.
diff --git a/lib/ParseSIL/ParseSIL.cpp b/lib/ParseSIL/ParseSIL.cpp
index 60fcf2f..5ed98d8 100644
--- a/lib/ParseSIL/ParseSIL.cpp
+++ b/lib/ParseSIL/ParseSIL.cpp
@@ -329,11 +329,12 @@
bool parseSILOwnership(ValueOwnershipKind &OwnershipKind) {
// We parse here @ <identifier>.
if (!P.consumeIf(tok::at_sign)) {
- // Add error here.
- return true;
+ // If we fail, we must have @any ownership.
+ OwnershipKind = ValueOwnershipKind::Any;
+ return false;
}
- StringRef AllOwnershipKinds[4] = {"trivial", "unowned", "owned",
+ StringRef AllOwnershipKinds[3] = {"unowned", "owned",
"guaranteed"};
return parseSILIdentifierSwitch(OwnershipKind, AllOwnershipKinds,
diag::expected_sil_value_ownership_kind);
@@ -394,7 +395,7 @@
StringRef &OpcodeName);
bool parseSILDebugVar(SILDebugVariable &Var);
- /// \brief Parses the basic block arguments as part of branch instruction.
+ /// Parses the basic block arguments as part of branch instruction.
bool parseSILBBArgsAtBranch(SmallVector<SILValue, 6> &Args, SILBuilder &B);
bool parseSILLocation(SILLocation &L);
diff --git a/lib/SIL/OperandOwnership.cpp b/lib/SIL/OperandOwnership.cpp
index 2e4ddda..dbff31e 100644
--- a/lib/SIL/OperandOwnership.cpp
+++ b/lib/SIL/OperandOwnership.cpp
@@ -78,8 +78,7 @@
bool isAddressOrTrivialType() const {
if (getType().isAddress())
return true;
- return getOwnershipKind() == ValueOwnershipKind::Trivial ||
- getOwnershipKind() == ValueOwnershipKind::Any;
+ return getOwnershipKind() == ValueOwnershipKind::Any;
}
OperandOwnershipKindMap visitForwardingInst(SILInstruction *i,
@@ -165,68 +164,68 @@
CONSTANT_OWNERSHIP_INST(Owned, MustBeInvalidated, StrongRelease)
CONSTANT_OWNERSHIP_INST(Owned, MustBeInvalidated, InitExistentialRef)
CONSTANT_OWNERSHIP_INST(Owned, MustBeInvalidated, EndLifetime)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, AbortApply)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, AddressToPointer)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, BeginAccess)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, BeginUnpairedAccess)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, BindMemory)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, CheckedCastAddrBranch)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, CondFail)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, CopyAddr)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, DeallocStack)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, DebugValueAddr)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, DeinitExistentialAddr)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, DestroyAddr)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, EndAccess)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, EndApply)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, EndUnpairedAccess)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, IndexAddr)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, IndexRawPointer)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, InitBlockStorageHeader)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, InitEnumDataAddr)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, InitExistentialAddr)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, InitExistentialMetatype)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, InjectEnumAddr)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, IsUnique)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, Load)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, LoadBorrow)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, MarkFunctionEscape)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, MarkUninitializedBehavior)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, ObjCExistentialMetatypeToObject)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, ObjCMetatypeToObject)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, ObjCToThickMetatype)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, OpenExistentialAddr)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, OpenExistentialMetatype)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, PointerToAddress)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, PointerToThinFunction)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, ProjectBlockStorage)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, ProjectValueBuffer)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, RawPointerToRef)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, SelectEnumAddr)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, SelectValue)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, StructElementAddr)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, SwitchEnumAddr)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, SwitchValue)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, TailAddr)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, ThickToObjCMetatype)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, ThinFunctionToPointer)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, ThinToThickFunction)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, TupleElementAddr)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, UncheckedAddrCast)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, UncheckedRefCastAddr)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, UncheckedTakeEnumDataAddr)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, UnconditionalCheckedCastAddr)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, AllocValueBuffer)
-CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, DeallocValueBuffer)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, AbortApply)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, AddressToPointer)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, BeginAccess)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, BeginUnpairedAccess)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, BindMemory)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, CheckedCastAddrBranch)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, CondFail)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, CopyAddr)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, DeallocStack)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, DebugValueAddr)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, DeinitExistentialAddr)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, DestroyAddr)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, EndAccess)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, EndApply)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, EndUnpairedAccess)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, IndexAddr)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, IndexRawPointer)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, InitBlockStorageHeader)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, InitEnumDataAddr)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, InitExistentialAddr)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, InitExistentialMetatype)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, InjectEnumAddr)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, IsUnique)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, Load)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, LoadBorrow)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, MarkFunctionEscape)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, MarkUninitializedBehavior)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, ObjCExistentialMetatypeToObject)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, ObjCMetatypeToObject)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, ObjCToThickMetatype)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, OpenExistentialAddr)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, OpenExistentialMetatype)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, PointerToAddress)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, PointerToThinFunction)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, ProjectBlockStorage)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, ProjectValueBuffer)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, RawPointerToRef)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, SelectEnumAddr)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, SelectValue)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, StructElementAddr)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, SwitchEnumAddr)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, SwitchValue)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, TailAddr)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, ThickToObjCMetatype)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, ThinFunctionToPointer)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, ThinToThickFunction)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, TupleElementAddr)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, UncheckedAddrCast)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, UncheckedRefCastAddr)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, UncheckedTakeEnumDataAddr)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, UnconditionalCheckedCastAddr)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, AllocValueBuffer)
+CONSTANT_OWNERSHIP_INST(Any, MustBeLive, DeallocValueBuffer)
#define NEVER_LOADABLE_CHECKED_REF_STORAGE(Name, ...) \
- CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, Load##Name)
+ CONSTANT_OWNERSHIP_INST(Any, MustBeLive, Load##Name)
#define ALWAYS_LOADABLE_CHECKED_REF_STORAGE(Name, ...) \
CONSTANT_OWNERSHIP_INST(Owned, MustBeInvalidated, Name##Release)
#define SOMETIMES_LOADABLE_CHECKED_REF_STORAGE(Name, ...) \
NEVER_LOADABLE_CHECKED_REF_STORAGE(Name, "...") \
ALWAYS_LOADABLE_CHECKED_REF_STORAGE(Name, "...")
#define UNCHECKED_REF_STORAGE(Name, ...) \
- CONSTANT_OWNERSHIP_INST(Trivial, MustBeLive, Name##ToRef)
+ CONSTANT_OWNERSHIP_INST(Any, MustBeLive, Name##ToRef)
#include "swift/AST/ReferenceStorage.def"
#undef CONSTANT_OWNERSHIP_INST
@@ -237,9 +236,8 @@
INST##Inst *i) { \
assert(i->getNumOperands() && "Expected to have non-zero operands"); \
return Map::compatibilityMap( \
- {{ValueOwnershipKind::Trivial, UseLifetimeConstraint::MustBeLive}, \
- {ValueOwnershipKind::OWNERSHIP, \
- UseLifetimeConstraint::USE_LIFETIME_CONSTRAINT}}); \
+ ValueOwnershipKind::OWNERSHIP, \
+ UseLifetimeConstraint::USE_LIFETIME_CONSTRAINT); \
}
CONSTANT_OR_TRIVIAL_OWNERSHIP_INST(Owned, MustBeInvalidated,
CheckedCastValueBranch)
@@ -277,11 +275,7 @@
OperandOwnershipKindMap OperandOwnershipKindClassifier::visit##INST##Inst( \
INST##Inst *i) { \
assert(i->getNumOperands() && "Expected to have non-zero operands"); \
- if (getType().is<AnyMetatypeType>()) { \
- return Map::compatibilityMap(ValueOwnershipKind::Trivial, \
- UseLifetimeConstraint::MustBeLive); \
- } \
- return Map::compatibleWithAllExcept(ValueOwnershipKind::Trivial); \
+ return Map::allLive(); \
}
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP_OR_METATYPE(MustBeLive, ClassMethod)
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP_OR_METATYPE(MustBeLive, ObjCMethod)
@@ -294,7 +288,7 @@
OperandOwnershipKindMap OperandOwnershipKindClassifier::visit##INST##Inst( \
INST##Inst *i) { \
assert(i->getNumOperands() && "Expected to have non-zero operands"); \
- return Map::compatibleWithAllExcept(ValueOwnershipKind::Trivial); \
+ return Map::allLive(); \
}
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP(MustBeLive, BridgeObjectToWord)
ACCEPTS_ANY_NONTRIVIAL_OWNERSHIP(MustBeLive, ClassifyBridgeObject)
@@ -324,33 +318,23 @@
assert(isOwnershipForwardingInst(i) &&
"Expected to have an ownership forwarding inst");
- // Find the first index where we have a non-trivial value.
- auto iter = find_if(ops, [&i](const Operand &op) -> bool {
- if (i->isTypeDependentOperand(op))
- return false;
- return op.get().getOwnershipKind() != ValueOwnershipKind::Trivial;
- });
+ // Merge all of the ownership of our operands. If we get back a .none from the
+ // merge, then we return an empty compatibility map. This ensures that we will
+ // not be compatible with /any/ input triggering a special error in the
+ // ownership verifier.
+ Optional<ValueOwnershipKind> optionalKind =
+ ValueOwnershipKind::merge(makeOptionalTransformRange(
+ ops, [&i](const Operand &op) -> Optional<ValueOwnershipKind> {
+ if (i->isTypeDependentOperand(op))
+ return None;
+ return op.get().getOwnershipKind();
+ }));
+ if (!optionalKind)
+ return Map();
- // If we do not find a non-trivial value, then we know for sure that we have a
- // trivial value.
- if (iter == ops.end()) {
- return Map::compatibilityMap(ValueOwnershipKind::Trivial,
- UseLifetimeConstraint::MustBeLive);
- }
-
- // Ok, we have at least a single non-trivial value. Grab the type of the
- // operand and see if it is trivial or non-trivial. If the type of the operand
- // is trivial, then return that we accept trivial here. Otherwise, return the
- // base ownership kind.
- if (getType().isTrivial(mod))
- return Map::compatibilityMap(ValueOwnershipKind::Trivial,
- UseLifetimeConstraint::MustBeLive);
-
- // Otherwise, return the value ownership kind and forwarding lifetime
- // constraint of the first non-trivial operand. This will ensure that all
- // non-trivial operands have the same ownership kind.
- unsigned index = std::distance(ops.begin(), iter);
- ValueOwnershipKind kind = ops[index].get().getOwnershipKind();
+ auto kind = optionalKind.getValue();
+ if (kind == ValueOwnershipKind::Any)
+ return Map::allLive();
auto lifetimeConstraint = kind.getForwardingLifetimeConstraint();
return Map::compatibilityMap(kind, lifetimeConstraint);
}
@@ -386,7 +370,6 @@
assert(isGuaranteedForwardingInst(i) && \
"Expected an ownership forwarding inst"); \
OperandOwnershipKindMap map; \
- map.add(ValueOwnershipKind::Trivial, UseLifetimeConstraint::MustBeLive); \
map.addCompatibilityConstraint( \
ValueOwnershipKind::OWNERSHIP, \
UseLifetimeConstraint::USE_LIFETIME_CONSTRAINT); \
@@ -405,8 +388,7 @@
UseLifetimeConstraint::MustBeInvalidated);
}
- return Map::compatibilityMap(ValueOwnershipKind::Trivial,
- UseLifetimeConstraint::MustBeLive);
+ return Map::allLive();
}
OperandOwnershipKindMap
@@ -422,8 +404,7 @@
OperandOwnershipKindClassifier::visitAllocRefInst(AllocRefInst *i) {
assert(i->getNumOperands() != 0 &&
"If we reach this point, we must have a tail operand");
- return Map::compatibilityMap(ValueOwnershipKind::Trivial,
- UseLifetimeConstraint::MustBeLive);
+ return Map::allLive();
}
OperandOwnershipKindMap
@@ -431,8 +412,7 @@
AllocRefDynamicInst *i) {
assert(i->getNumOperands() != 0 &&
"If we reach this point, we must have a tail operand");
- return Map::compatibilityMap(ValueOwnershipKind::Trivial,
- UseLifetimeConstraint::MustBeLive);
+ return Map::allLive();
}
OperandOwnershipKindMap
@@ -465,8 +445,7 @@
// If our conditional branch is the condition, it is trivial. Check that the
// ownership kind is trivial.
if (cbi->isConditionOperandIndex(getOperandIndex()))
- return Map::compatibilityMap(ValueOwnershipKind::Trivial,
- UseLifetimeConstraint::MustBeLive);
+ return Map::allLive();
// Otherwise, make sure that our operand matches the ownership of the relevant
// argument.
@@ -493,90 +472,40 @@
// If our passed in type is trivial, we shouldn't have any non-trivial
// successors. Just bail early returning trivial.
if (opTy.isTrivial(mod))
- return Map::compatibilityMap(ValueOwnershipKind::Trivial,
- UseLifetimeConstraint::MustBeLive);
+ return Map::allLive();
- // Otherwise, go through the cases of the enum. If we have any cases with
- // trivial payload or no payload cases, add trivial as a base ownership kind
- // we can accept.
- OperandOwnershipKindMap map;
+ // Otherwise, go through the ownership constraints of our successor arguments
+ // and merge them.
+ auto mergedKind = ValueOwnershipKind::merge(makeTransformRange(
+ sei->getSuccessorBlockArguments(),
+ [&](PhiArgumentArrayRef array) -> ValueOwnershipKind {
+ // If the array is empty, we have a non-payloaded case. Return any.
+ if (array.empty())
+ return ValueOwnershipKind::Any;
- bool foundNonTrivialCase = false;
+ // Otherwise, we should have a single element since a payload is
+ // a tuple.
+ assert(std::distance(array.begin(), array.end()) == 1);
+ SILPhiArgument *arg = array.front();
+ return arg->getOwnershipKind();
+ }));
- auto *enumDecl = opTy.getEnumOrBoundGenericEnum();
- assert(enumDecl);
- for (auto *eltDecl : enumDecl->getAllElements()) {
- // If we have a no-payload case add that we support trivial and continue.
- if (!eltDecl->hasAssociatedValues()) {
- map.addCompatibilityConstraint(ValueOwnershipKind::Trivial,
- UseLifetimeConstraint::MustBeLive);
- continue;
- }
-
- // If we have a completely trivial payload case, then add that we support
- // trivial and continue.
- if (opTy.getEnumElementType(eltDecl, mod).isTrivial(mod)) {
- map.addCompatibilityConstraint(ValueOwnershipKind::Trivial,
- UseLifetimeConstraint::MustBeLive);
- continue;
- }
-
- // Otherwise, we have a non-trivial case. Set foundNonTrivialCase to
- // true. We will need to check the arguments of the switch_enum's successors
- // for the ownership kind that we can accept.
- foundNonTrivialCase = true;
- }
-
- // If we didn't find a non-trivial case, return the map we have constructed so
- // far.
- if (!foundNonTrivialCase)
- return map;
-
- // Otherwise, we want to find the ownership constraint of our successor
- // arguments.
- Optional<ValueOwnershipKind> nonTrivialKind;
- for (auto argArray : sei->getSuccessorBlockArguments()) {
- if (argArray.empty())
- continue;
- SILValue arg = argArray[getOperandIndex()];
- if (arg->getType().isTrivial(mod))
- continue;
-
- // If we haven't found a non-trivial kind yet, stash the kind we find.
- if (!nonTrivialKind) {
- nonTrivialKind = arg.getOwnershipKind();
- continue;
- }
-
- // Otherwise if we /do/ have a non trivial kind and the argument's ownership
- // kind is compatible, merge in case the first value we saw had Any
- // ownership.
- auto newKind = nonTrivialKind->merge(arg.getOwnershipKind());
- if (newKind) {
- nonTrivialKind = newKind;
- continue;
- }
-
- // Otherwise, we have inconsistent ownership in between our successors. To
- // be sure that we error, return an empty map.
+ // If we failed to merge, return an empty map so we will fail to pattern match
+ // with any operand. This is a known signal to the verifier that we failed to
+ // merge in a forwarding context.
+ if (!mergedKind)
return Map();
- }
-
- // We should never have an enum with a non-trivial case where we do not have
- // at least one successor with a proper ownership qualifier since we either
- // switch over the entire enum implying we visit that case, or we go through
- // the default which will have our enum type as its type and thus some form of
- // non-trivial ownership. So it is correct to use the optional here without
- // checking.
- auto lifetimeConstraint = nonTrivialKind->getForwardingLifetimeConstraint();
- map.addCompatibilityConstraint(*nonTrivialKind, lifetimeConstraint);
-
- return map;
+ auto kind = mergedKind.getValue();
+ if (kind == ValueOwnershipKind::Any)
+ return Map::allLive();
+ auto lifetimeConstraint = kind.getForwardingLifetimeConstraint();
+ return Map::compatibilityMap(kind, lifetimeConstraint);
}
OperandOwnershipKindMap
OperandOwnershipKindClassifier::visitCheckedCastBranchInst(
CheckedCastBranchInst *ccbi) {
+ // TODO: Simplify this using ValueOwnershipKind::merge.
Optional<OperandOwnershipKindMap> map;
for (auto argArray : ccbi->getSuccessorBlockArguments()) {
assert(!argArray.empty());
@@ -603,57 +532,41 @@
return map.getValue();
}
+//// FIX THIS HERE
OperandOwnershipKindMap
OperandOwnershipKindClassifier::visitReturnInst(ReturnInst *ri) {
+ // If we have a trivial value, return allLive().
bool isTrivial = ri->getOperand()->getType().isTrivial(mod);
- SILFunctionConventions fnConv = ri->getFunction()->getConventions();
- auto results = fnConv.getDirectSILResults();
- // FIXME: Shouldn't we return an empty OperandOwnershipKindMap here if we do
- // not have any results?
- if (results.empty() || isTrivial) {
- return Map::compatibilityMap(ValueOwnershipKind::Trivial,
- UseLifetimeConstraint::MustBeLive);
+ if (isTrivial) {
+ return Map::allLive();
}
+ SILFunctionConventions fnConv = ri->getFunction()->getConventions();
+
+ auto results = fnConv.getDirectSILResults();
+ if (results.empty())
+ return Map();
+
CanGenericSignature sig = fnConv.funcTy->getGenericSignature();
+ auto ownershipKindRange = makeTransformRange(results,
+ [&](const SILResultInfo &info) {
+ return info.getOwnershipKind(mod, sig);
+ });
- // Find the first index where we have a trivial value.
- auto iter = find_if(results, [this, &sig](const SILResultInfo &info) -> bool {
- return info.getOwnershipKind(mod, sig) != ValueOwnershipKind::Trivial;
- });
+ // Then merge all of our ownership kinds. If we fail to merge, return an empty
+ // map so we fail on all operands.
+ auto mergedBase = ValueOwnershipKind::merge(ownershipKindRange);
+ if (!mergedBase)
+ return Map();
- // If we have all trivial, then we must be trivial. Why wasn't our original
- // type trivial? This is a hard error since this is a logic error in our code
- // here.
- if (iter == results.end())
- llvm_unreachable("Should have already checked a trivial type?!");
+ auto base = *mergedBase;
- ValueOwnershipKind base = iter->getOwnershipKind(mod, sig);
-
- for (const SILResultInfo &resultInfo :
- SILFunctionConventions::DirectSILResultRange(std::next(iter),
- results.end())) {
- auto rKind = resultInfo.getOwnershipKind(mod, sig);
- // Ignore trivial types.
- if (rKind.merge(ValueOwnershipKind::Trivial))
- continue;
-
- auto mergedValue = base.merge(rKind);
- // If we fail to merge all types in, bail. We can not come up with a proper
- // result type. We assert here since this is a hard error in the normal
- // SILVerifier since the return type of the function would not match its
- // terminator.
- assert(mergedValue.hasValue() &&
- "Failed to merge all types in on a return?!");
- // In case Base is Any.
- base = mergedValue.getValue();
- }
-
+ // TODO: This may not be needed once trivial is any.
if (getType().getEnumOrBoundGenericEnum()) {
return visitEnumArgument(base);
}
- return Map::compatibilityMap(base, UseLifetimeConstraint::MustBeInvalidated);
+ return Map::compatibilityMap(base, base.getForwardingLifetimeConstraint());
}
OperandOwnershipKindMap
@@ -699,8 +612,7 @@
return Map::compatibilityMap(ValueOwnershipKind::Guaranteed,
UseLifetimeConstraint::MustBeLive);
}
- return Map::compatibilityMap(ValueOwnershipKind::Trivial,
- UseLifetimeConstraint::MustBeLive);
+ return Map::allLive();
}
// FIXME: Why not use SILArgumentConvention here?
@@ -729,8 +641,7 @@
UseLifetimeConstraint::MustBeInvalidated);
case ParameterConvention::Direct_Guaranteed:
if (substCalleeType->isNoEscape())
- return Map::compatibilityMap(ValueOwnershipKind::Trivial,
- UseLifetimeConstraint::MustBeLive);
+ return Map::allLive();
// We want to accept guaranteed/owned in this position since we
// treat the use of an owned parameter as an instantaneously
// borrowed value for the duration of the call.
@@ -753,13 +664,8 @@
// apply %f(%val) : (@owned Optional<SomeClass>) // owned argument
OperandOwnershipKindMap OperandOwnershipKindClassifier::visitEnumArgument(
ValueOwnershipKind requiredKind) {
- // If this value is already categorized as a trivial ownership kind,
- // it is safe to pass to any argument convention. This is ok since
- // we know that the enum type must match up as checked by the
- // ownership verifier.
+ // Begin with an empty map.
OperandOwnershipKindMap map;
- map.addCompatibilityConstraint(ValueOwnershipKind::Trivial,
- UseLifetimeConstraint::MustBeLive);
// The operand has a non-trivial ownership kind. It must match the argument
// convention.
@@ -810,8 +716,7 @@
// Indirect return arguments are address types.
if (apply.isIndirectResultOperand(op)) {
- return Map::compatibilityMap(ValueOwnershipKind::Trivial,
- UseLifetimeConstraint::MustBeLive);
+ return Map::allLive();
}
unsigned argIndex = apply.getCalleeArgIndex(op);
@@ -828,29 +733,21 @@
case ParameterConvention::Indirect_In: {
// This expects an @trivial if we have lowered addresses and @
if (conv.useLoweredAddresses()) {
- return visitApplyParameter(ValueOwnershipKind::Trivial,
- UseLifetimeConstraint::MustBeLive);
+ return Map::allLive();
}
// TODO: Once trivial is subsumed in any, this goes away.
auto map = visitApplyParameter(ValueOwnershipKind::Owned,
UseLifetimeConstraint::MustBeInvalidated);
- map.addCompatibilityConstraint(ValueOwnershipKind::Trivial,
- UseLifetimeConstraint::MustBeLive);
return map;
}
case ParameterConvention::Indirect_In_Guaranteed: {
// This expects an @trivial if we have lowered addresses and @
if (conv.useLoweredAddresses()) {
- return visitApplyParameter(ValueOwnershipKind::Trivial,
- UseLifetimeConstraint::MustBeLive);
+ return Map::allLive();
}
- // TODO: Once trivial is subsumed in any, this goes away.
- auto map = visitApplyParameter(ValueOwnershipKind::Guaranteed,
- UseLifetimeConstraint::MustBeLive);
- map.addCompatibilityConstraint(ValueOwnershipKind::Trivial,
- UseLifetimeConstraint::MustBeLive);
- return map;
+ return visitApplyParameter(ValueOwnershipKind::Guaranteed,
+ UseLifetimeConstraint::MustBeLive);
}
// The following conventions should take address types and thus be
@@ -858,8 +755,7 @@
case ParameterConvention::Indirect_In_Constant:
case ParameterConvention::Indirect_Inout:
case ParameterConvention::Indirect_InoutAliasable:
- return visitApplyParameter(ValueOwnershipKind::Trivial,
- UseLifetimeConstraint::MustBeLive);
+ return Map::allLive();
case ParameterConvention::Direct_Guaranteed:
// A +1 value may be passed to a guaranteed argument. From the caller's
@@ -890,9 +786,8 @@
OperandOwnershipKindMap
OperandOwnershipKindClassifier::visitPartialApplyInst(PartialApplyInst *i) {
return Map::compatibilityMap(
- {{ValueOwnershipKind::Trivial, UseLifetimeConstraint::MustBeLive},
// All non-trivial types should be captured.
- {ValueOwnershipKind::Owned, UseLifetimeConstraint::MustBeInvalidated}});
+ ValueOwnershipKind::Owned, UseLifetimeConstraint::MustBeInvalidated);
}
// TODO: FIX THIS
@@ -902,8 +797,7 @@
//
// TODO: Change this to check if this operand is an indirect result
if (isAddressOrTrivialType())
- return Map::compatibilityMap(ValueOwnershipKind::Trivial,
- UseLifetimeConstraint::MustBeLive);
+ return Map::allLive();
auto fnType = i->getFunction()->getLoweredFunctionType();
auto yieldInfo = fnType->getYields()[getOperandIndex()];
@@ -931,27 +825,21 @@
OperandOwnershipKindMap
OperandOwnershipKindClassifier::visitAssignInst(AssignInst *i) {
if (getValue() != i->getSrc()) {
- return Map::compatibilityMap(ValueOwnershipKind::Trivial,
- UseLifetimeConstraint::MustBeLive);
+ return Map::allLive();
}
- return Map::compatibilityMap({
- {ValueOwnershipKind::Trivial, UseLifetimeConstraint::MustBeLive},
- {ValueOwnershipKind::Owned, UseLifetimeConstraint::MustBeInvalidated},
- });
+ return Map::compatibilityMap(ValueOwnershipKind::Owned,
+ UseLifetimeConstraint::MustBeInvalidated);
}
OperandOwnershipKindMap
OperandOwnershipKindClassifier::visitStoreInst(StoreInst *i) {
if (getValue() != i->getSrc()) {
- return Map::compatibilityMap(ValueOwnershipKind::Trivial,
- UseLifetimeConstraint::MustBeLive);
+ return Map::allLive();
}
- return Map::compatibilityMap({
- {ValueOwnershipKind::Trivial, UseLifetimeConstraint::MustBeLive},
- {ValueOwnershipKind::Owned, UseLifetimeConstraint::MustBeInvalidated},
- });
+ return Map::compatibilityMap(ValueOwnershipKind::Owned,
+ UseLifetimeConstraint::MustBeInvalidated);
}
OperandOwnershipKindMap
@@ -963,7 +851,7 @@
UseLifetimeConstraint::MustBeInvalidated);
}
- return Map::compatibleWithAllExcept(ValueOwnershipKind::Trivial);
+ return Map::allLive();
}
OperandOwnershipKindMap OperandOwnershipKindClassifier::visitMarkDependenceInst(
@@ -989,8 +877,7 @@
// KeyPath moves the value in memory out of address operands, but the
// ownership checker doesn't reason about that yet.
return Map::compatibilityMap(
- {{ValueOwnershipKind::Trivial, UseLifetimeConstraint::MustBeLive},
- {ValueOwnershipKind::Owned, UseLifetimeConstraint::MustBeInvalidated}});
+ ValueOwnershipKind::Owned, UseLifetimeConstraint::MustBeInvalidated);
}
//===----------------------------------------------------------------------===//
@@ -1008,7 +895,7 @@
llvm::Intrinsic::ID id) {
// LLVM intrinsics do not traffic in ownership, so if we have a result, it
// must be trivial.
- return {ValueOwnershipKind::Trivial, UseLifetimeConstraint::MustBeLive};
+ return Map::allLive();
}
// BUILTIN_TYPE_CHECKER_OPERATION does not live past the type checker.
@@ -1037,119 +924,119 @@
CONSTANT_OWNERSHIP_BUILTIN(Owned, MustBeLive, UnexpectedError)
CONSTANT_OWNERSHIP_BUILTIN(Owned, MustBeLive, WillThrow)
CONSTANT_OWNERSHIP_BUILTIN(Owned, MustBeInvalidated, UnsafeGuaranteed)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, AShr)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, Add)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, Alignof)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, AllocRaw)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, And)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, AssertConf)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, AssignCopyArrayNoAlias)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, AssignCopyArrayFrontToBack)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, AssignCopyArrayBackToFront)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, AssignTakeArray)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, AssumeNonNegative)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, AssumeTrue)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, AtomicLoad)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, AtomicRMW)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, AtomicStore)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, BitCast)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, CanBeObjCClass)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, CmpXChg)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, CondUnreachable)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, CopyArray)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, DeallocRaw)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, DestroyArray)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, ExactSDiv)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, ExactUDiv)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, ExtractElement)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, FAdd)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, FCMP_OEQ)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, FCMP_OGE)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, FCMP_OGT)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, FCMP_OLE)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, FCMP_OLT)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, FCMP_ONE)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, FCMP_ORD)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, FCMP_UEQ)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, FCMP_UGE)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, FCMP_UGT)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, FCMP_ULE)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, FCMP_ULT)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, FCMP_UNE)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, FCMP_UNO)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, FDiv)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, FMul)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, FNeg)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, FPExt)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, FPToSI)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, FPToUI)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, FPTrunc)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, FRem)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, FSub)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, Fence)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, GetObjCTypeEncoding)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, ICMP_EQ)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, ICMP_NE)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, ICMP_SGE)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, ICMP_SGT)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, ICMP_SLE)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, ICMP_SLT)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, ICMP_UGE)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, ICMP_UGT)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, ICMP_ULE)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, ICMP_ULT)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, InsertElement)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, IntToFPWithOverflow)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, IntToPtr)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, IsOptionalType)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, IsPOD)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, IsBitwiseTakable)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, IsSameMetatype)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, LShr)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, Mul)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, OnFastPath)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, Once)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, OnceWithContext)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, Or)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, PtrToInt)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, SAddOver)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, SDiv)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, SExt)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, SExtOrBitCast)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, SIToFP)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, SMulOver)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, SRem)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, SSubOver)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, SToSCheckedTrunc)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, SToUCheckedTrunc)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, Shl)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, Sizeof)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, StaticReport)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, Strideof)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, StringObjectOr)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, Sub)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, TakeArrayNoAlias)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, TakeArrayBackToFront)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, TakeArrayFrontToBack)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, Trunc)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, TruncOrBitCast)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, TSanInoutAccess)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, UAddOver)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, UDiv)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, UIToFP)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, UMulOver)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, URem)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, USubOver)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, UToSCheckedTrunc)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, UToUCheckedTrunc)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, Unreachable)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, UnsafeGuaranteedEnd)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, Xor)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, ZExt)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, ZExtOrBitCast)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, ZeroInitializer)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, Swift3ImplicitObjCEntrypoint)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, MustBeLive, PoundAssert)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, AShr)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, Add)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, Alignof)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, AllocRaw)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, And)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, AssertConf)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, AssignCopyArrayNoAlias)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, AssignCopyArrayFrontToBack)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, AssignCopyArrayBackToFront)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, AssignTakeArray)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, AssumeNonNegative)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, AssumeTrue)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, AtomicLoad)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, AtomicRMW)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, AtomicStore)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, BitCast)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, CanBeObjCClass)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, CmpXChg)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, CondUnreachable)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, CopyArray)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, DeallocRaw)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, DestroyArray)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, ExactSDiv)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, ExactUDiv)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, ExtractElement)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, FAdd)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, FCMP_OEQ)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, FCMP_OGE)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, FCMP_OGT)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, FCMP_OLE)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, FCMP_OLT)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, FCMP_ONE)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, FCMP_ORD)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, FCMP_UEQ)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, FCMP_UGE)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, FCMP_UGT)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, FCMP_ULE)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, FCMP_ULT)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, FCMP_UNE)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, FCMP_UNO)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, FDiv)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, FMul)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, FNeg)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, FPExt)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, FPToSI)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, FPToUI)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, FPTrunc)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, FRem)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, FSub)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, Fence)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, GetObjCTypeEncoding)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, ICMP_EQ)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, ICMP_NE)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, ICMP_SGE)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, ICMP_SGT)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, ICMP_SLE)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, ICMP_SLT)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, ICMP_UGE)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, ICMP_UGT)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, ICMP_ULE)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, ICMP_ULT)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, InsertElement)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, IntToFPWithOverflow)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, IntToPtr)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, IsOptionalType)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, IsPOD)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, IsBitwiseTakable)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, IsSameMetatype)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, LShr)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, Mul)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, OnFastPath)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, Once)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, OnceWithContext)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, Or)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, PtrToInt)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, SAddOver)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, SDiv)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, SExt)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, SExtOrBitCast)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, SIToFP)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, SMulOver)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, SRem)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, SSubOver)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, SToSCheckedTrunc)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, SToUCheckedTrunc)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, Shl)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, Sizeof)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, StaticReport)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, Strideof)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, StringObjectOr)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, Sub)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, TakeArrayNoAlias)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, TakeArrayBackToFront)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, TakeArrayFrontToBack)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, Trunc)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, TruncOrBitCast)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, TSanInoutAccess)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, UAddOver)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, UDiv)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, UIToFP)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, UMulOver)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, URem)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, USubOver)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, UToSCheckedTrunc)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, UToUCheckedTrunc)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, Unreachable)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, UnsafeGuaranteedEnd)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, Xor)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, ZExt)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, ZExtOrBitCast)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, ZeroInitializer)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, Swift3ImplicitObjCEntrypoint)
+CONSTANT_OWNERSHIP_BUILTIN(Any, MustBeLive, PoundAssert)
#undef CONSTANT_OWNERSHIP_BUILTIN
// Builtins that should be lowered to SIL instructions so we should never see
diff --git a/lib/SIL/OwnershipUtils.cpp b/lib/SIL/OwnershipUtils.cpp
index 108bee9..e15e0ad 100644
--- a/lib/SIL/OwnershipUtils.cpp
+++ b/lib/SIL/OwnershipUtils.cpp
@@ -18,7 +18,6 @@
bool swift::isValueAddressOrTrivial(SILValue v, SILModule &m) {
return v->getType().isAddress() ||
- v.getOwnershipKind() == ValueOwnershipKind::Trivial ||
v.getOwnershipKind() == ValueOwnershipKind::Any;
}
@@ -120,8 +119,7 @@
// If v produces any ownership, then we can ignore it. Otherwise, we need to
// return false since this is an introducer we do not understand.
- if (v.getOwnershipKind() != ValueOwnershipKind::Any &&
- v.getOwnershipKind() != ValueOwnershipKind::Trivial)
+ if (v.getOwnershipKind() != ValueOwnershipKind::Any)
return false;
}
diff --git a/lib/SIL/SILBasicBlock.cpp b/lib/SIL/SILBasicBlock.cpp
index df7f255..035866c 100644
--- a/lib/SIL/SILBasicBlock.cpp
+++ b/lib/SIL/SILBasicBlock.cpp
@@ -165,7 +165,7 @@
assert(isEntry() && "Function Arguments can only be in the entry block");
SILModule &M = getParent()->getModule();
if (Ty.isTrivial(M))
- Kind = ValueOwnershipKind::Trivial;
+ Kind = ValueOwnershipKind::Any;
assert(ArgumentList[i]->use_empty() && "Expected no uses of the old arg!");
@@ -190,7 +190,7 @@
assert(!isEntry() && "PHI Arguments can not be in the entry block");
SILModule &M = getParent()->getModule();
if (Ty.isTrivial(M))
- Kind = ValueOwnershipKind::Trivial;
+ Kind = ValueOwnershipKind::Any;
assert(ArgumentList[i]->use_empty() && "Expected no uses of the old BB arg!");
@@ -211,10 +211,8 @@
ValueOwnershipKind Kind,
const ValueDecl *D) {
assert(!isEntry() && "PHI Arguments can not be in the entry block");
- assert(!getParent()->hasQualifiedOwnership() ||
- Kind != ValueOwnershipKind::Any);
if (Ty.isTrivial(getModule()))
- Kind = ValueOwnershipKind::Trivial;
+ Kind = ValueOwnershipKind::Any;
return new (getModule()) SILPhiArgument(this, Ty, Kind, D);
}
@@ -222,10 +220,8 @@
ValueOwnershipKind Kind,
const ValueDecl *D) {
assert(!isEntry() && "PHI Arguments can not be in the entry block");
- assert(!getParent()->hasQualifiedOwnership() ||
- Kind != ValueOwnershipKind::Any);
if (Ty.isTrivial(getModule()))
- Kind = ValueOwnershipKind::Trivial;
+ Kind = ValueOwnershipKind::Any;
return new (getModule()) SILPhiArgument(this, Iter, Ty, Kind, D);
}
@@ -237,7 +233,7 @@
ArgumentList.erase(ArgumentList.begin() + Index);
}
-/// \brief Splits a basic block into two at the specified instruction.
+/// Splits a basic block into two at the specified instruction.
///
/// Note that all the instructions BEFORE the specified iterator
/// stay as part of the original basic block. The old basic block is left
@@ -251,7 +247,7 @@
return New;
}
-/// \brief Move the basic block to after the specified basic block in the IR.
+/// Move the basic block to after the specified basic block in the IR.
void SILBasicBlock::moveAfter(SILBasicBlock *After) {
assert(getParent() && getParent() == After->getParent() &&
"Blocks must be in the same function");
diff --git a/lib/SIL/SILBuilder.cpp b/lib/SIL/SILBuilder.cpp
index 3c93f29..f1ac73c 100644
--- a/lib/SIL/SILBuilder.cpp
+++ b/lib/SIL/SILBuilder.cpp
@@ -144,7 +144,7 @@
return createBranch(Loc, TargetBlock, ArgsCopy);
}
-/// \brief Branch to the given block if there's an active insertion point,
+/// Branch to the given block if there's an active insertion point,
/// then move the insertion point to the end of that block.
void SILBuilder::emitBlock(SILBasicBlock *BB, SILLocation BranchLoc) {
if (!hasValidInsertionPoint()) {
diff --git a/lib/SIL/SILDeclRef.cpp b/lib/SIL/SILDeclRef.cpp
index 5538dba..e612eae 100644
--- a/lib/SIL/SILDeclRef.cpp
+++ b/lib/SIL/SILDeclRef.cpp
@@ -420,7 +420,7 @@
return dyn_cast<AbstractFunctionDecl>(getDecl());
}
-/// \brief True if the function should be treated as transparent.
+/// True if the function should be treated as transparent.
bool SILDeclRef::isTransparent() const {
if (isEnumElement())
return true;
@@ -442,7 +442,7 @@
return false;
}
-/// \brief True if the function should have its body serialized.
+/// True if the function should have its body serialized.
IsSerialized_t SILDeclRef::isSerialized() const {
DeclContext *dc;
if (auto closure = getAbstractClosureExpr())
@@ -528,7 +528,7 @@
return IsNotSerialized;
}
-/// \brief True if the function has an @inline(never) attribute.
+/// True if the function has an @inline(never) attribute.
bool SILDeclRef::isNoinline() const {
if (!hasDecl())
return false;
@@ -552,7 +552,7 @@
return false;
}
-/// \brief True if the function has the @inline(__always) attribute.
+/// True if the function has the @inline(__always) attribute.
bool SILDeclRef::isAlwaysInline() const {
if (!hasDecl())
return false;
diff --git a/lib/SIL/SILInstructions.cpp b/lib/SIL/SILInstructions.cpp
index 296a69b..7d37028 100644
--- a/lib/SIL/SILInstructions.cpp
+++ b/lib/SIL/SILInstructions.cpp
@@ -483,7 +483,7 @@
}
resultTypes.push_back(SILType::getSILTokenType(F.getASTContext()));
- resultOwnerships.push_back(ValueOwnershipKind::Trivial);
+ resultOwnerships.push_back(ValueOwnershipKind::Any);
SmallVector<SILValue, 32> typeDependentOperands;
collectTypeDependentOperands(typeDependentOperands, openedArchetypes, F,
diff --git a/lib/SIL/SILModule.cpp b/lib/SIL/SILModule.cpp
index 6cce609..ee8da6f 100644
--- a/lib/SIL/SILModule.cpp
+++ b/lib/SIL/SILModule.cpp
@@ -478,7 +478,7 @@
return SILLoader.get();
}
-/// \brief Given a conformance \p C and a protocol requirement \p Requirement,
+/// Given a conformance \p C and a protocol requirement \p Requirement,
/// search the witness table for the conformance and return the witness thunk
/// for the requirement.
std::pair<SILFunction *, SILWitnessTable *>
@@ -513,7 +513,7 @@
return std::make_pair(nullptr, nullptr);
}
-/// \brief Given a protocol \p Protocol and a requirement \p Requirement,
+/// Given a protocol \p Protocol and a requirement \p Requirement,
/// search the protocol's default witness table and return the default
/// witness thunk for the requirement.
std::pair<SILFunction *, SILDefaultWitnessTable *>
diff --git a/lib/SIL/SILOwnershipVerifier.cpp b/lib/SIL/SILOwnershipVerifier.cpp
index c49d4c3..1ee998d 100644
--- a/lib/SIL/SILOwnershipVerifier.cpp
+++ b/lib/SIL/SILOwnershipVerifier.cpp
@@ -353,7 +353,7 @@
// User's results to the worklist.
if (user->getResults().size()) {
for (SILValue result : user->getResults()) {
- if (result.getOwnershipKind() == ValueOwnershipKind::Trivial) {
+ if (result.getOwnershipKind() == ValueOwnershipKind::Any) {
continue;
}
@@ -399,13 +399,13 @@
// needing to be verified. If it isn't verified appropriately, assert
// when the verifier is destroyed.
auto succArgOwnershipKind = succArg->getOwnershipKind();
- if (!succArgOwnershipKind.isTrivialOrCompatibleWith(ownershipKind)) {
+ if (!succArgOwnershipKind.isCompatibleWith(ownershipKind)) {
// This is where the error would go.
continue;
}
- // If we have a trivial value, just continue.
- if (succArgOwnershipKind == ValueOwnershipKind::Trivial)
+ // If we have an any value, just continue.
+ if (succArgOwnershipKind == ValueOwnershipKind::Any)
continue;
// Otherwise add all end_borrow users for this BBArg to the
@@ -434,11 +434,8 @@
switch (arg->getOwnershipKind()) {
case ValueOwnershipKind::Guaranteed:
case ValueOwnershipKind::Unowned:
- case ValueOwnershipKind::Trivial:
- return true;
case ValueOwnershipKind::Any:
- llvm_unreachable(
- "Function arguments should never have ValueOwnershipKind::Any");
+ return true;
case ValueOwnershipKind::Owned:
break;
}
@@ -458,10 +455,8 @@
switch (yield->getOwnershipKind()) {
case ValueOwnershipKind::Guaranteed:
case ValueOwnershipKind::Unowned:
- case ValueOwnershipKind::Trivial:
- return true;
case ValueOwnershipKind::Any:
- llvm_unreachable("Yields should never have ValueOwnershipKind::Any");
+ return true;
case ValueOwnershipKind::Owned:
break;
}
@@ -709,8 +704,6 @@
if (!f->hasQualifiedOwnership() || !f->shouldVerifyOwnership())
return;
- assert(getOwnershipKind() != ValueOwnershipKind::Any &&
- "No values should have any ownership anymore");
ErrorBehaviorKind errorBehavior;
if (IsSILOwnershipVerifierTestingEnabled) {
errorBehavior = ErrorBehaviorKind::PrintMessageAndReturnFalse;
diff --git a/lib/SIL/SILPrinter.cpp b/lib/SIL/SILPrinter.cpp
index dad73ea..ff6a183 100644
--- a/lib/SIL/SILPrinter.cpp
+++ b/lib/SIL/SILPrinter.cpp
@@ -462,7 +462,7 @@
if (!i.Type)
return *this;
*this << " : ";
- if (i.OwnershipKind) {
+ if (i.OwnershipKind && *i.OwnershipKind != ValueOwnershipKind::Any) {
*this << "@" << i.OwnershipKind.getValue() << " ";
}
return *this << i.Type;
diff --git a/lib/SIL/SILProfiler.cpp b/lib/SIL/SILProfiler.cpp
index 84a0d6c..1a13208 100644
--- a/lib/SIL/SILProfiler.cpp
+++ b/lib/SIL/SILProfiler.cpp
@@ -381,16 +381,16 @@
#endif
};
-/// \brief A region of source code that can be mapped to a counter.
+/// A region of source code that can be mapped to a counter.
class SourceMappingRegion {
ASTNode Node;
CounterExpr *Count;
- /// \brief The region's starting location.
+ /// The region's starting location.
Optional<SourceLoc> StartLoc;
- /// \brief The region's ending location.
+ /// The region's ending location.
Optional<SourceLoc> EndLoc;
public:
@@ -620,22 +620,22 @@
private:
const SourceManager &SM;
- /// \brief Storage for counter expressions.
+ /// Storage for counter expressions.
std::forward_list<CounterExpr> Exprs;
- /// \brief The map of statements to counter expressions.
+ /// The map of statements to counter expressions.
llvm::DenseMap<ASTNode, CounterExpr *> CounterMap;
- /// \brief The source mapping regions for this function.
+ /// The source mapping regions for this function.
std::vector<SourceMappingRegion> SourceRegions;
- /// \brief A stack of currently live regions.
+ /// A stack of currently live regions.
std::vector<SourceMappingRegion> RegionStack;
- /// \brief A stack of active repeat-while loops.
+ /// A stack of active repeat-while loops.
std::vector<RepeatWhileStmt *> RepeatWhileStack;
- /// \brief A stack of active do-catch statements.
+ /// A stack of active do-catch statements.
std::vector<DoCatchStmt *> DoCatchStack;
CounterExpr *ExitCounter = nullptr;
@@ -644,10 +644,10 @@
NominalTypeDecl *ParentNominalType = nullptr;
- /// \brief Return true if \c Node has an associated counter.
+ /// Return true if \c Node has an associated counter.
bool hasCounter(ASTNode Node) { return CounterMap.count(Node); }
- /// \brief Return the region counter for \c Node.
+ /// Return the region counter for \c Node.
///
/// This should only be called on statements that have a dedicated counter.
CounterExpr &getCounter(ASTNode Node) {
@@ -655,13 +655,13 @@
return *CounterMap[Node];
}
- /// \brief Create a counter expression.
+ /// Create a counter expression.
CounterExpr &createCounter(CounterExpr &&Expr) {
Exprs.push_front(std::move(Expr));
return Exprs.front();
}
- /// \brief Create a counter expression for \c Node and add it to the map.
+ /// Create a counter expression for \c Node and add it to the map.
CounterExpr &assignCounter(ASTNode Node, CounterExpr &&Expr) {
assert(Node && "Assigning counter expression to non-existent AST node");
CounterExpr &Result = createCounter(std::move(Expr));
@@ -669,12 +669,12 @@
return Result;
}
- /// \brief Create a counter expression referencing \c Node's own counter.
+ /// Create a counter expression referencing \c Node's own counter.
CounterExpr &assignCounter(ASTNode Node) {
return assignCounter(Node, CounterExpr::Leaf(Node));
}
- /// \brief Add \c Expr to \c Node's counter.
+ /// Add \c Expr to \c Node's counter.
void addToCounter(ASTNode Node, CounterExpr &Expr) {
CounterExpr &Counter = getCounter(Node);
if (const CounterExpr *ReferencedCounter = Counter.getReferencedNode())
@@ -685,7 +685,7 @@
Counter = CounterExpr::Add(createCounter(std::move(Counter)), Expr);
}
- /// \brief Subtract \c Expr from \c Node's counter.
+ /// Subtract \c Expr from \c Node's counter.
void subtractFromCounter(ASTNode Node, CounterExpr &Expr) {
CounterExpr &Counter = getCounter(Node);
assert(!Counter.isZero() && "Cannot create a negative counter");
@@ -695,16 +695,16 @@
Counter = CounterExpr::Sub(createCounter(std::move(Counter)), Expr);
}
- /// \brief Return the current region's counter.
+ /// Return the current region's counter.
CounterExpr &getCurrentCounter() { return getRegion().getCounter(); }
- /// \brief Get the counter from the end of the most recent scope.
+ /// Get the counter from the end of the most recent scope.
CounterExpr &getExitCounter() {
assert(ExitCounter && "no exit counter available");
return *ExitCounter;
}
- /// \brief Set the exit count so we can leave the scope related to \c Node
+ /// Set the exit count so we can leave the scope related to \c Node
///
/// Returns the delta of the count on entering \c Node and exiting, or null if
/// there was no change.
@@ -715,7 +715,7 @@
return nullptr;
}
- /// \brief Adjust the count for control flow when exiting a scope.
+ /// Adjust the count for control flow when exiting a scope.
void adjustForNonLocalExits(ASTNode Scope, CounterExpr *ControlFlowAdjust) {
if (Parent.getAsDecl())
return;
@@ -744,24 +744,24 @@
RegionStack.emplace_back(ASTNode(), *Count, getEndLoc(Scope), None);
}
- /// \brief Push a region covering \c Node onto the stack.
+ /// Push a region covering \c Node onto the stack.
void pushRegion(ASTNode Node) {
RegionStack.emplace_back(Node, getCounter(Node), Node.getStartLoc(),
getEndLoc(Node));
}
- /// \brief Replace the current region's count by pushing an incomplete region.
+ /// Replace the current region's count by pushing an incomplete region.
void replaceCount(CounterExpr &&Expr, Optional<SourceLoc> Start = None) {
CounterExpr &Counter = createCounter(std::move(Expr));
RegionStack.emplace_back(ASTNode(), Counter, Start, None);
}
- /// \brief Get the location for the end of the last token in \c Node.
+ /// Get the location for the end of the last token in \c Node.
SourceLoc getEndLoc(ASTNode Node) {
return Lexer::getLocForEndOfToken(SM, Node.getEndLoc());
}
- /// \brief Pop regions from the stack into the function's list of regions.
+ /// Pop regions from the stack into the function's list of regions.
///
/// Adds all regions from \c ParentNode to the top of the stack to the
/// function's \c SourceRegions.
@@ -786,13 +786,13 @@
RegionStack.erase(ParentIt, E);
}
- /// \brief Return the currently active region.
+ /// Return the currently active region.
SourceMappingRegion &getRegion() {
assert(!RegionStack.empty() && "statement has no region");
return RegionStack.back();
}
- /// \brief Ensure that \c S is included in the current region.
+ /// Ensure that \c S is included in the current region.
void extendRegion(ASTNode S) {
SourceMappingRegion &Region = getRegion();
SourceLoc StartLoc = S.getStartLoc();
@@ -800,7 +800,7 @@
Region.setStartLoc(StartLoc);
}
- /// \brief Mark \c S as a terminator, starting a zero region.
+ /// Mark \c S as a terminator, starting a zero region.
void terminateRegion(ASTNode S) {
SourceMappingRegion &Region = getRegion();
if (!Region.hasEndLoc())
@@ -816,7 +816,7 @@
public:
CoverageMapping(const SourceManager &SM) : SM(SM) {}
- /// \brief Generate the coverage counter mapping regions from collected
+ /// Generate the coverage counter mapping regions from collected
/// source regions.
SILCoverageMap *emitSourceRegions(
SILModule &M, StringRef Name, StringRef PGOFuncName, uint64_t Hash,
diff --git a/lib/SIL/SILType.cpp b/lib/SIL/SILType.cpp
index 830acd6..0031d5c 100644
--- a/lib/SIL/SILType.cpp
+++ b/lib/SIL/SILType.cpp
@@ -420,7 +420,7 @@
switch (getConvention()) {
case ResultConvention::Indirect:
return SILModuleConventions(M).isSILIndirect(*this)
- ? ValueOwnershipKind::Trivial
+ ? ValueOwnershipKind::Any
: ValueOwnershipKind::Owned;
case ResultConvention::Autoreleased:
case ResultConvention::Owned:
@@ -428,7 +428,7 @@
case ResultConvention::Unowned:
case ResultConvention::UnownedInnerPointer:
if (IsTrivial)
- return ValueOwnershipKind::Trivial;
+ return ValueOwnershipKind::Any;
return ValueOwnershipKind::Unowned;
}
diff --git a/lib/SIL/SILUndef.cpp b/lib/SIL/SILUndef.cpp
index 6c05bc2..f8c3146 100644
--- a/lib/SIL/SILUndef.cpp
+++ b/lib/SIL/SILUndef.cpp
@@ -17,7 +17,7 @@
static ValueOwnershipKind getOwnershipKindForUndef(SILType type, SILModule &m) {
if (type.isTrivial(m))
- return ValueOwnershipKind::Trivial;
+ return ValueOwnershipKind::Any;
return ValueOwnershipKind::Owned;
}
diff --git a/lib/SIL/SILValue.cpp b/lib/SIL/SILValue.cpp
index 7ef07d5..c175cbd 100644
--- a/lib/SIL/SILValue.cpp
+++ b/lib/SIL/SILValue.cpp
@@ -152,7 +152,7 @@
// Trivial types can be passed using a variety of conventions. They always
// have trivial ownership.
if (Type.isTrivial(M)) {
- Value = ValueOwnershipKind::Trivial;
+ Value = ValueOwnershipKind::Any;
return;
}
@@ -160,18 +160,18 @@
case SILArgumentConvention::Indirect_In:
case SILArgumentConvention::Indirect_In_Constant:
Value = SILModuleConventions(M).useLoweredAddresses()
- ? ValueOwnershipKind::Trivial
+ ? ValueOwnershipKind::Any
: ValueOwnershipKind::Owned;
break;
case SILArgumentConvention::Indirect_In_Guaranteed:
Value = SILModuleConventions(M).useLoweredAddresses()
- ? ValueOwnershipKind::Trivial
+ ? ValueOwnershipKind::Any
: ValueOwnershipKind::Guaranteed;
break;
case SILArgumentConvention::Indirect_Inout:
case SILArgumentConvention::Indirect_InoutAliasable:
case SILArgumentConvention::Indirect_Out:
- Value = ValueOwnershipKind::Trivial;
+ Value = ValueOwnershipKind::Any;
return;
case SILArgumentConvention::Direct_Owned:
Value = ValueOwnershipKind::Owned;
@@ -190,8 +190,6 @@
llvm::raw_ostream &swift::operator<<(llvm::raw_ostream &os,
ValueOwnershipKind Kind) {
switch (Kind) {
- case ValueOwnershipKind::Trivial:
- return os << "trivial";
case ValueOwnershipKind::Unowned:
return os << "unowned";
case ValueOwnershipKind::Owned:
@@ -224,7 +222,6 @@
ValueOwnershipKind::ValueOwnershipKind(StringRef S) {
auto Result = llvm::StringSwitch<Optional<ValueOwnershipKind::innerty>>(S)
- .Case("trivial", ValueOwnershipKind::Trivial)
.Case("unowned", ValueOwnershipKind::Unowned)
.Case("owned", ValueOwnershipKind::Owned)
.Case("guaranteed", ValueOwnershipKind::Guaranteed)
@@ -239,7 +236,7 @@
ValueOwnershipKind::getProjectedOwnershipKind(SILModule &M,
SILType Proj) const {
if (Proj.isTrivial(M))
- return ValueOwnershipKind::Trivial;
+ return ValueOwnershipKind::Any;
return *this;
}
diff --git a/lib/SIL/SILVerifier.cpp b/lib/SIL/SILVerifier.cpp
index 45f719a..7ec511c6 100644
--- a/lib/SIL/SILVerifier.cpp
+++ b/lib/SIL/SILVerifier.cpp
@@ -1691,7 +1691,7 @@
"Inst with qualified ownership in a function that is not qualified");
SILValue Src = SI->getSrc();
require(Src->getType().isTrivial(SI->getModule()) ||
- Src.getOwnershipKind() == ValueOwnershipKind::Trivial,
+ Src.getOwnershipKind() == ValueOwnershipKind::Any,
"A store with trivial ownership must store a type with trivial "
"ownership");
break;
@@ -4656,7 +4656,7 @@
llvm::all_of(CBI->getTrueArgs(),
[](SILValue V) -> bool {
return V.getOwnershipKind() ==
- ValueOwnershipKind::Trivial;
+ ValueOwnershipKind::Any;
}),
"cond_br with critical edges must not have a non-trivial value");
}
@@ -4665,7 +4665,7 @@
llvm::all_of(CBI->getFalseArgs(),
[](SILValue V) -> bool {
return V.getOwnershipKind() ==
- ValueOwnershipKind::Trivial;
+ ValueOwnershipKind::Any;
}),
"cond_br with critical edges must not have a non-trivial value");
}
diff --git a/lib/SIL/ValueOwnership.cpp b/lib/SIL/ValueOwnership.cpp
index 5c3e131..8347d40 100644
--- a/lib/SIL/ValueOwnership.cpp
+++ b/lib/SIL/ValueOwnership.cpp
@@ -59,7 +59,7 @@
NEVER_LOADABLE_CHECKED_REF_STORAGE(Name, "...") \
ALWAYS_LOADABLE_CHECKED_REF_STORAGE(Name, "...")
#define UNCHECKED_REF_STORAGE(Name, ...) \
- CONSTANT_OWNERSHIP_INST(Trivial, RefTo##Name) \
+ CONSTANT_OWNERSHIP_INST(Any, RefTo##Name) \
CONSTANT_OWNERSHIP_INST(Unowned, Name##ToRef)
#include "swift/AST/ReferenceStorage.def"
@@ -69,7 +69,7 @@
CONSTANT_OWNERSHIP_INST(Owned, AllocExistentialBox)
CONSTANT_OWNERSHIP_INST(Owned, AllocRef)
CONSTANT_OWNERSHIP_INST(Owned, AllocRefDynamic)
-CONSTANT_OWNERSHIP_INST(Trivial, AllocValueBuffer)
+CONSTANT_OWNERSHIP_INST(Any, AllocValueBuffer)
CONSTANT_OWNERSHIP_INST(Owned, CopyBlock)
CONSTANT_OWNERSHIP_INST(Owned, CopyBlockWithoutEscaping)
CONSTANT_OWNERSHIP_INST(Owned, CopyValue)
@@ -89,58 +89,58 @@
// All addresses have trivial ownership. The values stored at the address may
// not though.
-CONSTANT_OWNERSHIP_INST(Trivial, AddressToPointer)
-CONSTANT_OWNERSHIP_INST(Trivial, AllocStack)
-CONSTANT_OWNERSHIP_INST(Trivial, BeginAccess)
-CONSTANT_OWNERSHIP_INST(Trivial, BridgeObjectToWord)
-CONSTANT_OWNERSHIP_INST(Trivial, ClassMethod)
-CONSTANT_OWNERSHIP_INST(Trivial, ClassifyBridgeObject)
-CONSTANT_OWNERSHIP_INST(Trivial, ObjCMethod)
-CONSTANT_OWNERSHIP_INST(Trivial, ExistentialMetatype)
-CONSTANT_OWNERSHIP_INST(Trivial, FloatLiteral)
-CONSTANT_OWNERSHIP_INST(Trivial, FunctionRef)
-CONSTANT_OWNERSHIP_INST(Trivial, DynamicFunctionRef)
-CONSTANT_OWNERSHIP_INST(Trivial, PreviousDynamicFunctionRef)
-CONSTANT_OWNERSHIP_INST(Trivial, GlobalAddr)
-CONSTANT_OWNERSHIP_INST(Trivial, IndexAddr)
-CONSTANT_OWNERSHIP_INST(Trivial, IndexRawPointer)
-CONSTANT_OWNERSHIP_INST(Trivial, InitEnumDataAddr)
-CONSTANT_OWNERSHIP_INST(Trivial, InitExistentialAddr)
-CONSTANT_OWNERSHIP_INST(Trivial, InitExistentialMetatype)
-CONSTANT_OWNERSHIP_INST(Trivial, IntegerLiteral)
-CONSTANT_OWNERSHIP_INST(Trivial, IsUnique)
-CONSTANT_OWNERSHIP_INST(Trivial, IsEscapingClosure)
-CONSTANT_OWNERSHIP_INST(Trivial, MarkUninitializedBehavior)
-CONSTANT_OWNERSHIP_INST(Trivial, Metatype)
-CONSTANT_OWNERSHIP_INST(Trivial, ObjCToThickMetatype)
-CONSTANT_OWNERSHIP_INST(Trivial, OpenExistentialAddr)
-CONSTANT_OWNERSHIP_INST(Trivial, OpenExistentialBox)
-CONSTANT_OWNERSHIP_INST(Trivial, OpenExistentialMetatype)
-CONSTANT_OWNERSHIP_INST(Trivial, PointerToAddress)
-CONSTANT_OWNERSHIP_INST(Trivial, PointerToThinFunction)
-CONSTANT_OWNERSHIP_INST(Trivial, ProjectBlockStorage)
-CONSTANT_OWNERSHIP_INST(Trivial, ProjectBox)
-CONSTANT_OWNERSHIP_INST(Trivial, ProjectExistentialBox)
-CONSTANT_OWNERSHIP_INST(Trivial, ProjectValueBuffer)
-CONSTANT_OWNERSHIP_INST(Trivial, RefElementAddr)
-CONSTANT_OWNERSHIP_INST(Trivial, RefTailAddr)
-CONSTANT_OWNERSHIP_INST(Trivial, RefToRawPointer)
-CONSTANT_OWNERSHIP_INST(Trivial, SelectEnumAddr)
-CONSTANT_OWNERSHIP_INST(Trivial, StringLiteral)
-CONSTANT_OWNERSHIP_INST(Trivial, StructElementAddr)
-CONSTANT_OWNERSHIP_INST(Trivial, SuperMethod)
-CONSTANT_OWNERSHIP_INST(Trivial, ObjCSuperMethod)
-CONSTANT_OWNERSHIP_INST(Trivial, TailAddr)
-CONSTANT_OWNERSHIP_INST(Trivial, ThickToObjCMetatype)
-CONSTANT_OWNERSHIP_INST(Trivial, ThinFunctionToPointer)
-CONSTANT_OWNERSHIP_INST(Trivial, TupleElementAddr)
-CONSTANT_OWNERSHIP_INST(Trivial, UncheckedAddrCast)
-CONSTANT_OWNERSHIP_INST(Trivial, UncheckedTakeEnumDataAddr)
-CONSTANT_OWNERSHIP_INST(Trivial, UncheckedTrivialBitCast)
-CONSTANT_OWNERSHIP_INST(Trivial, ValueMetatype)
-CONSTANT_OWNERSHIP_INST(Trivial, WitnessMethod)
-CONSTANT_OWNERSHIP_INST(Trivial, StoreBorrow)
-CONSTANT_OWNERSHIP_INST(Trivial, ConvertEscapeToNoEscape)
+CONSTANT_OWNERSHIP_INST(Any, AddressToPointer)
+CONSTANT_OWNERSHIP_INST(Any, AllocStack)
+CONSTANT_OWNERSHIP_INST(Any, BeginAccess)
+CONSTANT_OWNERSHIP_INST(Any, BridgeObjectToWord)
+CONSTANT_OWNERSHIP_INST(Any, ClassMethod)
+CONSTANT_OWNERSHIP_INST(Any, ClassifyBridgeObject)
+CONSTANT_OWNERSHIP_INST(Any, ObjCMethod)
+CONSTANT_OWNERSHIP_INST(Any, ExistentialMetatype)
+CONSTANT_OWNERSHIP_INST(Any, FloatLiteral)
+CONSTANT_OWNERSHIP_INST(Any, FunctionRef)
+CONSTANT_OWNERSHIP_INST(Any, DynamicFunctionRef)
+CONSTANT_OWNERSHIP_INST(Any, PreviousDynamicFunctionRef)
+CONSTANT_OWNERSHIP_INST(Any, GlobalAddr)
+CONSTANT_OWNERSHIP_INST(Any, IndexAddr)
+CONSTANT_OWNERSHIP_INST(Any, IndexRawPointer)
+CONSTANT_OWNERSHIP_INST(Any, InitEnumDataAddr)
+CONSTANT_OWNERSHIP_INST(Any, InitExistentialAddr)
+CONSTANT_OWNERSHIP_INST(Any, InitExistentialMetatype)
+CONSTANT_OWNERSHIP_INST(Any, IntegerLiteral)
+CONSTANT_OWNERSHIP_INST(Any, IsUnique)
+CONSTANT_OWNERSHIP_INST(Any, IsEscapingClosure)
+CONSTANT_OWNERSHIP_INST(Any, MarkUninitializedBehavior)
+CONSTANT_OWNERSHIP_INST(Any, Metatype)
+CONSTANT_OWNERSHIP_INST(Any, ObjCToThickMetatype)
+CONSTANT_OWNERSHIP_INST(Any, OpenExistentialAddr)
+CONSTANT_OWNERSHIP_INST(Any, OpenExistentialBox)
+CONSTANT_OWNERSHIP_INST(Any, OpenExistentialMetatype)
+CONSTANT_OWNERSHIP_INST(Any, PointerToAddress)
+CONSTANT_OWNERSHIP_INST(Any, PointerToThinFunction)
+CONSTANT_OWNERSHIP_INST(Any, ProjectBlockStorage)
+CONSTANT_OWNERSHIP_INST(Any, ProjectBox)
+CONSTANT_OWNERSHIP_INST(Any, ProjectExistentialBox)
+CONSTANT_OWNERSHIP_INST(Any, ProjectValueBuffer)
+CONSTANT_OWNERSHIP_INST(Any, RefElementAddr)
+CONSTANT_OWNERSHIP_INST(Any, RefTailAddr)
+CONSTANT_OWNERSHIP_INST(Any, RefToRawPointer)
+CONSTANT_OWNERSHIP_INST(Any, SelectEnumAddr)
+CONSTANT_OWNERSHIP_INST(Any, StringLiteral)
+CONSTANT_OWNERSHIP_INST(Any, StructElementAddr)
+CONSTANT_OWNERSHIP_INST(Any, SuperMethod)
+CONSTANT_OWNERSHIP_INST(Any, ObjCSuperMethod)
+CONSTANT_OWNERSHIP_INST(Any, TailAddr)
+CONSTANT_OWNERSHIP_INST(Any, ThickToObjCMetatype)
+CONSTANT_OWNERSHIP_INST(Any, ThinFunctionToPointer)
+CONSTANT_OWNERSHIP_INST(Any, TupleElementAddr)
+CONSTANT_OWNERSHIP_INST(Any, UncheckedAddrCast)
+CONSTANT_OWNERSHIP_INST(Any, UncheckedTakeEnumDataAddr)
+CONSTANT_OWNERSHIP_INST(Any, UncheckedTrivialBitCast)
+CONSTANT_OWNERSHIP_INST(Any, ValueMetatype)
+CONSTANT_OWNERSHIP_INST(Any, WitnessMethod)
+CONSTANT_OWNERSHIP_INST(Any, StoreBorrow)
+CONSTANT_OWNERSHIP_INST(Any, ConvertEscapeToNoEscape)
CONSTANT_OWNERSHIP_INST(Unowned, InitBlockStorageHeader)
// TODO: It would be great to get rid of these.
CONSTANT_OWNERSHIP_INST(Unowned, RawPointerToRef)
@@ -152,7 +152,7 @@
ValueOwnershipKind ValueOwnershipKindClassifier::visit##INST##Inst( \
INST##Inst *I) { \
if (I->getType().isTrivial(I->getModule())) { \
- return ValueOwnershipKind::Trivial; \
+ return ValueOwnershipKind::Any; \
} \
return ValueOwnershipKind::OWNERSHIP; \
}
@@ -201,54 +201,30 @@
// For a forwarding instruction, we loop over all operands and make sure that
// all non-trivial values have the same ownership.
ValueOwnershipKind
-ValueOwnershipKindClassifier::visitForwardingInst(SILInstruction *I,
- ArrayRef<Operand> Ops) {
+ValueOwnershipKindClassifier::visitForwardingInst(SILInstruction *i,
+ ArrayRef<Operand> ops) {
// A forwarding inst without operands must be trivial.
- if (Ops.empty())
- return ValueOwnershipKind::Trivial;
-
- // Find the first index where we have a trivial value.
- auto Iter = find_if(Ops, [&I](const Operand &Op) -> bool {
- if (I->isTypeDependentOperand(Op))
- return false;
- return Op.get().getOwnershipKind() != ValueOwnershipKind::Trivial;
- });
- // All trivial.
- if (Iter == Ops.end()) {
- return ValueOwnershipKind::Trivial;
- }
-
- // See if we have any Any. If we do, just return that for now.
- if (any_of(Ops, [&I](const Operand &Op) -> bool {
- if (I->isTypeDependentOperand(Op))
- return false;
- return Op.get().getOwnershipKind() == ValueOwnershipKind::Any;
- }))
+ if (ops.empty())
return ValueOwnershipKind::Any;
- unsigned Index = std::distance(Ops.begin(), Iter);
- ValueOwnershipKind Base = Ops[Index].get().getOwnershipKind();
+ auto mergedValue = ValueOwnershipKind::merge(makeOptionalTransformRange(
+ ops, [&i](const Operand &op) -> Optional<ValueOwnershipKind> {
+ if (i->isTypeDependentOperand(op))
+ return None;
+ return op.get().getOwnershipKind();
+ }));
- for (const Operand &Op : Ops.slice(Index + 1)) {
- if (I->isTypeDependentOperand(Op))
- continue;
- auto OpKind = Op.get().getOwnershipKind();
- if (OpKind.merge(ValueOwnershipKind::Trivial))
- continue;
-
- auto MergedValue = Base.merge(OpKind.Value);
- if (!MergedValue.hasValue()) {
- // If we have mismatched SILOwnership and sil ownership is not enabled,
- // just return Any for staging purposes. If SILOwnership is enabled, then
- // we must assert!
- if (!I->getModule().getOptions().EnableSILOwnership) {
- return ValueOwnershipKind::Any;
- }
- llvm_unreachable("Forwarding inst with mismatching ownership kinds?!");
+ if (!mergedValue.hasValue()) {
+ // If we have mismatched SILOwnership and sil ownership is not enabled,
+ // just return Any for staging purposes. If SILOwnership is enabled, then
+ // we must assert!
+ if (!i->getModule().getOptions().EnableSILOwnership) {
+ return ValueOwnershipKind::Any;
}
+ llvm_unreachable("Forwarding inst with mismatching ownership kinds?!");
}
- return Base;
+ return mergedValue.getValue();
}
#define FORWARDING_OWNERSHIP_INST(INST) \
@@ -315,40 +291,31 @@
return MDI->getValue().getOwnershipKind();
}
-ValueOwnershipKind ValueOwnershipKindClassifier::visitApplyInst(ApplyInst *AI) {
- SILModule &M = AI->getModule();
- bool IsTrivial = AI->getType().isTrivial(M);
- SILFunctionConventions fnConv(AI->getSubstCalleeType(), M);
- auto Results = fnConv.getDirectSILResults();
- // No results => empty tuple result => Trivial.
- if (Results.empty() || IsTrivial)
- return ValueOwnershipKind::Trivial;
+ValueOwnershipKind ValueOwnershipKindClassifier::visitApplyInst(ApplyInst *ai) {
+ SILModule &m = ai->getModule();
+ bool isTrivial = ai->getType().isTrivial(m);
+ // Quick is trivial check.
+ if (isTrivial)
+ return ValueOwnershipKind::Any;
- CanGenericSignature Sig = AI->getSubstCalleeType()->getGenericSignature();
- // Find the first index where we have a trivial value.
- auto Iter = find_if(Results, [&M, &Sig](const SILResultInfo &Info) -> bool {
- return Info.getOwnershipKind(M, Sig) != ValueOwnershipKind::Trivial;
- });
- // If we have all trivial, then we must be trivial.
- if (Iter == Results.end())
- return ValueOwnershipKind::Trivial;
+ SILFunctionConventions fnConv(ai->getSubstCalleeType(), m);
+ auto results = fnConv.getDirectSILResults();
+ // No results => Any.
+ if (results.empty())
+ return ValueOwnershipKind::Any;
- ValueOwnershipKind Base = Iter->getOwnershipKind(M, Sig);
-
- for (const SILResultInfo &ResultInfo :
- SILFunctionConventions::DirectSILResultRange(next(Iter),
- Results.end())) {
- auto RKind = ResultInfo.getOwnershipKind(M, Sig);
- if (RKind.merge(ValueOwnershipKind::Trivial))
- continue;
-
- auto MergedValue = Base.merge(RKind.Value);
- if (!MergedValue.hasValue()) {
- llvm_unreachable("Forwarding inst with mismatching ownership kinds?!");
- }
+ // Otherwise, map our results to their ownership kinds and then merge them!
+ CanGenericSignature sig = ai->getSubstCalleeType()->getGenericSignature();
+ auto resultOwnershipKinds =
+ makeTransformRange(results, [&](const SILResultInfo &info) {
+ return info.getOwnershipKind(m, sig);
+ });
+ auto mergedOwnershipKind = ValueOwnershipKind::merge(resultOwnershipKinds);
+ if (!mergedOwnershipKind) {
+ llvm_unreachable("Forwarding inst with mismatching ownership kinds?!");
}
- return Base;
+ return *mergedOwnershipKind;
}
ValueOwnershipKind ValueOwnershipKindClassifier::visitLoadInst(LoadInst *LI) {
@@ -357,9 +324,8 @@
case LoadOwnershipQualifier::Copy:
return ValueOwnershipKind::Owned;
case LoadOwnershipQualifier::Unqualified:
- return ValueOwnershipKind::Any;
case LoadOwnershipQualifier::Trivial:
- return ValueOwnershipKind::Trivial;
+ return ValueOwnershipKind::Any;
}
llvm_unreachable("Unhandled LoadOwnershipQualifier in switch.");
@@ -377,8 +343,8 @@
ValueOwnershipKind visitLLVMIntrinsic(BuiltinInst *BI,
llvm::Intrinsic::ID ID) {
// LLVM intrinsics do not traffic in ownership, so if we have a result, it
- // must be trivial.
- return ValueOwnershipKind::Trivial;
+ // must be any.
+ return ValueOwnershipKind::Any;
}
#define BUILTIN(ID, NAME, ATTRS) \
@@ -396,125 +362,125 @@
// This returns a value at +1 that is destroyed strictly /after/ the
// UnsafeGuaranteedEnd. This provides the guarantee that we want.
CONSTANT_OWNERSHIP_BUILTIN(Owned, UnsafeGuaranteed)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, AShr)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, Add)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, And)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, AssumeNonNegative)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, AssumeTrue)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, BitCast)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, ExactSDiv)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, ExactUDiv)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, FAdd)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, FCMP_OEQ)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, FCMP_OGE)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, FCMP_OGT)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, FCMP_OLE)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, FCMP_OLT)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, FCMP_ONE)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, FCMP_UEQ)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, FCMP_UGE)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, FCMP_UGT)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, FCMP_ULE)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, FCMP_ULT)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, FCMP_UNE)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, FDiv)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, FMul)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, FNeg)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, FPExt)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, FPToSI)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, FPToUI)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, FPTrunc)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, FRem)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, FSub)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, ICMP_EQ)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, ICMP_NE)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, ICMP_SGE)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, ICMP_SGT)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, ICMP_SLE)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, ICMP_SLT)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, ICMP_UGE)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, ICMP_UGT)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, ICMP_ULE)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, ICMP_ULT)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, IntToPtr)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, LShr)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, Mul)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, Or)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, PtrToInt)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, SAddOver)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, SDiv)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, SExt)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, SExtOrBitCast)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, SIToFP)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, SMulOver)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, SRem)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, SSubOver)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, Shl)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, Sub)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, Trunc)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, TruncOrBitCast)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, UAddOver)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, UDiv)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, UIToFP)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, UMulOver)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, URem)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, USubOver)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, Xor)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, ZExt)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, ZExtOrBitCast)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, FCMP_ORD)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, FCMP_UNO)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, OnFastPath)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, IsOptionalType)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, Sizeof)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, Strideof)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, StringObjectOr)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, IsPOD)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, IsBitwiseTakable)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, IsSameMetatype)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, Alignof)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, AllocRaw)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, AssertConf)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, UToSCheckedTrunc)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, SToSCheckedTrunc)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, SToUCheckedTrunc)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, UToUCheckedTrunc)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, IntToFPWithOverflow)
+CONSTANT_OWNERSHIP_BUILTIN(Any, AShr)
+CONSTANT_OWNERSHIP_BUILTIN(Any, Add)
+CONSTANT_OWNERSHIP_BUILTIN(Any, And)
+CONSTANT_OWNERSHIP_BUILTIN(Any, AssumeNonNegative)
+CONSTANT_OWNERSHIP_BUILTIN(Any, AssumeTrue)
+CONSTANT_OWNERSHIP_BUILTIN(Any, BitCast)
+CONSTANT_OWNERSHIP_BUILTIN(Any, ExactSDiv)
+CONSTANT_OWNERSHIP_BUILTIN(Any, ExactUDiv)
+CONSTANT_OWNERSHIP_BUILTIN(Any, FAdd)
+CONSTANT_OWNERSHIP_BUILTIN(Any, FCMP_OEQ)
+CONSTANT_OWNERSHIP_BUILTIN(Any, FCMP_OGE)
+CONSTANT_OWNERSHIP_BUILTIN(Any, FCMP_OGT)
+CONSTANT_OWNERSHIP_BUILTIN(Any, FCMP_OLE)
+CONSTANT_OWNERSHIP_BUILTIN(Any, FCMP_OLT)
+CONSTANT_OWNERSHIP_BUILTIN(Any, FCMP_ONE)
+CONSTANT_OWNERSHIP_BUILTIN(Any, FCMP_UEQ)
+CONSTANT_OWNERSHIP_BUILTIN(Any, FCMP_UGE)
+CONSTANT_OWNERSHIP_BUILTIN(Any, FCMP_UGT)
+CONSTANT_OWNERSHIP_BUILTIN(Any, FCMP_ULE)
+CONSTANT_OWNERSHIP_BUILTIN(Any, FCMP_ULT)
+CONSTANT_OWNERSHIP_BUILTIN(Any, FCMP_UNE)
+CONSTANT_OWNERSHIP_BUILTIN(Any, FDiv)
+CONSTANT_OWNERSHIP_BUILTIN(Any, FMul)
+CONSTANT_OWNERSHIP_BUILTIN(Any, FNeg)
+CONSTANT_OWNERSHIP_BUILTIN(Any, FPExt)
+CONSTANT_OWNERSHIP_BUILTIN(Any, FPToSI)
+CONSTANT_OWNERSHIP_BUILTIN(Any, FPToUI)
+CONSTANT_OWNERSHIP_BUILTIN(Any, FPTrunc)
+CONSTANT_OWNERSHIP_BUILTIN(Any, FRem)
+CONSTANT_OWNERSHIP_BUILTIN(Any, FSub)
+CONSTANT_OWNERSHIP_BUILTIN(Any, ICMP_EQ)
+CONSTANT_OWNERSHIP_BUILTIN(Any, ICMP_NE)
+CONSTANT_OWNERSHIP_BUILTIN(Any, ICMP_SGE)
+CONSTANT_OWNERSHIP_BUILTIN(Any, ICMP_SGT)
+CONSTANT_OWNERSHIP_BUILTIN(Any, ICMP_SLE)
+CONSTANT_OWNERSHIP_BUILTIN(Any, ICMP_SLT)
+CONSTANT_OWNERSHIP_BUILTIN(Any, ICMP_UGE)
+CONSTANT_OWNERSHIP_BUILTIN(Any, ICMP_UGT)
+CONSTANT_OWNERSHIP_BUILTIN(Any, ICMP_ULE)
+CONSTANT_OWNERSHIP_BUILTIN(Any, ICMP_ULT)
+CONSTANT_OWNERSHIP_BUILTIN(Any, IntToPtr)
+CONSTANT_OWNERSHIP_BUILTIN(Any, LShr)
+CONSTANT_OWNERSHIP_BUILTIN(Any, Mul)
+CONSTANT_OWNERSHIP_BUILTIN(Any, Or)
+CONSTANT_OWNERSHIP_BUILTIN(Any, PtrToInt)
+CONSTANT_OWNERSHIP_BUILTIN(Any, SAddOver)
+CONSTANT_OWNERSHIP_BUILTIN(Any, SDiv)
+CONSTANT_OWNERSHIP_BUILTIN(Any, SExt)
+CONSTANT_OWNERSHIP_BUILTIN(Any, SExtOrBitCast)
+CONSTANT_OWNERSHIP_BUILTIN(Any, SIToFP)
+CONSTANT_OWNERSHIP_BUILTIN(Any, SMulOver)
+CONSTANT_OWNERSHIP_BUILTIN(Any, SRem)
+CONSTANT_OWNERSHIP_BUILTIN(Any, SSubOver)
+CONSTANT_OWNERSHIP_BUILTIN(Any, Shl)
+CONSTANT_OWNERSHIP_BUILTIN(Any, Sub)
+CONSTANT_OWNERSHIP_BUILTIN(Any, Trunc)
+CONSTANT_OWNERSHIP_BUILTIN(Any, TruncOrBitCast)
+CONSTANT_OWNERSHIP_BUILTIN(Any, UAddOver)
+CONSTANT_OWNERSHIP_BUILTIN(Any, UDiv)
+CONSTANT_OWNERSHIP_BUILTIN(Any, UIToFP)
+CONSTANT_OWNERSHIP_BUILTIN(Any, UMulOver)
+CONSTANT_OWNERSHIP_BUILTIN(Any, URem)
+CONSTANT_OWNERSHIP_BUILTIN(Any, USubOver)
+CONSTANT_OWNERSHIP_BUILTIN(Any, Xor)
+CONSTANT_OWNERSHIP_BUILTIN(Any, ZExt)
+CONSTANT_OWNERSHIP_BUILTIN(Any, ZExtOrBitCast)
+CONSTANT_OWNERSHIP_BUILTIN(Any, FCMP_ORD)
+CONSTANT_OWNERSHIP_BUILTIN(Any, FCMP_UNO)
+CONSTANT_OWNERSHIP_BUILTIN(Any, OnFastPath)
+CONSTANT_OWNERSHIP_BUILTIN(Any, IsOptionalType)
+CONSTANT_OWNERSHIP_BUILTIN(Any, Sizeof)
+CONSTANT_OWNERSHIP_BUILTIN(Any, Strideof)
+CONSTANT_OWNERSHIP_BUILTIN(Any, StringObjectOr)
+CONSTANT_OWNERSHIP_BUILTIN(Any, IsPOD)
+CONSTANT_OWNERSHIP_BUILTIN(Any, IsBitwiseTakable)
+CONSTANT_OWNERSHIP_BUILTIN(Any, IsSameMetatype)
+CONSTANT_OWNERSHIP_BUILTIN(Any, Alignof)
+CONSTANT_OWNERSHIP_BUILTIN(Any, AllocRaw)
+CONSTANT_OWNERSHIP_BUILTIN(Any, AssertConf)
+CONSTANT_OWNERSHIP_BUILTIN(Any, UToSCheckedTrunc)
+CONSTANT_OWNERSHIP_BUILTIN(Any, SToSCheckedTrunc)
+CONSTANT_OWNERSHIP_BUILTIN(Any, SToUCheckedTrunc)
+CONSTANT_OWNERSHIP_BUILTIN(Any, UToUCheckedTrunc)
+CONSTANT_OWNERSHIP_BUILTIN(Any, IntToFPWithOverflow)
// This is surprising, Builtin.unreachable returns a "Never" value which is
// trivially typed.
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, Unreachable)
+CONSTANT_OWNERSHIP_BUILTIN(Any, Unreachable)
/// AtomicRMW has type (Builtin.RawPointer, T) -> T. But it provides overloads
/// for integer or rawpointer, so it should be trivial.
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, AtomicRMW)
+CONSTANT_OWNERSHIP_BUILTIN(Any, AtomicRMW)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, CondUnreachable)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, UnsafeGuaranteedEnd)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, GetObjCTypeEncoding)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, CanBeObjCClass)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, WillThrow)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, StaticReport)
+CONSTANT_OWNERSHIP_BUILTIN(Any, CondUnreachable)
+CONSTANT_OWNERSHIP_BUILTIN(Any, UnsafeGuaranteedEnd)
+CONSTANT_OWNERSHIP_BUILTIN(Any, GetObjCTypeEncoding)
+CONSTANT_OWNERSHIP_BUILTIN(Any, CanBeObjCClass)
+CONSTANT_OWNERSHIP_BUILTIN(Any, WillThrow)
+CONSTANT_OWNERSHIP_BUILTIN(Any, StaticReport)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, DestroyArray)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, CopyArray)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, TakeArrayNoAlias)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, TakeArrayFrontToBack)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, TakeArrayBackToFront)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, AssignCopyArrayNoAlias)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, AssignCopyArrayFrontToBack)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, AssignCopyArrayBackToFront)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, AssignTakeArray)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, UnexpectedError)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, ErrorInMain)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, DeallocRaw)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, Fence)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, AtomicStore)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, Once)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, OnceWithContext)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, TSanInoutAccess)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, Swift3ImplicitObjCEntrypoint)
-CONSTANT_OWNERSHIP_BUILTIN(Trivial, PoundAssert)
+CONSTANT_OWNERSHIP_BUILTIN(Any, DestroyArray)
+CONSTANT_OWNERSHIP_BUILTIN(Any, CopyArray)
+CONSTANT_OWNERSHIP_BUILTIN(Any, TakeArrayNoAlias)
+CONSTANT_OWNERSHIP_BUILTIN(Any, TakeArrayFrontToBack)
+CONSTANT_OWNERSHIP_BUILTIN(Any, TakeArrayBackToFront)
+CONSTANT_OWNERSHIP_BUILTIN(Any, AssignCopyArrayNoAlias)
+CONSTANT_OWNERSHIP_BUILTIN(Any, AssignCopyArrayFrontToBack)
+CONSTANT_OWNERSHIP_BUILTIN(Any, AssignCopyArrayBackToFront)
+CONSTANT_OWNERSHIP_BUILTIN(Any, AssignTakeArray)
+CONSTANT_OWNERSHIP_BUILTIN(Any, UnexpectedError)
+CONSTANT_OWNERSHIP_BUILTIN(Any, ErrorInMain)
+CONSTANT_OWNERSHIP_BUILTIN(Any, DeallocRaw)
+CONSTANT_OWNERSHIP_BUILTIN(Any, Fence)
+CONSTANT_OWNERSHIP_BUILTIN(Any, AtomicStore)
+CONSTANT_OWNERSHIP_BUILTIN(Any, Once)
+CONSTANT_OWNERSHIP_BUILTIN(Any, OnceWithContext)
+CONSTANT_OWNERSHIP_BUILTIN(Any, TSanInoutAccess)
+CONSTANT_OWNERSHIP_BUILTIN(Any, Swift3ImplicitObjCEntrypoint)
+CONSTANT_OWNERSHIP_BUILTIN(Any, PoundAssert)
#undef CONSTANT_OWNERSHIP_BUILTIN
@@ -523,7 +489,7 @@
ValueOwnershipKind ValueOwnershipKindBuiltinVisitor::visit##ID( \
BuiltinInst *BI, StringRef Attr) { \
if (BI->getType().isTrivial(BI->getModule())) { \
- return ValueOwnershipKind::Trivial; \
+ return ValueOwnershipKind::Any; \
} \
return ValueOwnershipKind::Unowned; \
}
diff --git a/lib/SIL/ValueUtils.cpp b/lib/SIL/ValueUtils.cpp
index 8486181..d02c750 100644
--- a/lib/SIL/ValueUtils.cpp
+++ b/lib/SIL/ValueUtils.cpp
@@ -18,38 +18,9 @@
Optional<ValueOwnershipKind>
swift::mergeSILValueOwnership(ArrayRef<SILValue> values) {
- // A forwarding inst without operands must be trivial.
- if (values.empty())
- return Optional<ValueOwnershipKind>(ValueOwnershipKind::Trivial);
-
- // Find the first index where we have a trivial value.
- auto iter = find_if(values, [](SILValue v) -> bool {
- return v.getOwnershipKind() != ValueOwnershipKind::Trivial;
- });
- // All trivial.
- if (iter == values.end()) {
- return Optional<ValueOwnershipKind>(ValueOwnershipKind::Trivial);
- }
-
- // See if we have any Any. If we do, just return that for now.
- if (any_of(values, [](SILValue v) -> bool {
- return v.getOwnershipKind() == ValueOwnershipKind::Any;
- }))
- return Optional<ValueOwnershipKind>(ValueOwnershipKind::Any);
-
- unsigned index = std::distance(values.begin(), iter);
- ValueOwnershipKind base = values[index].getOwnershipKind();
-
- for (SILValue v : values.slice(index + 1)) {
- auto opKind = v.getOwnershipKind();
- if (opKind.merge(ValueOwnershipKind::Trivial))
- continue;
-
- auto mergedValue = base.merge(opKind.Value);
- if (!mergedValue.hasValue()) {
- return None;
- }
- }
-
- return base;
+ auto range = makeTransformRange(values,
+ [](SILValue v) {
+ return v.getOwnershipKind();
+ });
+ return ValueOwnershipKind::merge(range);
}
diff --git a/lib/SILGen/Cleanup.h b/lib/SILGen/Cleanup.h
index 4a888a8..62b51fe 100644
--- a/lib/SILGen/Cleanup.h
+++ b/lib/SILGen/Cleanup.h
@@ -169,7 +169,7 @@
return stack.findAndAdvance(iter);
}
- /// \brief Emit a branch to the given jump destination,
+ /// Emit a branch to the given jump destination,
/// threading out through any cleanups we need to run. This does not pop the
/// cleanup stack.
///
diff --git a/lib/SILGen/ManagedValue.cpp b/lib/SILGen/ManagedValue.cpp
index ff0b190..a8f2019 100644
--- a/lib/SILGen/ManagedValue.cpp
+++ b/lib/SILGen/ManagedValue.cpp
@@ -220,9 +220,9 @@
if (getType().isTrivial(SGF.F.getModule()))
return true;
- // If we have an object and the object has trivial ownership, the same
+ // If we have an object and the object has any ownership, the same
// property applies.
- if (getType().isObject() && getOwnershipKind() == ValueOwnershipKind::Trivial)
+ if (getType().isObject() && getOwnershipKind() == ValueOwnershipKind::Any)
return true;
return hasCleanup();
diff --git a/lib/SILGen/ManagedValue.h b/lib/SILGen/ManagedValue.h
index 0055374..207ced4 100644
--- a/lib/SILGen/ManagedValue.h
+++ b/lib/SILGen/ManagedValue.h
@@ -78,7 +78,7 @@
: valueAndFlag(value, false), cleanup(cleanup) {
assert(value && "No value specified?!");
assert((!getType().isObject() ||
- value.getOwnershipKind() != ValueOwnershipKind::Trivial ||
+ value.getOwnershipKind() != ValueOwnershipKind::Any ||
!hasCleanup()) &&
"Objects with trivial ownership should never have a cleanup");
}
@@ -98,7 +98,7 @@
assert(value && "No value specified");
assert(value->getType().isObject() &&
"Expected borrowed rvalues to be objects");
- assert(value.getOwnershipKind() != ValueOwnershipKind::Trivial);
+ assert(value.getOwnershipKind() != ValueOwnershipKind::Any);
return ManagedValue(value, false, cleanup);
}
@@ -109,8 +109,8 @@
CleanupHandle cleanup) {
assert(value && "No value specified");
assert(value->getType().isAddress() && "Expected value to be an address");
- assert(value.getOwnershipKind() == ValueOwnershipKind::Trivial &&
- "Addresses always have trivial ownership");
+ assert(value.getOwnershipKind() == ValueOwnershipKind::Any &&
+ "Addresses always have any ownership");
return ManagedValue(value, false, cleanup);
}
@@ -127,7 +127,7 @@
assert(value && "No value specified");
assert(value->getType().isObject() &&
"Expected borrowed rvalues to be objects");
- assert(value.getOwnershipKind() != ValueOwnershipKind::Trivial);
+ assert(value.getOwnershipKind() != ValueOwnershipKind::Any);
return ManagedValue(value, false, CleanupHandle::invalid());
}
@@ -136,7 +136,7 @@
forBorrowedAddressRValue(SILValue value) {
assert(value && "No value specified");
assert(value->getType().isAddress() && "Expected value to be an address");
- assert(value.getOwnershipKind() == ValueOwnershipKind::Trivial &&
+ assert(value.getOwnershipKind() == ValueOwnershipKind::Any &&
"Addresses always have trivial ownership");
return ManagedValue(value, false, CleanupHandle::invalid());
}
@@ -152,14 +152,14 @@
/// Create a managed value for a +0 trivial object rvalue.
static ManagedValue forTrivialObjectRValue(SILValue value) {
assert(value->getType().isObject() && "Expected an object");
- assert(value.getOwnershipKind() == ValueOwnershipKind::Trivial);
+ assert(value.getOwnershipKind() == ValueOwnershipKind::Any);
return ManagedValue(value, false, CleanupHandle::invalid());
}
/// Create a managed value for a +0 trivial address rvalue.
static ManagedValue forTrivialAddressRValue(SILValue value) {
assert(value->getType().isAddress() && "Expected an address");
- assert(value.getOwnershipKind() == ValueOwnershipKind::Trivial);
+ assert(value.getOwnershipKind() == ValueOwnershipKind::Any);
return ManagedValue(value, false, CleanupHandle::invalid());
}
diff --git a/lib/SILGen/RValue.cpp b/lib/SILGen/RValue.cpp
index b38b284..bc8948d 100644
--- a/lib/SILGen/RValue.cpp
+++ b/lib/SILGen/RValue.cpp
@@ -400,7 +400,7 @@
"All loadable values in an RValue must be an object");
ValueOwnershipKind kind = v.getOwnershipKind();
- if (kind == ValueOwnershipKind::Trivial)
+ if (kind == ValueOwnershipKind::Any)
continue;
// Merge together whether or not the RValue has cleanups.
diff --git a/lib/SILGen/RValue.h b/lib/SILGen/RValue.h
index 1f35510..5d0e560 100644
--- a/lib/SILGen/RValue.h
+++ b/lib/SILGen/RValue.h
@@ -76,7 +76,7 @@
CanType type;
unsigned elementsToBeAdded;
- /// \brief Flag value used to mark an rvalue as invalid.
+ /// Flag value used to mark an rvalue as invalid.
///
/// The reasons why this can be true is:
///
diff --git a/lib/SILGen/SILGen.cpp b/lib/SILGen/SILGen.cpp
index b14ef57..07f31a6 100644
--- a/lib/SILGen/SILGen.cpp
+++ b/lib/SILGen/SILGen.cpp
@@ -675,10 +675,10 @@
/// Emit a function now, if it's externally usable or has been referenced in
/// the current TU, or remember how to emit it later if not.
template<typename /*void (SILFunction*)*/ Fn>
-void emitOrDelayFunction(SILGenModule &SGM,
- SILDeclRef constant,
- Fn &&emitter,
- bool forceEmission = false) {
+static void emitOrDelayFunction(SILGenModule &SGM,
+ SILDeclRef constant,
+ Fn &&emitter,
+ bool forceEmission = false) {
auto emitAfter = SGM.lastEmittedFunction;
SILFunction *f = nullptr;
@@ -1312,7 +1312,8 @@
case AccessorKind::Read:
return impl.getReadImpl() != ReadImplKind::Read;
case AccessorKind::Set:
- return impl.getWriteImpl() != WriteImplKind::Set;
+ return impl.getWriteImpl() != WriteImplKind::Set &&
+ impl.getWriteImpl() != WriteImplKind::StoredWithObservers;
case AccessorKind::Modify:
return impl.getReadWriteImpl() != ReadWriteImplKind::Modify;
#define ACCESSOR(ID) \
diff --git a/lib/SILGen/SILGen.h b/lib/SILGen/SILGen.h
index 432951d..fad174b 100644
--- a/lib/SILGen/SILGen.h
+++ b/lib/SILGen/SILGen.h
@@ -230,7 +230,7 @@
/// added to the current SILModule.
void emitFunction(FuncDecl *fd);
- /// \brief Generates code for the given closure expression and adds the
+ /// Generates code for the given closure expression and adds the
/// SILFunction to the current SILModule under the name SILDeclRef(ce).
SILFunction *emitClosure(AbstractClosureExpr *ce);
/// Generates code for the given ConstructorDecl and adds
@@ -307,6 +307,9 @@
/// Emit the default witness table for a resilient protocol.
void emitDefaultWitnessTable(ProtocolDecl *protocol);
+ /// Emit the self-conformance witness table for a protocol.
+ void emitSelfConformanceWitnessTable(ProtocolDecl *protocol);
+
/// Emit the lazy initializer function for a global pattern binding
/// declaration.
SILFunction *emitLazyGlobalInitializer(StringRef funcName,
diff --git a/lib/SILGen/SILGenBuilder.cpp b/lib/SILGen/SILGenBuilder.cpp
index cb9d2ae..8bc97e8 100644
--- a/lib/SILGen/SILGenBuilder.cpp
+++ b/lib/SILGen/SILGenBuilder.cpp
@@ -295,7 +295,7 @@
"value");
if (ty.isObject() &&
- originalValue.getOwnershipKind() == ValueOwnershipKind::Trivial) {
+ originalValue.getOwnershipKind() == ValueOwnershipKind::Any) {
return originalValue;
}
@@ -436,7 +436,7 @@
"address only type");
if (ty.isObject() &&
- originalValue.getOwnershipKind() == ValueOwnershipKind::Trivial) {
+ originalValue.getOwnershipKind() == ValueOwnershipKind::Any) {
return originalValue;
}
@@ -810,7 +810,7 @@
StoreOwnershipQualifier qualifier) {
SILModule &M = SGF.F.getModule();
CleanupCloner cloner(*this, value);
- if (value.getType().isTrivial(M) || value.getOwnershipKind() == ValueOwnershipKind::Trivial)
+ if (value.getType().isTrivial(M) || value.getOwnershipKind() == ValueOwnershipKind::Any)
qualifier = StoreOwnershipQualifier::Trivial;
createStore(loc, value.forward(SGF), address, qualifier);
return cloner.clone(address);
@@ -848,7 +848,7 @@
void SILGenBuilder::createStoreBorrowOrTrivial(SILLocation loc,
ManagedValue value,
SILValue address) {
- if (value.getOwnershipKind() == ValueOwnershipKind::Trivial) {
+ if (value.getOwnershipKind() == ValueOwnershipKind::Any) {
createStore(loc, value, address, StoreOwnershipQualifier::Trivial);
return;
}
diff --git a/lib/SILGen/SILGenDynamicCast.cpp b/lib/SILGen/SILGenDynamicCast.cpp
index 6890117..dfede8a 100644
--- a/lib/SILGen/SILGenDynamicCast.cpp
+++ b/lib/SILGen/SILGenDynamicCast.cpp
@@ -588,7 +588,7 @@
});
auto contBB = scope.exit();
- auto isa = contBB->createPhiArgument(i1Ty, ValueOwnershipKind::Trivial);
+ auto isa = contBB->createPhiArgument(i1Ty, ValueOwnershipKind::Any);
return isa;
}
diff --git a/lib/SILGen/SILGenExpr.cpp b/lib/SILGen/SILGenExpr.cpp
index 0cb5f55..668cf24 100644
--- a/lib/SILGen/SILGenExpr.cpp
+++ b/lib/SILGen/SILGenExpr.cpp
@@ -68,7 +68,7 @@
if (lowering.isTrivial())
return ManagedValue::forUnmanaged(v);
if (v->getType().isObject() &&
- v.getOwnershipKind() == ValueOwnershipKind::Trivial)
+ v.getOwnershipKind() == ValueOwnershipKind::Any)
return ManagedValue::forUnmanaged(v);
assert((!lowering.isAddressOnly() || !silConv.useLoweredAddresses()) &&
"cannot retain an unloadable type");
@@ -88,7 +88,7 @@
v = lowering.emitLoadOfCopy(B, loc, v, IsNotTake);
if (lowering.isTrivial())
return ManagedValue::forUnmanaged(v);
- if (v.getOwnershipKind() == ValueOwnershipKind::Trivial)
+ if (v.getOwnershipKind() == ValueOwnershipKind::Any)
return ManagedValue::forUnmanaged(v);
assert((!lowering.isAddressOnly() || !silConv.useLoweredAddresses()) &&
"cannot retain an unloadable type");
@@ -126,7 +126,7 @@
SILLocation loc, SILValue v, SILValue addr, const TypeLowering &lowering) {
assert(lowering.getLoweredType().getObjectType() == v->getType());
if (lowering.isTrivial() ||
- v.getOwnershipKind() == ValueOwnershipKind::Trivial) {
+ v.getOwnershipKind() == ValueOwnershipKind::Any) {
lowering.emitStore(B, loc, v, addr, StoreOwnershipQualifier::Trivial);
return ManagedValue::forUnmanaged(v);
}
@@ -150,7 +150,7 @@
if (lowering.isTrivial())
return ManagedValue::forUnmanaged(v);
- if (v.getOwnershipKind() == ValueOwnershipKind::Trivial)
+ if (v.getOwnershipKind() == ValueOwnershipKind::Any)
return ManagedValue::forUnmanaged(v);
if (v.getOwnershipKind() == ValueOwnershipKind::Guaranteed)
@@ -272,7 +272,7 @@
ManagedValue
SILGenFunction::emitManagedBorrowedArgumentWithCleanup(SILPhiArgument *arg) {
- if (arg->getOwnershipKind() == ValueOwnershipKind::Trivial ||
+ if (arg->getOwnershipKind() == ValueOwnershipKind::Any ||
arg->getType().isTrivial(arg->getModule())) {
return ManagedValue::forUnmanaged(arg);
}
@@ -299,7 +299,7 @@
return ManagedValue::forUnmanaged(borrowed);
if (original->getType().isObject() &&
- original.getOwnershipKind() == ValueOwnershipKind::Trivial)
+ original.getOwnershipKind() == ValueOwnershipKind::Any)
return ManagedValue::forUnmanaged(borrowed);
if (borrowed->getType().isObject()) {
@@ -321,7 +321,7 @@
if (lowering.isTrivial())
return ManagedValue::forUnmanaged(v);
if (v->getType().isObject() &&
- v.getOwnershipKind() == ValueOwnershipKind::Trivial) {
+ v.getOwnershipKind() == ValueOwnershipKind::Any) {
return ManagedValue::forUnmanaged(v);
}
return ManagedValue(v, enterDestroyCleanup(v));
@@ -1816,7 +1816,7 @@
if (valueTy.isObject()) {
// See if we have more accurate information from the ownership kind. This
// detects trivial cases of enums.
- if (value.getOwnershipKind() == ValueOwnershipKind::Trivial)
+ if (value.getOwnershipKind() == ValueOwnershipKind::Any)
return ManagedValue::forUnmanaged(value.getValue());
// Otherwise, copy the value and return.
@@ -3155,7 +3155,7 @@
subSGF.B.emitBlock(returnBB);
scope.pop();
SILValue returnVal = returnBB->createPhiArgument(i1Ty,
- ValueOwnershipKind::Trivial);
+ ValueOwnershipKind::Any);
auto returnBoolVal = subSGF.B.createStruct(loc,
SILType::getPrimitiveObjectType(boolTy), returnVal);
subSGF.B.createReturn(loc, returnBoolVal);
diff --git a/lib/SILGen/SILGenFunction.h b/lib/SILGen/SILGenFunction.h
index 3384eae..1cdcaeb 100644
--- a/lib/SILGen/SILGenFunction.h
+++ b/lib/SILGen/SILGenFunction.h
@@ -298,15 +298,15 @@
/// createBasicBlock().)
FunctionSection CurFunctionSection = FunctionSection::Ordinary;
- /// \brief Does this function require a non-void direct return?
+ /// Does this function require a non-void direct return?
bool NeedsReturn = false;
- /// \brief Is emission currently within a formal modification?
+ /// Is emission currently within a formal modification?
bool isInFormalEvaluationScope() const {
return FormalEvalContext.isInFormalEvaluationScope();
}
- /// \brief Is emission currently within an inout conversion?
+ /// Is emission currently within an inout conversion?
bool InInOutConversionScope = false;
/// The SILGenBuilder used to construct the SILFunction. It is what maintains
@@ -343,13 +343,13 @@
/// be in the postmatter.
JumpDest CoroutineUnwindDest = JumpDest::invalid();
- /// \brief The SIL location corresponding to the AST node being processed.
+ /// The SIL location corresponding to the AST node being processed.
SILLocation CurrentSILLoc;
- /// \brief This records information about the currently active cleanups.
+ /// This records information about the currently active cleanups.
CleanupManager Cleanups;
- /// \brief The current context where formal evaluation cleanups are managed.
+ /// The current context where formal evaluation cleanups are managed.
FormalEvaluationContext FormalEvalContext;
/// VarLoc - representation of an emitted local variable or constant. There
@@ -559,9 +559,9 @@
// Entry points for codegen
//===--------------------------------------------------------------------===//
- /// \brief Generates code for a FuncDecl.
+ /// Generates code for a FuncDecl.
void emitFunction(FuncDecl *fd);
- /// \brief Emits code for a ClosureExpr.
+ /// Emits code for a ClosureExpr.
void emitClosure(AbstractClosureExpr *ce);
/// Generates code for a class destroying destructor. This
/// emits the body code from the DestructorDecl, calls the base class
@@ -651,7 +651,8 @@
SubstitutionMap reqtSubs,
SILDeclRef witness,
SubstitutionMap witnessSubs,
- IsFreeFunctionWitness_t isFree);
+ IsFreeFunctionWitness_t isFree,
+ bool isSelfConformance);
/// Convert a block to a native function with a thunk.
ManagedValue emitBlockToFunc(SILLocation loc,
@@ -775,7 +776,7 @@
void bindParametersForForwarding(const ParameterList *params,
SmallVectorImpl<SILValue> ¶meters);
- /// \brief Create (but do not emit) the epilog branch, and save the
+ /// Create (but do not emit) the epilog branch, and save the
/// current cleanups depth as the destination for return statement branches.
///
/// \param returnType If non-null, the epilog block will be created with an
@@ -788,7 +789,7 @@
void prepareRethrowEpilog(CleanupLocation l);
void prepareCoroutineUnwindEpilog(CleanupLocation l);
- /// \brief Branch to and emit the epilog basic block. This will fuse
+ /// Branch to and emit the epilog basic block. This will fuse
/// the epilog to the current basic block if the epilog bb has no predecessor.
/// The insertion point will be moved into the epilog block if it is
/// reachable.
@@ -804,7 +805,7 @@
std::pair<Optional<SILValue>, SILLocation>
emitEpilogBB(SILLocation TopLevelLoc);
- /// \brief Emits a standard epilog which runs top-level cleanups then returns
+ /// Emits a standard epilog which runs top-level cleanups then returns
/// the function return value, if any. This can be customized by clients, who
/// set UsesCustomEpilog to true, and optionally inject their own code into
/// the epilog block before calling this. If they do this, their code is run
@@ -819,10 +820,10 @@
/// logic.
SILLocation emitEpilog(SILLocation TopLevelLoc,bool UsesCustomEpilog = false);
- /// \brief Emits the standard rethrow epilog using a Swift error result.
+ /// Emits the standard rethrow epilog using a Swift error result.
void emitRethrowEpilog(SILLocation topLevelLoc);
- /// \brief Emits the coroutine-unwind epilog.
+ /// Emits the coroutine-unwind epilog.
void emitCoroutineUnwindEpilog(SILLocation topLevelLoc);
/// emitSelfDecl - Emit a SILArgument for 'self', register it in varlocs, set
@@ -912,19 +913,19 @@
SourceLocArgs
emitSourceLocationArgs(SourceLoc loc, SILLocation emitLoc);
- /// \brief Emit a call to the library intrinsic _doesOptionalHaveValue.
+ /// Emit a call to the library intrinsic _doesOptionalHaveValue.
///
/// The result is a Builtin.Int1.
SILValue emitDoesOptionalHaveValue(SILLocation loc, SILValue addrOrValue);
- /// \brief Emit a switch_enum to call the library intrinsic
+ /// Emit a switch_enum to call the library intrinsic
/// _diagnoseUnexpectedNilOptional if the optional has no value. Return the
/// MangedValue resulting from the success case.
ManagedValue emitPreconditionOptionalHasValue(SILLocation loc,
ManagedValue optional,
bool isImplicitUnwrap);
- /// \brief Emit a call to the library intrinsic _getOptionalValue
+ /// Emit a call to the library intrinsic _getOptionalValue
/// given the address of the optional, which checks that an optional contains
/// some value and either returns the value or traps if there is none.
ManagedValue emitCheckedGetOptionalValueFrom(SILLocation loc,
@@ -933,7 +934,7 @@
const TypeLowering &optTL,
SGFContext C);
- /// \brief Extract the value from an optional, which must be known to contain
+ /// Extract the value from an optional, which must be known to contain
/// a value.
ManagedValue emitUncheckedGetOptionalValueFrom(SILLocation loc,
ManagedValue addrOrValue,
@@ -1000,7 +1001,7 @@
SILType loweredOpenedType,
AccessKind accessKind);
- /// \brief Wrap the given value in an existential container.
+ /// Wrap the given value in an existential container.
///
/// \param concreteFormalType AST type of value.
/// \param concreteTL Type lowering of value.
@@ -1578,7 +1579,7 @@
~OpaqueValueRAII();
};
- /// \brief Emit a conditional checked cast branch. Does not
+ /// Emit a conditional checked cast branch. Does not
/// re-abstract the argument to the success branch. Terminates the
/// current BB.
///
@@ -1600,7 +1601,7 @@
ProfileCounter TrueCount = ProfileCounter(),
ProfileCounter FalseCount = ProfileCounter());
- /// \brief Emit a conditional checked cast branch, starting from an
+ /// Emit a conditional checked cast branch, starting from an
/// expression. Terminates the current BB.
///
/// \param loc The AST location associated with the operation.
diff --git a/lib/SILGen/SILGenPattern.cpp b/lib/SILGen/SILGenPattern.cpp
index 28820da..69d4b0d 100644
--- a/lib/SILGen/SILGenPattern.cpp
+++ b/lib/SILGen/SILGenPattern.cpp
@@ -2463,7 +2463,7 @@
} else {
SILValue arg = caseBB->getArgument(argIndex++);
assert(arg.getOwnershipKind() == ValueOwnershipKind::Owned ||
- arg.getOwnershipKind() == ValueOwnershipKind::Trivial);
+ arg.getOwnershipKind() == ValueOwnershipKind::Any);
mv = SGF.emitManagedRValueWithCleanup(arg);
}
diff --git a/lib/SILGen/SILGenPoly.cpp b/lib/SILGen/SILGenPoly.cpp
index 40956d4..90c9e55 100644
--- a/lib/SILGen/SILGenPoly.cpp
+++ b/lib/SILGen/SILGenPoly.cpp
@@ -1423,7 +1423,7 @@
case ParameterConvention::Direct_Owned:
case ParameterConvention::Indirect_In:
if (!input.hasCleanup() &&
- input.getOwnershipKind() != ValueOwnershipKind::Trivial)
+ input.getOwnershipKind() != ValueOwnershipKind::Any)
input = input.copyUnmanaged(SGF, Loc);
break;
@@ -1640,8 +1640,8 @@
return SGF.emitManagedRValueWithCleanup(value);
case ParameterConvention::Direct_Guaranteed:
case ParameterConvention::Direct_Unowned:
- if (value.getOwnershipKind() == ValueOwnershipKind::Trivial)
- return ManagedValue::forTrivialObjectRValue(value);
+ if (value.getOwnershipKind() == ValueOwnershipKind::Any)
+ return ManagedValue::forUnmanaged(value);
return ManagedValue::forBorrowedObjectRValue(value);
case ParameterConvention::Indirect_In_Guaranteed:
return ManagedValue::forBorrowedAddressRValue(value);
@@ -2630,8 +2630,7 @@
Scope S(SGF.Cleanups, CleanupLocation::get(Loc));
// First create an rvalue cleanup for our direct result.
- assert(innerResult.getOwnershipKind() == ValueOwnershipKind::Owned ||
- innerResult.getOwnershipKind() == ValueOwnershipKind::Trivial);
+ assert(innerResult.getOwnershipKind().isCompatibleWith(ValueOwnershipKind::Owned));
executeInnerTuple(innerResult, innerDirectResults);
// Then allow the cleanups to be emitted in the proper reverse order.
}
@@ -3575,15 +3574,23 @@
enum class WitnessDispatchKind {
Static,
Dynamic,
- Class
+ Class,
+ Witness
};
-static WitnessDispatchKind getWitnessDispatchKind(SILDeclRef witness) {
+static WitnessDispatchKind getWitnessDispatchKind(SILDeclRef witness,
+ bool isSelfConformance) {
auto *decl = witness.getDecl();
+ if (isSelfConformance) {
+ assert(isa<ProtocolDecl>(decl->getDeclContext()));
+ return WitnessDispatchKind::Witness;
+ }
+
ClassDecl *C = decl->getDeclContext()->getSelfClassDecl();
- if (!C)
+ if (!C) {
return WitnessDispatchKind::Static;
+ }
// If the witness is dynamic, go through dynamic dispatch.
if (decl->isObjCDynamic()) {
@@ -3630,6 +3637,7 @@
switch (witnessKind) {
case WitnessDispatchKind::Static:
case WitnessDispatchKind::Dynamic:
+ case WitnessDispatchKind::Witness:
return SGM.Types.getConstantInfo(witness).SILFnType;
case WitnessDispatchKind::Class:
return SGM.Types.getConstantOverrideType(witness);
@@ -3638,11 +3646,21 @@
llvm_unreachable("Unhandled WitnessDispatchKind in switch.");
}
+static std::pair<CanType, ProtocolConformanceRef>
+getSelfTypeAndConformanceForWitness(SILDeclRef witness, SubstitutionMap subs) {
+ auto protocol = cast<ProtocolDecl>(witness.getDecl()->getDeclContext());
+ auto selfParam = protocol->getProtocolSelfType()->getCanonicalType();
+ auto type = subs.getReplacementTypes()[0];
+ auto conf = *subs.lookupConformance(selfParam, protocol);
+ return {type->getCanonicalType(), conf};
+}
+
static SILValue
getWitnessFunctionRef(SILGenFunction &SGF,
SILDeclRef witness,
CanSILFunctionType witnessFTy,
WitnessDispatchKind witnessKind,
+ SubstitutionMap witnessSubs,
SmallVectorImpl<ManagedValue> &witnessParams,
SILLocation loc) {
switch (witnessKind) {
@@ -3650,6 +3668,14 @@
return SGF.emitGlobalFunctionRef(loc, witness);
case WitnessDispatchKind::Dynamic:
return SGF.emitDynamicMethodRef(loc, witness, witnessFTy).getValue();
+ case WitnessDispatchKind::Witness: {
+ auto typeAndConf =
+ getSelfTypeAndConformanceForWitness(witness, witnessSubs);
+ return SGF.B.createWitnessMethod(loc, typeAndConf.first,
+ typeAndConf.second,
+ witness,
+ SILType::getPrimitiveObjectType(witnessFTy));
+ }
case WitnessDispatchKind::Class: {
SILValue selfPtr = witnessParams.back().getValue();
return SGF.emitClassMethodRef(loc, selfPtr, witness, witnessFTy);
@@ -3659,13 +3685,32 @@
llvm_unreachable("Unhandled WitnessDispatchKind in switch.");
}
+static ManagedValue
+emitOpenExistentialInSelfConformance(SILGenFunction &SGF, SILLocation loc,
+ SILDeclRef witness,
+ SubstitutionMap subs, ManagedValue value,
+ SILParameterInfo destParameter) {
+ auto typeAndConf = getSelfTypeAndConformanceForWitness(witness, subs);
+ auto archetype = typeAndConf.first->castTo<ArchetypeType>();
+ assert(archetype->isOpenedExistential());
+
+ auto openedTy = destParameter.getSILStorageType();
+ auto state = SGF.emitOpenExistential(loc, value, archetype, openedTy,
+ destParameter.isIndirectMutating()
+ ? AccessKind::ReadWrite
+ : AccessKind::Read);
+
+ return state.Value;
+}
+
void SILGenFunction::emitProtocolWitness(AbstractionPattern reqtOrigTy,
CanAnyFunctionType reqtSubstTy,
SILDeclRef requirement,
SubstitutionMap reqtSubs,
SILDeclRef witness,
SubstitutionMap witnessSubs,
- IsFreeFunctionWitness_t isFree) {
+ IsFreeFunctionWitness_t isFree,
+ bool isSelfConformance) {
// FIXME: Disable checks that the protocol witness carries debug info.
// Should we carry debug info for witnesses?
F.setBare(IsBare);
@@ -3679,7 +3724,7 @@
FullExpr scope(Cleanups, cleanupLoc);
FormalEvaluationScope formalEvalScope(*this);
- auto witnessKind = getWitnessDispatchKind(witness);
+ auto witnessKind = getWitnessDispatchKind(witness, isSelfConformance);
auto thunkTy = F.getLoweredFunctionType();
SmallVector<ManagedValue, 8> origParams;
@@ -3704,9 +3749,24 @@
->getCanonicalType());
}
+ // Get the lowered type of the witness.
+ auto origWitnessFTy = getWitnessFunctionType(SGM, witness, witnessKind);
+ auto witnessFTy = origWitnessFTy;
+ if (!witnessSubs.empty())
+ witnessFTy = origWitnessFTy->substGenericArgs(SGM.M, witnessSubs);
+
auto reqtSubstParams = reqtSubstTy.getParams();
auto witnessSubstParams = witnessSubstTy.getParams();
+ // For a self-conformance, open the self parameter.
+ if (isSelfConformance) {
+ assert(!isFree && "shouldn't have a free witness for a self-conformance");
+ origParams.back() =
+ emitOpenExistentialInSelfConformance(*this, loc, witness, witnessSubs,
+ origParams.back(),
+ witnessFTy->getSelfParameter());
+ }
+
// For a free function witness, discard the 'self' parameter of the
// requirement.
if (isFree) {
@@ -3716,11 +3776,6 @@
// Translate the argument values from the requirement abstraction level to
// the substituted signature of the witness.
- auto origWitnessFTy = getWitnessFunctionType(SGM, witness, witnessKind);
- auto witnessFTy = origWitnessFTy;
- if (!witnessSubs.empty())
- witnessFTy = origWitnessFTy->substGenericArgs(SGM.M, witnessSubs);
-
SmallVector<ManagedValue, 8> witnessParams;
AbstractionPattern witnessOrigTy(witnessInfo.LoweredType);
TranslateArguments(*this, loc,
@@ -3733,7 +3788,7 @@
SILValue witnessFnRef = getWitnessFunctionRef(*this, witness,
origWitnessFTy,
- witnessKind,
+ witnessKind, witnessSubs,
witnessParams, loc);
auto coroutineKind =
diff --git a/lib/SILGen/SILGenType.cpp b/lib/SILGen/SILGenType.cpp
index 4be10a3..d53c888 100644
--- a/lib/SILGen/SILGenType.cpp
+++ b/lib/SILGen/SILGenType.cpp
@@ -364,6 +364,11 @@
}
};
+static IsSerialized_t isConformanceSerialized(RootProtocolConformance *conf) {
+ return SILWitnessTable::conformanceIsSerialized(conf)
+ ? IsSerialized : IsNotSerialized;
+}
+
/// Emit a witness table for a protocol conformance.
class SILGenConformance : public SILGenWitnessTable<SILGenConformance> {
using super = SILGenWitnessTable<SILGenConformance>;
@@ -380,16 +385,11 @@
// We only need to emit witness tables for base NormalProtocolConformances.
: SGM(SGM), Conformance(C->getRootNormalConformance()),
Linkage(getLinkageForProtocolConformance(Conformance,
- ForDefinition))
+ ForDefinition)),
+ Serialized(isConformanceSerialized(Conformance))
{
auto *proto = Conformance->getProtocol();
- Serialized = IsNotSerialized;
-
- // ... or if the conformance itself thinks it should be.
- if (SILWitnessTable::conformanceIsSerialized(Conformance))
- Serialized = IsSerialized;
-
// Not all protocols use witness tables; in this case we just skip
// all of emit() below completely.
if (!Lowering::TypeConverter::protocolRequiresWitnessTable(proto))
@@ -627,18 +627,13 @@
conformance = *reqtSubMap.lookupConformance(self, requirement);
}
- CanAnyFunctionType reqtSubstTy;
- if (genericEnv) {
- auto *genericSig = genericEnv->getGenericSignature();
- reqtSubstTy = CanGenericFunctionType::get(
- genericSig->getCanonicalSignature(),
- substReqtTy->getParams(), substReqtTy.getResult(),
- reqtOrigTy->getExtInfo());
- } else {
- reqtSubstTy = CanFunctionType::get(substReqtTy->getParams(),
- substReqtTy.getResult(),
- reqtOrigTy->getExtInfo());
- }
+ CanAnyFunctionType reqtSubstTy =
+ CanAnyFunctionType::get(genericEnv ? genericEnv->getGenericSignature()
+ ->getCanonicalSignature()
+ : nullptr,
+ substReqtTy->getParams(),
+ substReqtTy.getResult(),
+ reqtOrigTy->getExtInfo());
// Coroutine lowering requires us to provide these substitutions
// in order to recreate the appropriate yield types for the accessor
@@ -701,13 +696,141 @@
SGF.emitProtocolWitness(AbstractionPattern(reqtOrigTy), reqtSubstTy,
requirement, reqtSubMap, witnessRef,
- witnessSubs, isFree);
+ witnessSubs, isFree, /*isSelfConformance*/ false);
return f;
}
namespace {
+static SILFunction *emitSelfConformanceWitness(SILGenModule &SGM,
+ SelfProtocolConformance *conformance,
+ SILLinkage linkage,
+ SILDeclRef requirement) {
+ auto requirementInfo = SGM.Types.getConstantInfo(requirement);
+
+ // Work out the lowered function type of the SIL witness thunk.
+ auto reqtOrigTy = cast<GenericFunctionType>(requirementInfo.LoweredType);
+
+ // The transformations we do here don't work for generic requirements.
+ GenericEnvironment *genericEnv = nullptr;
+
+ // A mapping from the requirement's generic signature to the type parameters
+ // of the witness thunk (which is non-generic).
+ auto protocol = conformance->getProtocol();
+ auto protocolType = protocol->getDeclaredInterfaceType();
+ auto reqtSubs = SubstitutionMap::getProtocolSubstitutions(protocol,
+ protocolType,
+ ProtocolConformanceRef(protocol));
+
+ // Open the protocol type.
+ auto openedType = ArchetypeType::getOpened(protocolType);
+
+ // Form the substitutions for calling the witness.
+ auto witnessSubs = SubstitutionMap::getProtocolSubstitutions(protocol,
+ openedType,
+ ProtocolConformanceRef(protocol));
+
+ // Substitute to get the formal substituted type of the thunk.
+ auto reqtSubstTy =
+ cast<AnyFunctionType>(reqtOrigTy.subst(reqtSubs)->getCanonicalType());
+
+ // Substitute into the requirement type to get the type of the thunk.
+ auto witnessSILFnType =
+ requirementInfo.SILFnType->substGenericArgs(SGM.M, reqtSubs);
+
+ // Mangle the name of the witness thunk.
+ std::string name = [&] {
+ Mangle::ASTMangler mangler;
+ return mangler.mangleWitnessThunk(conformance, requirement.getDecl());
+ }();
+
+ SILGenFunctionBuilder builder(SGM);
+ auto *f = builder.createFunction(
+ linkage, name, witnessSILFnType, genericEnv,
+ SILLocation(requirement.getDecl()), IsNotBare, IsTransparent,
+ IsSerialized, IsNotDynamic, ProfileCounter(), IsThunk,
+ SubclassScope::NotApplicable, InlineDefault);
+
+ f->setDebugScope(new (SGM.M)
+ SILDebugScope(RegularLocation(requirement.getDecl()), f));
+
+ PrettyStackTraceSILFunction trace("generating protocol witness thunk", f);
+
+ // Create the witness.
+ SILGenFunction SGF(SGM, *f, SGM.SwiftModule);
+
+ auto isFree = isFreeFunctionWitness(requirement.getDecl(),
+ requirement.getDecl());
+
+ SGF.emitProtocolWitness(AbstractionPattern(reqtOrigTy), reqtSubstTy,
+ requirement, reqtSubs, requirement,
+ witnessSubs, isFree, /*isSelfConformance*/ true);
+
+ return f;
+}
+
+/// Emit a witness table for a self-conformance.
+class SILGenSelfConformanceWitnessTable
+ : public SILWitnessVisitor<SILGenSelfConformanceWitnessTable> {
+ using super = SILWitnessVisitor<SILGenSelfConformanceWitnessTable>;
+
+ SILGenModule &SGM;
+ SelfProtocolConformance *conformance;
+ SILLinkage linkage;
+ IsSerialized_t serialized;
+
+ SmallVector<SILWitnessTable::Entry, 8> entries;
+public:
+ SILGenSelfConformanceWitnessTable(SILGenModule &SGM,
+ SelfProtocolConformance *conformance)
+ : SGM(SGM), conformance(conformance),
+ linkage(getLinkageForProtocolConformance(conformance, ForDefinition)),
+ serialized(isConformanceSerialized(conformance)) {
+ }
+
+ void emit() {
+ // Add entries for all the requirements.
+ visitProtocolDecl(conformance->getProtocol());
+
+ // Create the witness table.
+ (void) SILWitnessTable::create(SGM.M, linkage, serialized, conformance,
+ entries, /*conditional*/ {});
+ }
+
+ void addProtocolConformanceDescriptor() {}
+
+ void addOutOfLineBaseProtocol(ProtocolDecl *protocol) {
+ // This is an unnecessary restriction that's just not necessary for Error.
+ llvm_unreachable("base protocols not supported in self-conformance");
+ }
+
+ // These are real semantic restrictions.
+ void addAssociatedConformance(AssociatedConformance conformance) {
+ llvm_unreachable("associated conformances not supported in self-conformance");
+ }
+ void addAssociatedType(AssociatedType type) {
+ llvm_unreachable("associated types not supported in self-conformance");
+ }
+ void addPlaceholder(MissingMemberDecl *placeholder) {
+ llvm_unreachable("placeholders not supported in self-conformance");
+ }
+
+ void addMethod(SILDeclRef requirement) {
+ auto witness = emitSelfConformanceWitness(SGM, conformance, linkage,
+ requirement);
+ entries.push_back(SILWitnessTable::MethodWitness{requirement, witness});
+ }
+};
+}
+
+void SILGenModule::emitSelfConformanceWitnessTable(ProtocolDecl *protocol) {
+ auto conformance = getASTContext().getSelfConformance(protocol);
+ SILGenSelfConformanceWitnessTable(*this, conformance).emit();
+}
+
+namespace {
+
/// Emit a default witness table for a resilient protocol definition.
class SILGenDefaultWitnessTable
: public SILGenWitnessTable<SILGenDefaultWitnessTable> {
@@ -830,6 +953,9 @@
if (!SF || SF->Kind != SourceFileKind::Interface)
SGM.emitDefaultWitnessTable(protocol);
}
+ if (protocol->requiresSelfConformanceWitnessTable()) {
+ SGM.emitSelfConformanceWitnessTable(protocol);
+ }
return;
}
diff --git a/lib/SILGen/Scope.cpp b/lib/SILGen/Scope.cpp
index 7998458..9eeacfa 100644
--- a/lib/SILGen/Scope.cpp
+++ b/lib/SILGen/Scope.cpp
@@ -22,7 +22,7 @@
// stack location that will be destroyed by this scope.
assert(mv && mv.getType().isObject() &&
(mv.getType().isTrivial(cleanups.SGF.getModule()) ||
- mv.getOwnershipKind() == ValueOwnershipKind::Trivial ||
+ mv.getOwnershipKind() == ValueOwnershipKind::Any ||
mv.hasCleanup()));
CleanupCloner cloner(cleanups.SGF, mv);
SILValue value = mv.forward(cleanups.SGF);
diff --git a/lib/SILOptimizer/ARC/ARCBBState.h b/lib/SILOptimizer/ARC/ARCBBState.h
index 2412ac6..286c1fc 100644
--- a/lib/SILOptimizer/ARC/ARCBBState.h
+++ b/lib/SILOptimizer/ARC/ARCBBState.h
@@ -17,7 +17,7 @@
namespace swift {
-/// \brief Per-BasicBlock state.
+/// Per-BasicBlock state.
class ARCSequenceDataflowEvaluator::ARCBBState {
public:
using TopDownMapTy = SmallBlotMapVector<SILValue, TopDownRefCountState, 4>;
diff --git a/lib/SILOptimizer/ARC/ARCRegionState.h b/lib/SILOptimizer/ARC/ARCRegionState.h
index 649480a..6facbb7 100644
--- a/lib/SILOptimizer/ARC/ARCRegionState.h
+++ b/lib/SILOptimizer/ARC/ARCRegionState.h
@@ -23,7 +23,7 @@
class AliasAnalysis;
class RCIdentityFunctionInfo;
-/// \brief Per-Region state.
+/// Per-Region state.
class ARCRegionState {
public:
// TODO: These are relatively expensive, find something else to use here.
diff --git a/lib/SILOptimizer/Analysis/AliasAnalysis.cpp b/lib/SILOptimizer/Analysis/AliasAnalysis.cpp
index 2521bc1..536df9c 100644
--- a/lib/SILOptimizer/Analysis/AliasAnalysis.cpp
+++ b/lib/SILOptimizer/Analysis/AliasAnalysis.cpp
@@ -407,7 +407,7 @@
return false;
}
-/// \brief return True if the types \p LTy and \p RTy may alias.
+/// return True if the types \p LTy and \p RTy may alias.
///
/// Currently this only implements typed access based TBAA. See the TBAA section
/// in the SIL reference manual.
diff --git a/lib/SILOptimizer/Analysis/ArraySemantic.cpp b/lib/SILOptimizer/Analysis/ArraySemantic.cpp
index 85aaa12..1e9925c 100644
--- a/lib/SILOptimizer/Analysis/ArraySemantic.cpp
+++ b/lib/SILOptimizer/Analysis/ArraySemantic.cpp
@@ -30,7 +30,7 @@
return FnTy->getSelfParameter().getConvention();
}
-/// \brief Make sure that all parameters are passed with a reference count
+/// Make sure that all parameters are passed with a reference count
/// neutral parameter convention except for self.
bool swift::ArraySemanticsCall::isValidSignature() {
assert(SemanticsCall && getKind() != ArrayCallKind::kNone &&
@@ -380,7 +380,7 @@
}
-/// \brief Hoist or copy the self argument of the semantics call.
+/// Hoist or copy the self argument of the semantics call.
/// Return the hoisted self argument.
static SILValue hoistOrCopySelf(ApplyInst *SemanticsCall,
SILInstruction *InsertBefore,
diff --git a/lib/SILOptimizer/Analysis/ClassHierarchyAnalysis.cpp b/lib/SILOptimizer/Analysis/ClassHierarchyAnalysis.cpp
index 20c6cef..1e63c2b 100644
--- a/lib/SILOptimizer/Analysis/ClassHierarchyAnalysis.cpp
+++ b/lib/SILOptimizer/Analysis/ClassHierarchyAnalysis.cpp
@@ -64,7 +64,7 @@
}
}
-/// \brief Get all subclasses of a given class.
+/// Get all subclasses of a given class.
///
/// \p Current class, whose direct and indirect subclasses are
/// to be collected.
diff --git a/lib/SILOptimizer/Analysis/SimplifyInstruction.cpp b/lib/SILOptimizer/Analysis/SimplifyInstruction.cpp
index 21a7c05..138ade8 100644
--- a/lib/SILOptimizer/Analysis/SimplifyInstruction.cpp
+++ b/lib/SILOptimizer/Analysis/SimplifyInstruction.cpp
@@ -538,7 +538,7 @@
return simplifyBuiltin(BI);
}
-/// \brief Simplify arithmetic intrinsics with overflow and known identity
+/// Simplify arithmetic intrinsics with overflow and known identity
/// constants such as 0 and 1.
/// If this returns a value other than SILValue() then the instruction was
/// simplified to a value which doesn't overflow. The overflow case is handled
@@ -653,7 +653,7 @@
return SILValue();
}
-/// \brief Try to simplify the specified instruction, performing local
+/// Try to simplify the specified instruction, performing local
/// analysis of the operands of the instruction, without looking at its uses
/// (e.g. constant folding). If a simpler result can be found, it is
/// returned, otherwise a null SILValue is returned.
diff --git a/lib/SILOptimizer/FunctionSignatureTransforms/FunctionSignatureOpts.h b/lib/SILOptimizer/FunctionSignatureTransforms/FunctionSignatureOpts.h
index fef9377..d2079b4 100644
--- a/lib/SILOptimizer/FunctionSignatureTransforms/FunctionSignatureOpts.h
+++ b/lib/SILOptimizer/FunctionSignatureTransforms/FunctionSignatureOpts.h
@@ -128,7 +128,7 @@
if (IsEntirelyDead)
return None;
if (SubTy.isTrivial(Arg->getModule()))
- return Optional<ValueOwnershipKind>(ValueOwnershipKind::Trivial);
+ return Optional<ValueOwnershipKind>(ValueOwnershipKind::Any);
if (OwnedToGuaranteed)
return Optional<ValueOwnershipKind>(ValueOwnershipKind::Guaranteed);
return Arg->getOwnershipKind();
diff --git a/lib/SILOptimizer/IPO/CapturePromotion.cpp b/lib/SILOptimizer/IPO/CapturePromotion.cpp
index 3f01e15..3453954 100644
--- a/lib/SILOptimizer/IPO/CapturePromotion.cpp
+++ b/lib/SILOptimizer/IPO/CapturePromotion.cpp
@@ -64,7 +64,7 @@
STATISTIC(NumCapturesPromoted, "Number of captures promoted");
namespace {
-/// \brief Transient reference to a block set within ReachabilityInfo.
+/// Transient reference to a block set within ReachabilityInfo.
///
/// This is a bitset that conveniently flattens into a matrix allowing bit-wise
/// operations without masking.
@@ -78,7 +78,7 @@
return (NumBlocks + BITWORD_SIZE - 1) / BITWORD_SIZE;
}
- /// \brief Transient reference to a reaching block matrix.
+ /// Transient reference to a reaching block matrix.
struct ReachingBlockMatrix {
uint64_t *Bits;
unsigned NumBitWords; // Words per row.
@@ -168,7 +168,7 @@
}
};
-/// \brief Store the reachability matrix: ToBlock -> FromBlocks.
+/// Store the reachability matrix: ToBlock -> FromBlocks.
class ReachabilityInfo {
SILFunction *F;
llvm::DenseMap<SILBasicBlock*, unsigned> BlockMap;
@@ -190,7 +190,7 @@
namespace {
-/// \brief A SILCloner subclass which clones a closure function while converting
+/// A SILCloner subclass which clones a closure function while converting
/// one or more captures from 'inout' (by-reference) to by-value.
class ClosureCloner : public SILClonerWithScopes<ClosureCloner> {
public:
@@ -231,7 +231,7 @@
};
} // end anonymous namespace
-/// \brief Compute ReachabilityInfo so that it can answer queries about
+/// Compute ReachabilityInfo so that it can answer queries about
/// whether a given basic block in a function is reachable from another basic
/// block in the function.
///
@@ -294,7 +294,7 @@
ReachingBlockSet::deallocateSet(NewSet);
}
-/// \brief Return true if the To basic block is reachable from the From basic
+/// Return true if the To basic block is reachable from the From basic
/// block. A block is considered reachable from itself only if its entry can be
/// recursively reached from its own exit.
bool
@@ -396,7 +396,7 @@
return Mangler.mangle();
}
-/// \brief Create the function corresponding to the clone of the original
+/// Create the function corresponding to the clone of the original
/// closure with the signature modified to reflect promotable captures (which
/// are given by PromotableIndices, such that each entry in the set is the
/// index of the box containing the variable in the closure's argument list, and
@@ -446,7 +446,7 @@
return Fn;
}
-/// \brief Populate the body of the cloned closure, modifying instructions as
+/// Populate the body of the cloned closure, modifying instructions as
/// necessary to take into consideration the promoted capture(s)
void
ClosureCloner::populateCloned() {
@@ -483,7 +483,7 @@
// a non-trivial value. We know that our value is not written to and it does
// not escape. The use of a borrow enforces this.
if (Cloned->hasQualifiedOwnership() &&
- MappedValue.getOwnershipKind() != ValueOwnershipKind::Trivial) {
+ MappedValue.getOwnershipKind() != ValueOwnershipKind::Any) {
SILLocation Loc(const_cast<ValueDecl *>((*I)->getDecl()));
MappedValue = getBuilder().createBeginBorrow(Loc, MappedValue);
}
@@ -529,7 +529,7 @@
SILCloner<ClosureCloner>::visitDebugValueAddrInst(Inst);
}
-/// \brief Handle a strong_release instruction during cloning of a closure; if
+/// Handle a strong_release instruction during cloning of a closure; if
/// it is a strong release of a promoted box argument, then it is replaced with
/// a ReleaseValue of the new object type argument, otherwise it is handled
/// normally.
@@ -555,7 +555,7 @@
SILCloner<ClosureCloner>::visitStrongReleaseInst(Inst);
}
-/// \brief Handle a destroy_value instruction during cloning of a closure; if
+/// Handle a destroy_value instruction during cloning of a closure; if
/// it is a strong release of a promoted box argument, then it is replaced with
/// a destroy_value of the new object type argument, otherwise it is handled
/// normally.
@@ -575,7 +575,7 @@
// If ownership is enabled, then we must emit a begin_borrow for any
// non-trivial value.
if (F.hasQualifiedOwnership() &&
- Value.getOwnershipKind() != ValueOwnershipKind::Trivial) {
+ Value.getOwnershipKind() != ValueOwnershipKind::Any) {
auto *BBI = cast<BeginBorrowInst>(Value);
Value = BBI->getOperand();
B.createEndBorrow(Inst->getLoc(), BBI, Value);
@@ -629,7 +629,7 @@
SILCloner<ClosureCloner>::visitEndAccessInst(Inst);
}
-/// \brief Handle a load_borrow instruction during cloning of a closure.
+/// Handle a load_borrow instruction during cloning of a closure.
///
/// The two relevant cases are a direct load from a promoted address argument or
/// a load of a struct_element_addr of a promoted address argument.
@@ -641,7 +641,7 @@
// the loads get mapped to uses of the new object type argument.
//
// We assume that the value is already guaranteed.
- assert(Val.getOwnershipKind().isTrivialOr(ValueOwnershipKind::Guaranteed) &&
+ assert(Val.getOwnershipKind().isCompatibleWith(ValueOwnershipKind::Guaranteed) &&
"Expected argument value to be guaranteed");
recordFoldedValue(LI, Val);
return;
@@ -651,7 +651,7 @@
return;
}
-/// \brief Handle a load instruction during cloning of a closure.
+/// Handle a load instruction during cloning of a closure.
///
/// The two relevant cases are a direct load from a promoted address argument or
/// a load of a struct_element_addr of a promoted address argument.
@@ -683,7 +683,7 @@
// struct_extract of the new passed in value. The value should be borrowed
// already, so we can just extract the value.
assert(!getBuilder().getFunction().hasQualifiedOwnership() ||
- Val.getOwnershipKind().isTrivialOr(ValueOwnershipKind::Guaranteed));
+ Val.getOwnershipKind().isCompatibleWith(ValueOwnershipKind::Guaranteed));
Val = getBuilder().emitStructExtract(LI->getLoc(), Val, SEAI->getField(),
LI->getType());
@@ -713,7 +713,7 @@
return LI->getOwnershipQualifier() != LoadOwnershipQualifier::Take;
}
-/// \brief Given a partial_apply instruction and the argument index into its
+/// Given a partial_apply instruction and the argument index into its
/// callee's argument list of a box argument (which is followed by an argument
/// for the address of the box's contents), return true if the closure is known
/// not to mutate the captured variable.
@@ -941,7 +941,7 @@
} // end anonymous namespace
-/// \brief Given a use of an alloc_box instruction, return true if the use
+/// Given a use of an alloc_box instruction, return true if the use
/// definitely does not allow the box to escape; also, if the use is an
/// instruction which possibly mutates the contents of the box, then add it to
/// the Mutations vector.
@@ -1063,7 +1063,7 @@
return isNonEscapingUse(Op, State);
}
-/// \brief Examine an alloc_box instruction, returning true if at least one
+/// Examine an alloc_box instruction, returning true if at least one
/// capture of the boxed variable is promotable. If so, then the pair of the
/// partial_apply instruction and the index of the box argument in the closure's
/// argument list is added to IM.
@@ -1198,7 +1198,7 @@
return B.createProjectBox(Box->getLoc(), Box, 0);
}
-/// \brief Given a partial_apply instruction and a set of promotable indices,
+/// Given a partial_apply instruction and a set of promotable indices,
/// clone the closure with the promoted captures and replace the partial_apply
/// with a partial_apply of the new closure, fixing up reference counting as
/// necessary. Also, if the closure is cloned, the cloned function is added to
diff --git a/lib/SILOptimizer/IPO/ClosureSpecializer.cpp b/lib/SILOptimizer/IPO/ClosureSpecializer.cpp
index 56c0195..d84b4bf 100644
--- a/lib/SILOptimizer/IPO/ClosureSpecializer.cpp
+++ b/lib/SILOptimizer/IPO/ClosureSpecializer.cpp
@@ -107,7 +107,7 @@
class CallSiteDescriptor;
-/// \brief A SILCloner subclass which clones a function that takes a closure
+/// A SILCloner subclass which clones a function that takes a closure
/// argument. We update the parameter list to remove the parameter for the
/// closure argument and to append the variables captured in the closure.
/// We also need to replace the closure parameter with the partial apply
@@ -711,7 +711,7 @@
CallSiteDesc.getLoc(), calleeValue, Cvt->getType(), false, true);
}
-/// \brief Populate the body of the cloned closure, modifying instructions as
+/// Populate the body of the cloned closure, modifying instructions as
/// necessary. This is where we create the actual specialized BB Arguments.
void ClosureSpecCloner::populateCloned() {
SILFunction *Cloned = getCloned();
diff --git a/lib/SILOptimizer/LoopTransforms/COWArrayOpt.cpp b/lib/SILOptimizer/LoopTransforms/COWArrayOpt.cpp
index d336672..2497493 100644
--- a/lib/SILOptimizer/LoopTransforms/COWArrayOpt.cpp
+++ b/lib/SILOptimizer/LoopTransforms/COWArrayOpt.cpp
@@ -379,7 +379,7 @@
// Set of all blocks that may reach the loop, not including loop blocks.
llvm::SmallPtrSet<SILBasicBlock*,32> ReachingBlocks;
- /// \brief Transient per-Array user set.
+ /// Transient per-Array user set.
///
/// Track all known array users with the exception of struct_extract users
/// (checkSafeArrayElementUse prohibits struct_extract users from mutating the
diff --git a/lib/SILOptimizer/LoopTransforms/LICM.cpp b/lib/SILOptimizer/LoopTransforms/LICM.cpp
index b5e03c8..3c509f7 100644
--- a/lib/SILOptimizer/LoopTransforms/LICM.cpp
+++ b/lib/SILOptimizer/LoopTransforms/LICM.cpp
@@ -192,7 +192,7 @@
return Changed;
}
-/// \brief Summary of may writes occurring in the loop tree rooted at \p
+/// Summary of may writes occurring in the loop tree rooted at \p
/// Loop. This includes all writes of the sub loops and the loop itself.
struct LoopNestSummary {
SILLoop *Loop;
@@ -358,7 +358,7 @@
return Changed;
}
-/// \brief Optimize the loop tree bottom up propagating loop's summaries up the
+/// Optimize the loop tree bottom up propagating loop's summaries up the
/// loop tree.
class LoopTreeOptimization {
llvm::DenseMap<SILLoop *, std::unique_ptr<LoopNestSummary>>
@@ -401,17 +401,17 @@
}
}
- /// \brief Optimize this loop tree.
+ /// Optimize this loop tree.
bool optimize();
protected:
- /// \brief Propagate the sub-loops' summaries up to the current loop.
+ /// Propagate the sub-loops' summaries up to the current loop.
void propagateSummaries(std::unique_ptr<LoopNestSummary> &CurrSummary);
- /// \brief Collect a set of instructions that can be hoisted
+ /// Collect a set of instructions that can be hoisted
void analyzeCurrentLoop(std::unique_ptr<LoopNestSummary> &CurrSummary);
- /// \brief Optimize the current loop nest.
+ /// Optimize the current loop nest.
bool optimizeLoop(std::unique_ptr<LoopNestSummary> &CurrSummary);
};
} // end anonymous namespace
diff --git a/lib/SILOptimizer/Mandatory/AddressLowering.cpp b/lib/SILOptimizer/Mandatory/AddressLowering.cpp
index e6909c4..53a371b 100644
--- a/lib/SILOptimizer/Mandatory/AddressLowering.cpp
+++ b/lib/SILOptimizer/Mandatory/AddressLowering.cpp
@@ -438,7 +438,7 @@
assert(!pass.valueStorageMap.contains(arg));
arg = arg->getParent()->replaceFunctionArgument(
- arg->getIndex(), addrType, ValueOwnershipKind::Trivial,
+ arg->getIndex(), addrType, ValueOwnershipKind::Any,
arg->getDecl());
loadArg->setOperand(arg);
@@ -467,7 +467,7 @@
pass.F->begin()->insertFunctionArgument(argIdx,
bodyResultTy.getAddressType(),
- ValueOwnershipKind::Trivial, var);
+ ValueOwnershipKind::Any, var);
++argIdx;
}
assert(argIdx == pass.loweredFnConv.getNumIndirectSILResults());
diff --git a/lib/SILOptimizer/Mandatory/DataflowDiagnostics.cpp b/lib/SILOptimizer/Mandatory/DataflowDiagnostics.cpp
index 9ac1a9d..eea9716 100644
--- a/lib/SILOptimizer/Mandatory/DataflowDiagnostics.cpp
+++ b/lib/SILOptimizer/Mandatory/DataflowDiagnostics.cpp
@@ -95,7 +95,7 @@
}
}
-/// \brief Issue diagnostics whenever we see Builtin.static_report(1, ...).
+/// Issue diagnostics whenever we see Builtin.static_report(1, ...).
static void diagnoseStaticReports(const SILInstruction *I,
SILModule &M) {
@@ -116,7 +116,7 @@
}
}
-/// \brief Emit a diagnostic for `poundAssert` builtins whose condition is
+/// Emit a diagnostic for `poundAssert` builtins whose condition is
/// false or whose condition cannot be evaluated.
static void diagnosePoundAssert(const SILInstruction *I,
SILModule &M,
diff --git a/lib/SILOptimizer/Mandatory/DiagnoseUnreachable.cpp b/lib/SILOptimizer/Mandatory/DiagnoseUnreachable.cpp
index df16a86..745db83 100644
--- a/lib/SILOptimizer/Mandatory/DiagnoseUnreachable.cpp
+++ b/lib/SILOptimizer/Mandatory/DiagnoseUnreachable.cpp
@@ -52,9 +52,9 @@
/// and whether the condition evaluated to true or false.
struct UnreachableInfo {
UnreachableKind Kind;
- /// \brief The location of the instruction that caused the unreachability.
+ /// The location of the instruction that caused the unreachability.
SILLocation Loc;
- /// \brief If this is the FoldedBranch kind, specifies if the condition is
+ /// If this is the FoldedBranch kind, specifies if the condition is
/// always true.
bool CondIsAlwaysTrue;
};
@@ -70,14 +70,14 @@
/// it possible.
class UnreachableUserCodeReportingState {
public:
- /// \brief The set of top-level blocks that became immediately unreachable due
+ /// The set of top-level blocks that became immediately unreachable due
/// to conditional branch folding, etc.
///
/// This is a SetVector since several blocks may lead to the same error
/// report and we iterate through these when producing the diagnostic.
llvm::SetVector<const SILBasicBlock*> PossiblyUnreachableBlocks;
- /// \brief The set of blocks in which we reported unreachable code errors.
+ /// The set of blocks in which we reported unreachable code errors.
/// These are used to ensure that we don't issue duplicate reports.
///
/// Note, this set is different from the PossiblyUnreachableBlocks as these
@@ -91,7 +91,7 @@
llvm::DenseMap<const SILBasicBlock*, UnreachableInfo> MetaMap;
};
-/// \brief Propagate/remove basic block input values when all predecessors
+/// Propagate/remove basic block input values when all predecessors
/// supply the same arguments.
static void propagateBasicBlockArgs(SILBasicBlock &BB) {
// This functions would simplify the code as following:
@@ -369,7 +369,7 @@
return false;
}
-/// \brief Check if this instruction corresponds to user-written code.
+/// Check if this instruction corresponds to user-written code.
static bool isUserCode(const SILInstruction *I) {
SILLocation Loc = I->getLoc();
if (Loc.isAutoGenerated())
@@ -573,7 +573,7 @@
return true;
}
-/// \brief Issue an "unreachable code" diagnostic if the blocks contains or
+/// Issue an "unreachable code" diagnostic if the blocks contains or
/// leads to another block that contains user code.
///
/// Note, we rely on SILLocation information to determine if SILInstructions
diff --git a/lib/SILOptimizer/Mandatory/MandatoryInlining.cpp b/lib/SILOptimizer/Mandatory/MandatoryInlining.cpp
index 8a98443..391e493 100644
--- a/lib/SILOptimizer/Mandatory/MandatoryInlining.cpp
+++ b/lib/SILOptimizer/Mandatory/MandatoryInlining.cpp
@@ -42,7 +42,7 @@
Context.Diags.diagnose(loc, diag, std::forward<U>(args)...);
}
-/// \brief Fixup reference counts after inlining a function call (which is a
+/// Fixup reference counts after inlining a function call (which is a
/// no-op unless the function is a thick function). Note that this function
/// makes assumptions about the release/retain convention of thick function
/// applications: namely, that an apply of a thick function consumes the callee
@@ -133,7 +133,7 @@
return CalleeValue;
}
-/// \brief Removes instructions that create the callee value if they are no
+/// Removes instructions that create the callee value if they are no
/// longer necessary after inlining.
static void cleanupCalleeValue(SILValue CalleeValue) {
// Handle the case where the callee of the apply is a load instruction. If we
@@ -282,7 +282,7 @@
}
}
-/// \brief Returns the callee SILFunction called at a call site, in the case
+/// Returns the callee SILFunction called at a call site, in the case
/// that the call is transparent (as in, both that the call is marked
/// with the transparent flag and that callee function is actually transparently
/// determinable from the SIL) or nullptr otherwise. This assumes that the SIL
@@ -481,7 +481,7 @@
return newApplyAI;
}
-/// \brief Inlines all mandatory inlined functions into the body of a function,
+/// Inlines all mandatory inlined functions into the body of a function,
/// first recursively inlining all mandatory apply instructions in those
/// functions into their bodies if necessary.
///
diff --git a/lib/SILOptimizer/Mandatory/SemanticARCOpts.cpp b/lib/SILOptimizer/Mandatory/SemanticARCOpts.cpp
index 269bbc1..bcfa87e 100644
--- a/lib/SILOptimizer/Mandatory/SemanticARCOpts.cpp
+++ b/lib/SILOptimizer/Mandatory/SemanticARCOpts.cpp
@@ -79,6 +79,38 @@
return all_of(out, [](SILValue v) { return isa<SILFunctionArgument>(v); });
}
+// Eliminate a copy of a borrowed value, if:
+//
+// 1. All of the copies users do not consume the copy (and thus can accept a
+// borrowed value instead).
+// 2. The copies's non-destroy_value users are strictly contained within the
+// scope of the borrowed value.
+//
+// Example:
+//
+// %0 = @guaranteed (argument or instruction)
+// %1 = copy_value %0
+// apply %f(%1) : $@convention(thin) (@guaranteed ...) ...
+// other_non_consuming_use %1
+// destroy_value %1
+// end_borrow %0 (if an instruction)
+//
+// =>
+//
+// %0 = @guaranteed (argument or instruction)
+// apply %f(%0) : $@convention(thin) (@guaranteed ...) ...
+// other_non_consuming_use %0
+// end_borrow %0 (if an instruction)
+//
+// NOTE: This means that the destroy_value technically can be after the
+// end_borrow. In practice, this will not be the case but we use this to avoid
+// having to reason about the ordering of the end_borrow and destroy_value.
+//
+// NOTE: Today we only perform this for guaranteed parameters since this enables
+// us to avoid doing the linear lifetime check to make sure that all destroys
+// are within the borrow scope.
+//
+// TODO: This needs a better name.
static bool performGuaranteedCopyValueOptimization(CopyValueInst *cvi) {
SmallVector<SILValue, 16> borrowIntroducers;
@@ -149,9 +181,10 @@
return true;
}
-bool SemanticARCOptVisitor::visitCopyValueInst(CopyValueInst *cvi) {
- // If our copy value inst has a single destroy value user, eliminate
- // it.
+/// If cvi only has destroy value users, then cvi is a dead live range. Lets
+/// eliminate all such dead live ranges.
+static bool eliminateDeadLiveRangeCopyValue(CopyValueInst *cvi) {
+ // See if we are lucky and have a simple case.
if (auto *op = cvi->getSingleUse()) {
if (auto *dvi = dyn_cast<DestroyValueInst>(op->getUser())) {
dvi->eraseFromParent();
@@ -161,6 +194,38 @@
}
}
+ // If all of our copy_value users are destroy_value, zap all of the
+ // instructions. We begin by performing that check and gathering up our
+ // destroy_value.
+ SmallVector<DestroyValueInst *, 16> destroys;
+ if (!all_of(cvi->getUses(), [&](Operand *op) {
+ auto *dvi = dyn_cast<DestroyValueInst>(op->getUser());
+ if (!dvi)
+ return false;
+
+ // Stash dvi in destroys so we can easily eliminate it later.
+ destroys.push_back(dvi);
+ return true;
+ })) {
+ return false;
+ }
+
+ // Now that we have a truly dead live range copy value, eliminate it!
+ while (!destroys.empty()) {
+ destroys.pop_back_val()->eraseFromParent();
+ ++NumEliminatedInsts;
+ }
+ cvi->eraseFromParent();
+ ++NumEliminatedInsts;
+ return true;
+}
+
+bool SemanticARCOptVisitor::visitCopyValueInst(CopyValueInst *cvi) {
+ // If our copy value inst has only destroy_value users, it is a dead live
+ // range. Try to eliminate them.
+ if (eliminateDeadLiveRangeCopyValue(cvi))
+ return true;
+
// Then try to perform the guaranteed copy value optimization.
if (performGuaranteedCopyValueOptimization(cvi))
return true;
diff --git a/lib/SILOptimizer/PassManager/PassManager.cpp b/lib/SILOptimizer/PassManager/PassManager.cpp
index 5357cdc..714c120 100644
--- a/lib/SILOptimizer/PassManager/PassManager.cpp
+++ b/lib/SILOptimizer/PassManager/PassManager.cpp
@@ -725,7 +725,7 @@
RestartPipeline = true;
}
-/// \brief Reset the state of the pass manager and remove all transformation
+/// Reset the state of the pass manager and remove all transformation
/// owned by the pass manager. Analysis passes will be kept.
void SILPassManager::resetAndRemoveTransformations() {
for (auto *T : Transformations)
diff --git a/lib/SILOptimizer/PassManager/PassPipeline.cpp b/lib/SILOptimizer/PassManager/PassPipeline.cpp
index a15d1fd..a81fb2f 100644
--- a/lib/SILOptimizer/PassManager/PassPipeline.cpp
+++ b/lib/SILOptimizer/PassManager/PassPipeline.cpp
@@ -11,7 +11,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief This file provides implementations of a few helper functions
+/// This file provides implementations of a few helper functions
/// which provide abstracted entrypoints to the SILPasses stage.
///
/// \note The actual SIL passes should be implemented in per-pass source files,
diff --git a/lib/SILOptimizer/PassManager/Passes.cpp b/lib/SILOptimizer/PassManager/Passes.cpp
index 25676e3..739bac3 100644
--- a/lib/SILOptimizer/PassManager/Passes.cpp
+++ b/lib/SILOptimizer/PassManager/Passes.cpp
@@ -11,7 +11,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief This file provides implementations of a few helper functions
+/// This file provides implementations of a few helper functions
/// which provide abstracted entrypoints to the SILPasses stage.
///
/// \note The actual SIL passes should be implemented in per-pass source files,
diff --git a/lib/SILOptimizer/SILCombiner/SILCombiner.h b/lib/SILOptimizer/SILCombiner/SILCombiner.h
index 4000f3d..1559153 100644
--- a/lib/SILOptimizer/SILCombiner/SILCombiner.h
+++ b/lib/SILOptimizer/SILCombiner/SILCombiner.h
@@ -327,7 +327,7 @@
typedef SmallVector<SILInstruction*, 4> UserListTy;
- /// \brief Returns a list of instructions that project or perform reference
+ /// Returns a list of instructions that project or perform reference
/// counting operations on \p Value or on its uses.
/// \return return false if \p Value has other than ARC uses.
static bool recursivelyCollectARCUsers(UserListTy &Uses, ValueBase *Value);
diff --git a/lib/SILOptimizer/SILCombiner/SILCombinerApplyVisitors.cpp b/lib/SILOptimizer/SILCombiner/SILCombinerApplyVisitors.cpp
index c6fbe6b..bea8eff 100644
--- a/lib/SILOptimizer/SILCombiner/SILCombinerApplyVisitors.cpp
+++ b/lib/SILOptimizer/SILCombiner/SILCombinerApplyVisitors.cpp
@@ -1029,7 +1029,7 @@
return createApplyWithConcreteType(Apply, CEIs, BuilderCtx);
}
-/// \brief Check that all users of the apply are retain/release ignoring one
+/// Check that all users of the apply are retain/release ignoring one
/// user.
static bool
hasOnlyRetainReleaseUsers(ApplyInst *AI, SILInstruction *IgnoreUser,
@@ -1049,7 +1049,7 @@
return true;
};
-/// \brief We only know how to simulate reference call effects for unary
+/// We only know how to simulate reference call effects for unary
/// function calls that take their argument @owned or @guaranteed and return an
/// @owned value.
static bool knowHowToEmitReferenceCountInsts(ApplyInst *Call) {
@@ -1077,7 +1077,7 @@
ParamConv == ParameterConvention::Direct_Guaranteed;
}
-/// \brief Add reference counting operations equal to the effect of the call.
+/// Add reference counting operations equal to the effect of the call.
static void emitMatchingRCAdjustmentsForCall(ApplyInst *Call, SILValue OnX) {
FunctionRefInst *FRI = cast<FunctionRefInst>(Call->getCallee());
SILFunction *F = FRI->getReferencedFunction();
diff --git a/lib/SILOptimizer/Transforms/AccessEnforcementDom.cpp b/lib/SILOptimizer/Transforms/AccessEnforcementDom.cpp
index 0ca0422..1f01076 100644
--- a/lib/SILOptimizer/Transforms/AccessEnforcementDom.cpp
+++ b/lib/SILOptimizer/Transforms/AccessEnforcementDom.cpp
@@ -301,12 +301,12 @@
void perform();
protected:
- /// \brief Collect a set of instructions that can be dominated
+ /// Collect a set of instructions that can be dominated
void
analyzeCurrentLoop(SILLoop *currentLoop,
SmallVectorImpl<BeginAccessInst *> &dominatableInstrVec);
- /// \brief Optimize the current loop nest.
+ /// Optimize the current loop nest.
void optimizeLoop(SILLoop *currnetLoop,
SmallVectorImpl<BeginAccessInst *> &dominatableInstrVec);
};
diff --git a/lib/SILOptimizer/Transforms/AllocBoxToStack.cpp b/lib/SILOptimizer/Transforms/AllocBoxToStack.cpp
index a44182f..93ce0d6 100644
--- a/lib/SILOptimizer/Transforms/AllocBoxToStack.cpp
+++ b/lib/SILOptimizer/Transforms/AllocBoxToStack.cpp
@@ -42,7 +42,7 @@
return V;
}
-/// \brief Returns True if the operand or one of its users is captured.
+/// Returns True if the operand or one of its users is captured.
static bool useCaptured(Operand *UI) {
auto *User = UI->getUser();
@@ -497,7 +497,7 @@
namespace {
-/// \brief A SILCloner subclass which clones a closure function while
+/// A SILCloner subclass which clones a closure function while
/// promoting some of its box parameters to stack addresses.
class PromotedParamCloner : public SILClonerWithScopes<PromotedParamCloner> {
friend class SILInstructionVisitor<PromotedParamCloner>;
@@ -558,7 +558,7 @@
return Mangler.mangle();
}
-/// \brief Create the function corresponding to the clone of the
+/// Create the function corresponding to the clone of the
/// original closure with the signature modified to reflect promoted
/// parameters (which are specified by PromotedArgIndices).
SILFunction *PromotedParamCloner::
@@ -621,7 +621,7 @@
return Fn;
}
-/// \brief Populate the body of the cloned closure, modifying instructions as
+/// Populate the body of the cloned closure, modifying instructions as
/// necessary to take into consideration the removed parameters.
void
PromotedParamCloner::populateCloned() {
@@ -669,7 +669,7 @@
cloneFunctionBody(Orig, ClonedEntryBB, entryArgs);
}
-/// \brief Handle a strong_release instruction during cloning of a closure; if
+/// Handle a strong_release instruction during cloning of a closure; if
/// it is a strong release of a promoted box argument, then it is replaced with
/// a ReleaseValue of the new object type argument, otherwise it is handled
/// normally.
@@ -682,7 +682,7 @@
SILCloner<PromotedParamCloner>::visitStrongReleaseInst(Inst);
}
-/// \brief Handle a strong_release instruction during cloning of a closure; if
+/// Handle a strong_release instruction during cloning of a closure; if
/// it is a strong release of a promoted box argument, then it is replaced with
/// a ReleaseValue of the new object type argument, otherwise it is handled
/// normally.
diff --git a/lib/SILOptimizer/Transforms/MergeCondFail.cpp b/lib/SILOptimizer/Transforms/MergeCondFail.cpp
index 88b16e4..e206586 100644
--- a/lib/SILOptimizer/Transforms/MergeCondFail.cpp
+++ b/lib/SILOptimizer/Transforms/MergeCondFail.cpp
@@ -23,7 +23,7 @@
using namespace swift;
-/// \brief Return true if the operand of the cond_fail instruction looks like
+/// Return true if the operand of the cond_fail instruction looks like
/// the overflow bit of an arithmetic instruction.
static bool hasOverflowConditionOperand(CondFailInst *CFI) {
if (auto *TEI = dyn_cast<TupleExtractInst>(CFI->getOperand()))
@@ -84,7 +84,7 @@
}
}
- /// \brief Try to merge the cond_fail instructions. Returns true if any could
+ /// Try to merge the cond_fail instructions. Returns true if any could
/// be merge.
bool mergeCondFails(SmallVectorImpl<CondFailInst *> &CondFailToMerge) {
assert(CondFailToMerge.size() > 1 &&
diff --git a/lib/SILOptimizer/Transforms/OwnershipModelEliminator.cpp b/lib/SILOptimizer/Transforms/OwnershipModelEliminator.cpp
index a83d85f..fe7bc4f 100644
--- a/lib/SILOptimizer/Transforms/OwnershipModelEliminator.cpp
+++ b/lib/SILOptimizer/Transforms/OwnershipModelEliminator.cpp
@@ -28,9 +28,15 @@
#include "swift/SIL/SILFunction.h"
#include "swift/SIL/SILVisitor.h"
#include "swift/SILOptimizer/PassManager/Transforms.h"
+#include "llvm/Support/CommandLine.h"
using namespace swift;
+// Utility command line argument to dump the module before we eliminate
+// ownership from it.
+static llvm::cl::opt<std::string>
+DumpBefore("sil-dump-before-ome-to-path", llvm::cl::Hidden);
+
//===----------------------------------------------------------------------===//
// Implementation
//===----------------------------------------------------------------------===//
@@ -282,6 +288,10 @@
struct OwnershipModelEliminator : SILModuleTransform {
void run() override {
+ if (DumpBefore.size()) {
+ getModule()->dump(DumpBefore.c_str());
+ }
+
for (auto &F : *getModule()) {
// Don't rerun early lowering on deserialized functions.
if (F.wasDeserializedCanonical())
diff --git a/lib/SILOptimizer/Transforms/PerformanceInliner.cpp b/lib/SILOptimizer/Transforms/PerformanceInliner.cpp
index 60c59fc..39ff21e 100644
--- a/lib/SILOptimizer/Transforms/PerformanceInliner.cpp
+++ b/lib/SILOptimizer/Transforms/PerformanceInliner.cpp
@@ -856,7 +856,7 @@
}
}
-/// \brief Attempt to inline all calls smaller than our threshold.
+/// Attempt to inline all calls smaller than our threshold.
/// returns True if a function was inlined.
bool SILPerformanceInliner::inlineCallsIntoFunction(SILFunction *Caller) {
// Don't optimize functions that are marked with the opt.never attribute.
diff --git a/lib/SILOptimizer/Transforms/SILCodeMotion.cpp b/lib/SILOptimizer/Transforms/SILCodeMotion.cpp
index 607312a..61bfade 100644
--- a/lib/SILOptimizer/Transforms/SILCodeMotion.cpp
+++ b/lib/SILOptimizer/Transforms/SILCodeMotion.cpp
@@ -861,7 +861,7 @@
// Generic Sinking Code
//===----------------------------------------------------------------------===//
-/// \brief Hoist release on a SILArgument to its predecessors.
+/// Hoist release on a SILArgument to its predecessors.
static bool hoistSILArgumentReleaseInst(SILBasicBlock *BB) {
// There is no block to hoist releases to.
if (BB->pred_empty())
@@ -906,12 +906,12 @@
static const int SinkSearchWindow = 6;
-/// \brief Returns True if we can sink this instruction to another basic block.
+/// Returns True if we can sink this instruction to another basic block.
static bool canSinkInstruction(SILInstruction *Inst) {
return !Inst->hasUsesOfAnyResult() && !isa<TermInst>(Inst);
}
-/// \brief Returns true if this instruction is a skip barrier, which means that
+/// Returns true if this instruction is a skip barrier, which means that
/// we can't sink other instructions past it.
static bool isSinkBarrier(SILInstruction *Inst) {
if (isa<TermInst>(Inst))
@@ -938,7 +938,7 @@
EqualAfterMove
};
-/// \brief Find a root value for operand \p In. This function inspects a sil
+/// Find a root value for operand \p In. This function inspects a sil
/// value and strips trivial conversions such as values that are passed
/// as arguments to basic blocks with a single predecessor or type casts.
/// This is a shallow one-step search and not a deep recursive search.
@@ -991,7 +991,7 @@
return In;
}
-/// \brief Search for an instruction that is identical to \p Iden by scanning
+/// Search for an instruction that is identical to \p Iden by scanning
/// \p BB starting at the end of the block, stopping on sink barriers.
/// The \p opRelation must be consistent for all operand comparisons.
SILInstruction *findIdenticalInBlock(SILBasicBlock *BB, SILInstruction *Iden,
@@ -1329,7 +1329,7 @@
return Changed;
}
-/// \brief canonicalize retain/release instructions and make them amenable to
+/// canonicalize retain/release instructions and make them amenable to
/// sinking by selecting canonical pointers. We reduce the number of possible
/// inputs by replacing values that are unlikely to be a canonical values.
/// Reducing the search space increases the chances of matching ref count
diff --git a/lib/SILOptimizer/Transforms/SILLowerAggregateInstrs.cpp b/lib/SILOptimizer/Transforms/SILLowerAggregateInstrs.cpp
index c062767..e2ae2fb 100644
--- a/lib/SILOptimizer/Transforms/SILLowerAggregateInstrs.cpp
+++ b/lib/SILOptimizer/Transforms/SILLowerAggregateInstrs.cpp
@@ -35,7 +35,7 @@
// Higher Level Operation Expansion
//===----------------------------------------------------------------------===//
-/// \brief Lower copy_addr into loads/stores/retain/release if we have a
+/// Lower copy_addr into loads/stores/retain/release if we have a
/// non-address only type. We do this here so we can process the resulting
/// loads/stores.
///
diff --git a/lib/SILOptimizer/Transforms/SILMem2Reg.cpp b/lib/SILOptimizer/Transforms/SILMem2Reg.cpp
index c10b6fb..16e6289 100644
--- a/lib/SILOptimizer/Transforms/SILMem2Reg.cpp
+++ b/lib/SILOptimizer/Transforms/SILMem2Reg.cpp
@@ -104,37 +104,37 @@
void run();
private:
- /// \brief Promote AllocStacks into SSA.
+ /// Promote AllocStacks into SSA.
void promoteAllocationToPhi();
- /// \brief Replace the dummy nodes with new block arguments.
+ /// Replace the dummy nodes with new block arguments.
void addBlockArguments(BlockSet &PhiBlocks);
- /// \brief Fix all of the branch instructions and the uses to use
+ /// Fix all of the branch instructions and the uses to use
/// the AllocStack definitions (which include stores and Phis).
void fixBranchesAndUses(BlockSet &Blocks);
- /// \brief update the branch instructions with the new Phi argument.
+ /// update the branch instructions with the new Phi argument.
/// The blocks in \p PhiBlocks are blocks that define a value, \p Dest is
/// the branch destination, and \p Pred is the predecessors who's branch we
/// modify.
void fixPhiPredBlock(BlockSet &PhiBlocks, SILBasicBlock *Dest,
SILBasicBlock *Pred);
- /// \brief Get the value for this AllocStack variable that is
+ /// Get the value for this AllocStack variable that is
/// flowing out of StartBB.
SILValue getLiveOutValue(BlockSet &PhiBlocks, SILBasicBlock *StartBB);
- /// \brief Get the value for this AllocStack variable that is
+ /// Get the value for this AllocStack variable that is
/// flowing into BB.
SILValue getLiveInValue(BlockSet &PhiBlocks, SILBasicBlock *BB);
- /// \brief Prune AllocStacks usage in the function. Scan the function
+ /// Prune AllocStacks usage in the function. Scan the function
/// and remove in-block usage of the AllocStack. Leave only the first
/// load and the last store.
void pruneAllocStackUsage();
- /// \brief Promote all of the AllocStacks in a single basic block in one
+ /// Promote all of the AllocStacks in a single basic block in one
/// linear scan. This function deletes all of the loads and stores except
/// for the first load and the last store.
/// \returns the last StoreInst found or zero if none found.
@@ -155,10 +155,10 @@
/// The builder used to create new instructions during register promotion.
SILBuilder B;
- /// \brief Check if the AllocStackInst \p ASI is only written into.
+ /// Check if the AllocStackInst \p ASI is only written into.
bool isWriteOnlyAllocation(AllocStackInst *ASI);
- /// \brief Promote all of the AllocStacks in a single basic block in one
+ /// Promote all of the AllocStacks in a single basic block in one
/// linear scan. Note: This function deletes all of the users of the
/// AllocStackInst, including the DeallocStackInst but it does not remove the
/// AllocStackInst itself!
@@ -174,7 +174,7 @@
MemoryToRegisters(SILFunction &Func, DominanceInfo *Dt) : F(Func), DT(Dt),
B(Func) {}
- /// \brief Promote memory to registers. Return True on change.
+ /// Promote memory to registers. Return True on change.
bool run();
};
diff --git a/lib/SILOptimizer/Transforms/SimplifyCFG.cpp b/lib/SILOptimizer/Transforms/SimplifyCFG.cpp
index 5f143c1..0b19979 100644
--- a/lib/SILOptimizer/Transforms/SimplifyCFG.cpp
+++ b/lib/SILOptimizer/Transforms/SimplifyCFG.cpp
@@ -168,7 +168,7 @@
DominanceInfo *DT);
bool dominatorBasedSimplify(DominanceAnalysis *DA);
- /// \brief Remove the basic block if it has no predecessors. Returns true
+ /// Remove the basic block if it has no predecessors. Returns true
/// If the block was removed.
bool removeIfDead(SILBasicBlock *BB);
@@ -1296,7 +1296,7 @@
return Simplified;
}
-/// \brief Check if replacing an existing edge of the terminator by another
+/// Check if replacing an existing edge of the terminator by another
/// one which has a DestBB as its destination would create a critical edge.
static bool wouldIntroduceCriticalEdge(TermInst *T, SILBasicBlock *DestBB) {
auto SrcSuccs = T->getSuccessors();
@@ -1345,7 +1345,7 @@
return Cond;
}
-/// \brief Returns the first cond_fail if it is the first side-effect
+/// Returns the first cond_fail if it is the first side-effect
/// instruction in this block.
static CondFailInst *getFirstCondFail(SILBasicBlock *BB) {
auto It = BB->begin();
@@ -1384,7 +1384,7 @@
return nullptr;
}
-/// \brief Creates a new cond_fail instruction, optionally with an xor inverted
+/// Creates a new cond_fail instruction, optionally with an xor inverted
/// condition.
static void createCondFail(CondFailInst *Orig, SILValue Cond, bool inverted,
SILBuilder &Builder) {
diff --git a/lib/SILOptimizer/Transforms/Sink.cpp b/lib/SILOptimizer/Transforms/Sink.cpp
index 40bb7ee..a1077f0 100644
--- a/lib/SILOptimizer/Transforms/Sink.cpp
+++ b/lib/SILOptimizer/Transforms/Sink.cpp
@@ -48,7 +48,7 @@
PostOrderFunctionInfo *PO;
SILLoopInfo *LoopInfo;
- /// \brief returns True if were able to sink the instruction \p II
+ /// returns True if were able to sink the instruction \p II
/// closer to it's users.
bool sinkInstruction(SILInstruction *II) {
diff --git a/lib/SILOptimizer/Transforms/SpeculativeDevirtualizer.cpp b/lib/SILOptimizer/Transforms/SpeculativeDevirtualizer.cpp
index 2c8a6b5..0aded32 100644
--- a/lib/SILOptimizer/Transforms/SpeculativeDevirtualizer.cpp
+++ b/lib/SILOptimizer/Transforms/SpeculativeDevirtualizer.cpp
@@ -256,7 +256,7 @@
return VirtAI;
}
-/// \brief Returns true, if a method implementation to be called by the
+/// Returns true, if a method implementation to be called by the
/// default case handler of a speculative devirtualization is statically
/// known. This happens if it can be proven that generated
/// checked_cast_br instructions cover all other possible cases.
@@ -360,7 +360,7 @@
return true;
}
-/// \brief Try to speculate the call target for the call \p AI. This function
+/// Try to speculate the call target for the call \p AI. This function
/// returns true if a change was made.
static bool tryToSpeculateTarget(FullApplySite AI, ClassHierarchyAnalysis *CHA,
OptRemark::Emitter &ORE) {
diff --git a/lib/SILOptimizer/UtilityPasses/ValueOwnershipKindDumper.cpp b/lib/SILOptimizer/UtilityPasses/ValueOwnershipKindDumper.cpp
index 67e5573..0befce4 100644
--- a/lib/SILOptimizer/UtilityPasses/ValueOwnershipKindDumper.cpp
+++ b/lib/SILOptimizer/UtilityPasses/ValueOwnershipKindDumper.cpp
@@ -56,20 +56,9 @@
if (Kind == ValueOwnershipKind::Any)
continue;
- if (Kind == ValueOwnershipKind::Trivial) {
- if (auto *EI = dyn_cast<EnumInst>(V)) {
- checkEnumInstIsTrivial(EI);
- continue;
- }
- SILType Ty = V->getType();
- if (!Ty.isTrivial(M) && !Ty.isAddress()) {
- llvm_unreachable("Error! Trivial ownership without trivial type\n");
- }
- } else {
- if (V->getType().isTrivial(M)) {
- llvm_unreachable(
- "Error! Non Trivial ownership with trivial type\n");
- }
+ if (V->getType().isTrivial(M)) {
+ llvm_unreachable(
+ "Error! Non Trivial ownership with trivial type\n");
}
}
}
diff --git a/lib/SILOptimizer/Utils/CFG.cpp b/lib/SILOptimizer/Utils/CFG.cpp
index de2ce17..230738a 100644
--- a/lib/SILOptimizer/Utils/CFG.cpp
+++ b/lib/SILOptimizer/Utils/CFG.cpp
@@ -21,7 +21,7 @@
using namespace swift;
-/// \brief Adds a new argument to an edge between a branch and a destination
+/// Adds a new argument to an edge between a branch and a destination
/// block.
///
/// \param Branch The terminator to add the argument to.
@@ -77,7 +77,7 @@
return NewBr;
}
-/// \brief Changes the edge value between a branch and destination basic block
+/// Changes the edge value between a branch and destination basic block
/// at the specified index. Changes all edges from \p Branch to \p Dest to carry
/// the value.
///
@@ -187,7 +187,7 @@
return DefaultBB;
}
-/// \brief Replace a branch target.
+/// Replace a branch target.
///
/// \param T The terminating instruction to modify.
/// \param OldDest The successor block that will be replaced.
@@ -332,7 +332,7 @@
llvm_unreachable("Not yet implemented!");
}
-/// \brief Check if the edge from the terminator is critical.
+/// Check if the edge from the terminator is critical.
bool swift::isCriticalEdge(TermInst *T, unsigned EdgeIdx) {
assert(T->getSuccessors().size() > EdgeIdx && "Not enough successors");
diff --git a/lib/SILOptimizer/Utils/ConstantFolding.cpp b/lib/SILOptimizer/Utils/ConstantFolding.cpp
index 0bc6a21..7c938be 100644
--- a/lib/SILOptimizer/Utils/ConstantFolding.cpp
+++ b/lib/SILOptimizer/Utils/ConstantFolding.cpp
@@ -144,7 +144,7 @@
return Context.Diags.diagnose(loc, diag, std::forward<U>(args)...);
}
-/// \brief Construct (int, overflow) result tuple.
+/// Construct (int, overflow) result tuple.
static SILValue constructResultWithOverflowTuple(BuiltinInst *BI,
APInt Res, bool Overflow) {
// Get the SIL subtypes of the returned tuple type.
@@ -164,7 +164,7 @@
return B.createTuple(Loc, FuncResType, Result);
}
-/// \brief Fold arithmetic intrinsics with overflow.
+/// Fold arithmetic intrinsics with overflow.
static SILValue
constantFoldBinaryWithOverflow(BuiltinInst *BI, llvm::Intrinsic::ID ID,
bool ReportOverflow,
@@ -566,7 +566,7 @@
return B.createIntegerLiteral(BI->getLoc(), BI->getType(), ResVal);
}
-/// \brief Fold binary operations.
+/// Fold binary operations.
///
/// The list of operations we constant fold might not be complete. Start with
/// folding the operations used by the standard library.
diff --git a/lib/SILOptimizer/Utils/Devirtualize.cpp b/lib/SILOptimizer/Utils/Devirtualize.cpp
index 87abeec..728ada3 100644
--- a/lib/SILOptimizer/Utils/Devirtualize.cpp
+++ b/lib/SILOptimizer/Utils/Devirtualize.cpp
@@ -75,7 +75,7 @@
}
}
-/// \brief Returns true, if a method implementation corresponding to
+/// Returns true, if a method implementation corresponding to
/// the class_method applied to an instance of the class CD is
/// effectively final, i.e. it is statically known to be not overridden
/// by any subclasses of the class CD.
@@ -608,7 +608,7 @@
return M.lookUpFunctionInVTable(CD, Member);
}
-/// \brief Check if it is possible to devirtualize an Apply instruction
+/// Check if it is possible to devirtualize an Apply instruction
/// and a class member obtained using the class_method instruction into
/// a direct call to a specific member of a specific class.
///
@@ -682,7 +682,7 @@
return true;
}
-/// \brief Devirtualize an apply of a class method.
+/// Devirtualize an apply of a class method.
///
/// \p AI is the apply to devirtualize.
/// \p ClassOrMetatype is a class value or metatype value that is the
diff --git a/lib/SILOptimizer/Utils/Local.cpp b/lib/SILOptimizer/Utils/Local.cpp
index 3971d64..ad1685c 100644
--- a/lib/SILOptimizer/Utils/Local.cpp
+++ b/lib/SILOptimizer/Utils/Local.cpp
@@ -89,7 +89,7 @@
return B.createReleaseValue(Loc, Ptr, B.getDefaultAtomicity());
}
-/// \brief Perform a fast local check to see if the instruction is dead.
+/// Perform a fast local check to see if the instruction is dead.
///
/// This routine only examines the state of the instruction at hand.
bool
@@ -138,7 +138,7 @@
return false;
}
-/// \brief Return true if this is a release instruction and the released value
+/// Return true if this is a release instruction and the released value
/// is a part of a guaranteed parameter.
bool swift::isIntermediateRelease(SILInstruction *I,
EpilogueARCFunctionInfo *EAFI) {
@@ -240,7 +240,7 @@
}
}
-/// \brief If the given instruction is dead, delete it along with its dead
+/// If the given instruction is dead, delete it along with its dead
/// operands.
///
/// \param I The instruction to be deleted.
@@ -396,7 +396,7 @@
FuncRef->moveBefore(&*DomBB->begin());
}
-/// \brief Add an argument, \p val, to the branch-edge that is pointing into
+/// Add an argument, \p val, to the branch-edge that is pointing into
/// block \p Dest. Return a new instruction and do not erase the old
/// instruction.
TermInst *swift::addArgumentToBranch(SILValue Val, SILBasicBlock *Dest,
diff --git a/lib/SILOptimizer/Utils/LoopUtils.cpp b/lib/SILOptimizer/Utils/LoopUtils.cpp
index b446cfa..0437d5b 100644
--- a/lib/SILOptimizer/Utils/LoopUtils.cpp
+++ b/lib/SILOptimizer/Utils/LoopUtils.cpp
@@ -42,7 +42,7 @@
return Preheader;
}
-/// \brief Create a unique loop preheader.
+/// Create a unique loop preheader.
static SILBasicBlock *insertPreheader(SILLoop *L, DominanceInfo *DT,
SILLoopInfo *LI) {
assert(!L->getLoopPreheader() && "Expect multiple preheaders");
@@ -89,7 +89,7 @@
return Preheader;
}
-/// \brief Convert a loop with multiple backedges to a single backedge loop.
+/// Convert a loop with multiple backedges to a single backedge loop.
///
/// Create a new block as a common target for all the current loop backedges.
static SILBasicBlock *insertBackedgeBlock(SILLoop *L, DominanceInfo *DT,
diff --git a/lib/SILOptimizer/Utils/SILInliner.cpp b/lib/SILOptimizer/Utils/SILInliner.cpp
index d995992..e2ca9a4 100644
--- a/lib/SILOptimizer/Utils/SILInliner.cpp
+++ b/lib/SILOptimizer/Utils/SILInliner.cpp
@@ -313,7 +313,7 @@
SILInliner::DeletionFuncTy DeletionCallback;
- /// \brief The location representing the inlined instructions.
+ /// The location representing the inlined instructions.
///
/// This location wraps the call site AST node that is being inlined.
/// Alternatively, it can be the SIL file location of the call site (in case
diff --git a/lib/SILOptimizer/Utils/SILSSAUpdater.cpp b/lib/SILOptimizer/Utils/SILSSAUpdater.cpp
index 4740a6d..e27b18e 100644
--- a/lib/SILOptimizer/Utils/SILSSAUpdater.cpp
+++ b/lib/SILOptimizer/Utils/SILSSAUpdater.cpp
@@ -390,7 +390,7 @@
return Impl.GetValue(BB);
}
-/// \brief Construct a use wrapper. For branches we store information so that we
+/// Construct a use wrapper. For branches we store information so that we
/// can reconstruct the use after the branch has been modified.
///
/// When a branch is modified existing pointers to the operand
diff --git a/lib/Sema/CSApply.cpp b/lib/Sema/CSApply.cpp
index 92d5edb..f22f113 100644
--- a/lib/Sema/CSApply.cpp
+++ b/lib/Sema/CSApply.cpp
@@ -39,7 +39,7 @@
using namespace swift;
using namespace constraints;
-/// \brief Retrieve the fixed type for the given type variable.
+/// Retrieve the fixed type for the given type variable.
Type Solution::getFixedType(TypeVariableType *typeVar) const {
auto knownBinding = typeBindings.find(typeVar);
assert(knownBinding != typeBindings.end());
@@ -103,7 +103,7 @@
lookupConformanceFn);
}
-/// \brief Find a particular named function witness for a type that conforms to
+/// Find a particular named function witness for a type that conforms to
/// the given protocol.
///
/// \param tc The type check we're using.
@@ -417,7 +417,7 @@
namespace {
- /// \brief Rewrites an expression by applying the solution of a constraint
+ /// Rewrites an expression by applying the solution of a constraint
/// system to that expression.
class ExprRewriter : public ExprVisitor<ExprRewriter, Expr *> {
public:
@@ -438,7 +438,7 @@
cs.getTypeChecker().useBridgedNSErrorConformances(dc, toType);
}
- /// \brief Coerce the given tuple to another tuple type.
+ /// Coerce the given tuple to another tuple type.
///
/// \param expr The expression we're converting.
///
@@ -464,7 +464,7 @@
SmallVectorImpl<unsigned> &variadicArgs,
Optional<Pattern*> typeFromPattern = None);
- /// \brief Coerce a subclass, class-constrained archetype, class-constrained
+ /// Coerce a subclass, class-constrained archetype, class-constrained
/// existential or to a superclass type.
///
/// Also supports metatypes of the above.
@@ -478,7 +478,7 @@
Expr *coerceSuperclass(Expr *expr, Type toType,
ConstraintLocatorBuilder locator);
- /// \brief Coerce the given value to existential type.
+ /// Coerce the given value to existential type.
///
/// The following conversions are supported:
/// - concrete to existential
@@ -495,13 +495,13 @@
Expr *coerceExistential(Expr *expr, Type toType,
ConstraintLocatorBuilder locator);
- /// \brief Coerce an expression of (possibly unchecked) optional
+ /// Coerce an expression of (possibly unchecked) optional
/// type to have a different (possibly unchecked) optional type.
Expr *coerceOptionalToOptional(Expr *expr, Type toType,
ConstraintLocatorBuilder locator,
Optional<Pattern*> typeFromPattern = None);
- /// \brief Coerce an expression of implicitly unwrapped optional type to its
+ /// Coerce an expression of implicitly unwrapped optional type to its
/// underlying value type, in the correct way for an implicit
/// look-through.
Expr *coerceImplicitlyUnwrappedOptionalToValue(Expr *expr, Type objTy);
@@ -525,7 +525,7 @@
bool peepholeCollectionUpcast(Expr *expr, Type toType, bool bridged,
ConstraintLocatorBuilder locator);
- /// \brief Build a collection upcast expression.
+ /// Build a collection upcast expression.
///
/// \param bridged Whether this is a bridging conversion, meaning that the
/// element types themselves are bridged (vs. simply coerced).
@@ -551,7 +551,7 @@
}
public:
- /// \brief Build a reference to the given declaration.
+ /// Build a reference to the given declaration.
Expr *buildDeclRef(OverloadChoice choice, DeclNameLoc loc, Type openedType,
ConstraintLocatorBuilder locator, bool implicit,
FunctionRefKind functionRefKind,
@@ -879,7 +879,7 @@
return true;
}
- /// \brief Build a new member reference with the given base and member.
+ /// Build a new member reference with the given base and member.
Expr *buildMemberRef(Expr *base, Type openedFullType, SourceLoc dotLoc,
OverloadChoice choice, DeclNameLoc memberLoc,
Type openedType, ConstraintLocatorBuilder locator,
@@ -1140,10 +1140,10 @@
return finishApply(apply, openedType, locator);
}
- /// \brief Describes either a type or the name of a type to be resolved.
+ /// Describes either a type or the name of a type to be resolved.
using TypeOrName = llvm::PointerUnion<Identifier, Type>;
- /// \brief Convert the given literal expression via a protocol pair.
+ /// Convert the given literal expression via a protocol pair.
///
/// This routine handles the two-step literal conversion process used
/// by integer, float, character, extended grapheme cluster, and string
@@ -1202,7 +1202,7 @@
Diag<> brokenProtocolDiag,
Diag<> brokenBuiltinProtocolDiag);
- /// \brief Convert the given literal expression via a protocol pair.
+ /// Convert the given literal expression via a protocol pair.
///
/// This routine handles the two-step literal conversion process used
/// by integer, float, character, extended grapheme cluster, and string
@@ -1248,7 +1248,7 @@
Diag<> brokenProtocolDiag,
Diag<> brokenBuiltinProtocolDiag);
- /// \brief Finish a function application by performing the appropriate
+ /// Finish a function application by performing the appropriate
/// conversions on the function and argument expressions and setting
/// the resulting type.
///
@@ -1264,7 +1264,7 @@
ConstraintLocatorBuilder locator);
private:
- /// \brief Simplify the given type by substituting all occurrences of
+ /// Simplify the given type by substituting all occurrences of
/// type variables for their fixed types.
Type simplifyType(Type type) {
return solution.simplifyType(type);
@@ -1273,7 +1273,7 @@
public:
- /// \brief Coerce a closure expression with a non-Void return type to a
+ /// Coerce a closure expression with a non-Void return type to a
/// contextual function type with a Void return type.
///
/// This operation cannot fail.
@@ -1284,7 +1284,7 @@
///
ClosureExpr *coerceClosureExprToVoid(ClosureExpr *expr);
- /// \brief Coerce a closure expression with a Never return type to a
+ /// Coerce a closure expression with a Never return type to a
/// contextual function type with some other return type.
///
/// This operation cannot fail.
@@ -1295,7 +1295,7 @@
///
ClosureExpr *coerceClosureExprFromNever(ClosureExpr *expr);
- /// \brief Coerce the given expression to the given type.
+ /// Coerce the given expression to the given type.
///
/// This operation cannot fail.
///
@@ -1310,7 +1310,7 @@
ConstraintLocatorBuilder locator,
Optional<Pattern*> typeFromPattern = None);
- /// \brief Coerce the given expression (which is the argument to a call) to
+ /// Coerce the given expression (which is the argument to a call) to
/// the given parameter type.
///
/// This operation cannot fail.
@@ -1331,7 +1331,7 @@
bool hasTrailingClosure,
ConstraintLocatorBuilder locator);
- /// \brief Coerce the given object argument (e.g., for the base of a
+ /// Coerce the given object argument (e.g., for the base of a
/// member expression) to the given type.
///
/// \param expr The expression to coerce.
@@ -1349,7 +1349,7 @@
ConstraintLocatorBuilder locator);
private:
- /// \brief Build a new subscript.
+ /// Build a new subscript.
///
/// \param base The base of the subscript.
/// \param index The index of the subscript.
@@ -1615,7 +1615,7 @@
return result;
}
- /// \brief Build a new reference to another constructor.
+ /// Build a new reference to another constructor.
Expr *buildOtherConstructorRef(Type openedFullType,
ConstructorDecl *ctor, Expr *base,
DeclNameLoc loc,
@@ -1804,7 +1804,7 @@
ConstraintSystem &getConstraintSystem() const { return cs; }
- /// \brief Simplify the expression type and return the expression.
+ /// Simplify the expression type and return the expression.
///
/// This routine is used for 'simple' expressions that only need their
/// types simplified, with no further computation.
@@ -4871,7 +4871,7 @@
return ConcreteDeclRef();
}
-/// \brief Given a constraint locator, find the declaration reference
+/// Given a constraint locator, find the declaration reference
/// to the callee, it is a call to a declaration.
static ConcreteDeclRef
findCalleeDeclRef(ConstraintSystem &cs, const Solution &solution,
@@ -7722,12 +7722,12 @@
return result;
}
- /// \brief Ignore statements.
+ /// Ignore statements.
std::pair<bool, Stmt *> walkToStmtPre(Stmt *stmt) override {
return { false, stmt };
}
- /// \brief Ignore declarations.
+ /// Ignore declarations.
bool walkToDeclPre(Decl *decl) override { return false; }
};
} // end anonymous namespace
@@ -7778,7 +7778,7 @@
return diagnosed;
}
-/// \brief Apply a given solution to the expression, producing a fully
+/// Apply a given solution to the expression, producing a fully
/// type-checked expression.
Expr *ConstraintSystem::applySolution(Solution &solution, Expr *expr,
Type convertType,
diff --git a/lib/Sema/CSBindings.cpp b/lib/Sema/CSBindings.cpp
index a02d2c8..1980077 100644
--- a/lib/Sema/CSBindings.cpp
+++ b/lib/Sema/CSBindings.cpp
@@ -365,7 +365,7 @@
return PotentialBinding{type, kind, constraint->getKind()};
}
-/// \brief Retrieve the set of potential type bindings for the given
+/// Retrieve the set of potential type bindings for the given
/// representative type variable, along with flags indicating whether
/// those types should be opened.
ConstraintSystem::PotentialBindings
@@ -777,7 +777,7 @@
return result;
}
-/// \brief Check whether the given type can be used as a binding for the given
+/// Check whether the given type can be used as a binding for the given
/// type variable.
///
/// \returns the type to bind to, if the binding is okay.
@@ -840,7 +840,7 @@
return superclass;
}
-/// \brief Enumerates all of the 'direct' supertypes of the given type.
+/// Enumerates all of the 'direct' supertypes of the given type.
///
/// The direct supertype S of a type T is a supertype of T (e.g., T < S)
/// such that there is no type U where T < U and U < S.
diff --git a/lib/Sema/CSDiagnostics.cpp b/lib/Sema/CSDiagnostics.cpp
index c33e11c..d7c29e9f0 100644
--- a/lib/Sema/CSDiagnostics.cpp
+++ b/lib/Sema/CSDiagnostics.cpp
@@ -1226,3 +1226,17 @@
.fixItInsertAfter(argExpr->getEndLoc(), "()");
return true;
}
+
+bool NonOptionalUnwrapFailure::diagnoseAsError() {
+ auto *anchor = getAnchor();
+
+ auto diagnostic = diag::invalid_optional_chain;
+ if (isa<ForceValueExpr>(anchor))
+ diagnostic = diag::invalid_force_unwrap;
+
+ emitDiagnostic(anchor->getLoc(), diagnostic, BaseType)
+ .highlight(anchor->getSourceRange())
+ .fixItRemove(anchor->getEndLoc());
+
+ return true;
+}
diff --git a/lib/Sema/CSDiagnostics.h b/lib/Sema/CSDiagnostics.h
index 777db6d..f9a3e33 100644
--- a/lib/Sema/CSDiagnostics.h
+++ b/lib/Sema/CSDiagnostics.h
@@ -607,6 +607,29 @@
bool diagnoseAsError() override;
};
+/// Diagnose situations when there was an attempt to unwrap entity
+/// of non-optional type e.g.
+///
+/// ```swift
+/// let i: Int = 0
+/// _ = i!
+///
+/// struct A { func foo() {} }
+/// func foo(_ a: A) {
+/// a?.foo()
+/// }
+/// ```
+class NonOptionalUnwrapFailure final : public FailureDiagnostic {
+ Type BaseType;
+
+public:
+ NonOptionalUnwrapFailure(Expr *root, ConstraintSystem &cs, Type baseType,
+ ConstraintLocator *locator)
+ : FailureDiagnostic(root, cs, locator), BaseType(baseType) {}
+
+ bool diagnoseAsError() override;
+};
+
} // end namespace constraints
} // end namespace swift
diff --git a/lib/Sema/CSFix.cpp b/lib/Sema/CSFix.cpp
index 9cc21f3..4b3cdd8 100644
--- a/lib/Sema/CSFix.cpp
+++ b/lib/Sema/CSFix.cpp
@@ -213,3 +213,14 @@
ConstraintLocator *locator) {
return new (cs.getAllocator()) AutoClosureForwarding(cs, locator);
}
+
+bool RemoveUnwrap::diagnose(Expr *root, bool asNote) const {
+ auto failure = NonOptionalUnwrapFailure(root, getConstraintSystem(), BaseType,
+ getLocator());
+ return failure.diagnose(asNote);
+}
+
+RemoveUnwrap *RemoveUnwrap::create(ConstraintSystem &cs, Type baseType,
+ ConstraintLocator *locator) {
+ return new (cs.getAllocator()) RemoveUnwrap(cs, baseType, locator);
+}
diff --git a/lib/Sema/CSFix.h b/lib/Sema/CSFix.h
index 3491ccb..c400f13 100644
--- a/lib/Sema/CSFix.h
+++ b/lib/Sema/CSFix.h
@@ -89,6 +89,9 @@
/// @autoclosure conversions are unsupported starting from
/// Swift version 5.
AutoClosureForwarding,
+
+ /// Remove `!` or `?` because base is not an optional type.
+ RemoveUnwrap,
};
class ConstraintFix {
@@ -408,6 +411,23 @@
ConstraintLocator *locator);
};
+class RemoveUnwrap final : public ConstraintFix {
+ Type BaseType;
+
+public:
+ RemoveUnwrap(ConstraintSystem &cs, Type baseType, ConstraintLocator *locator)
+ : ConstraintFix(cs, FixKind::RemoveUnwrap, locator), BaseType(baseType) {}
+
+ std::string getName() const override {
+ return "remove unwrap operator `!` or `?`";
+ }
+
+ bool diagnose(Expr *root, bool asNote = false) const override;
+
+ static RemoveUnwrap *create(ConstraintSystem &cs, Type baseType,
+ ConstraintLocator *locator);
+};
+
} // end namespace constraints
} // end namespace swift
diff --git a/lib/Sema/CSGen.cpp b/lib/Sema/CSGen.cpp
index 8e7159d..0d9e370 100644
--- a/lib/Sema/CSGen.cpp
+++ b/lib/Sema/CSGen.cpp
@@ -32,7 +32,7 @@
using namespace swift;
using namespace swift::constraints;
-/// \brief Find the declaration directly referenced by this expression.
+/// Find the declaration directly referenced by this expression.
static std::pair<ValueDecl *, FunctionRefKind>
findReferencedDecl(Expr *expr, DeclNameLoc &loc) {
do {
@@ -170,20 +170,20 @@
return expr;
}
- /// \brief Ignore statements.
+ /// Ignore statements.
std::pair<bool, Stmt *> walkToStmtPre(Stmt *stmt) override {
return { false, stmt };
}
- /// \brief Ignore declarations.
+ /// Ignore declarations.
bool walkToDeclPre(Decl *decl) override { return false; }
- /// \brief Ignore patterns.
+ /// Ignore patterns.
std::pair<bool, Pattern*> walkToPatternPre(Pattern *pat) override {
return { false, pat };
}
- /// \brief Ignore types.
+ /// Ignore types.
bool walkToTypeLocPre(TypeLoc &TL) override { return false; }
};
@@ -338,20 +338,20 @@
return { true, expr };
}
- /// \brief Ignore statements.
+ /// Ignore statements.
std::pair<bool, Stmt *> walkToStmtPre(Stmt *stmt) override {
return { false, stmt };
}
- /// \brief Ignore declarations.
+ /// Ignore declarations.
bool walkToDeclPre(Decl *decl) override { return false; }
- /// \brief Ignore patterns.
+ /// Ignore patterns.
std::pair<bool, Pattern*> walkToPatternPre(Pattern *pat) override {
return { false, pat };
}
- /// \brief Ignore types.
+ /// Ignore types.
bool walkToTypeLocPre(TypeLoc &TL) override { return false; }
};
@@ -981,12 +981,12 @@
return expr;
}
- /// \brief Ignore statements.
+ /// Ignore statements.
std::pair<bool, Stmt *> walkToStmtPre(Stmt *stmt) override {
return { false, stmt };
}
- /// \brief Ignore declarations.
+ /// Ignore declarations.
bool walkToDeclPre(Decl *decl) override { return false; }
};
} // end anonymous namespace
@@ -1008,7 +1008,7 @@
= { nullptr, nullptr };
unsigned currentEditorPlaceholderVariable = 0;
- /// \brief Add constraints for a reference to a named member of the given
+ /// Add constraints for a reference to a named member of the given
/// base type, and return the type of such a reference.
Type addMemberRefConstraints(Expr *expr, Expr *base, DeclName name,
FunctionRefKind functionRefKind,
@@ -1030,7 +1030,7 @@
return tv;
}
- /// \brief Add constraints for a reference to a specific member of the given
+ /// Add constraints for a reference to a specific member of the given
/// base type, and return the type of such a reference.
Type addMemberRefConstraints(Expr *expr, Expr *base, ValueDecl *decl,
FunctionRefKind functionRefKind) {
@@ -1054,7 +1054,7 @@
return tv;
}
- /// \brief Add constraints for a subscript operation.
+ /// Add constraints for a subscript operation.
Type addSubscriptConstraints(Expr *anchor, Type baseTy, Expr *index,
ValueDecl *declOrNull,
ConstraintLocator *locator = nullptr) {
@@ -2073,7 +2073,7 @@
});
}
- /// \brief Produces a type for the given pattern, filling in any missing
+ /// Produces a type for the given pattern, filling in any missing
/// type information with fresh type variables.
///
/// \param pattern The pattern.
@@ -2184,7 +2184,7 @@
return CS.getType(expr->getClosureBody());
}
- /// \brief Walk a closure body to determine if it's possible for
+ /// Walk a closure body to determine if it's possible for
/// it to return with a non-void result.
static bool closureHasNoResult(ClosureExpr *expr) {
// A walker that looks for 'return' statements that aren't
@@ -2233,7 +2233,7 @@
return finder.hasNoResult();
}
- /// \brief Walk a closure AST to determine if it can throw.
+ /// Walk a closure AST to determine if it can throw.
bool closureCanThrow(ClosureExpr *expr) {
// A walker that looks for 'try' or 'throw' expressions
// that aren't nested within closures, nested declarations,
@@ -3237,7 +3237,7 @@
}
};
- /// \brief AST walker that "sanitizes" an expression for the
+ /// AST walker that "sanitizes" an expression for the
/// constraint-based type checker.
///
/// This is necessary because Sema fills in too much type information before
@@ -3414,7 +3414,7 @@
return expr;
}
- /// \brief Ignore declarations.
+ /// Ignore declarations.
bool walkToDeclPre(Decl *decl) override { return false; }
// Don't walk into statements. This handles the BraceStmt in
@@ -3490,7 +3490,7 @@
return { true, expr };
}
- /// \brief Once we've visited the children of the given expression,
+ /// Once we've visited the children of the given expression,
/// generate constraints from the expression.
Expr *walkToExprPost(Expr *expr) override {
@@ -3565,12 +3565,12 @@
return nullptr;
}
- /// \brief Ignore statements.
+ /// Ignore statements.
std::pair<bool, Stmt *> walkToStmtPre(Stmt *stmt) override {
return { false, stmt };
}
- /// \brief Ignore declarations.
+ /// Ignore declarations.
bool walkToDeclPre(Decl *decl) override { return false; }
};
diff --git a/lib/Sema/CSRanking.cpp b/lib/Sema/CSRanking.cpp
index 628a967..66bdc3d 100644
--- a/lib/Sema/CSRanking.cpp
+++ b/lib/Sema/CSRanking.cpp
@@ -134,7 +134,7 @@
return false;
}
-/// \brief Compare two overload choices for equality.
+/// Compare two overload choices for equality.
static bool sameOverloadChoice(const OverloadChoice &x,
const OverloadChoice &y) {
if (x.getKind() != y.getKind())
@@ -257,7 +257,7 @@
return {SelfTypeRelationship::ConformsTo, conformance};
}
-/// \brief Given two generic function declarations, signal if the first is more
+/// Given two generic function declarations, signal if the first is more
/// "constrained" than the second by comparing the number of constraints
/// applied to each type parameter.
/// Note that this is not a subtype or conversion check - that takes place
@@ -381,7 +381,7 @@
return index->getAttrs().hasAttribute<ImplicitlyUnwrappedOptionalAttr>();
}
-/// \brief Determine whether the first declaration is as "specialized" as
+/// Determine whether the first declaration is as "specialized" as
/// the second declaration.
///
/// "Specialized" is essentially a form of subtyping, defined below.
diff --git a/lib/Sema/CSSimplify.cpp b/lib/Sema/CSSimplify.cpp
index 4b7c314..88e0d4a 100644
--- a/lib/Sema/CSSimplify.cpp
+++ b/lib/Sema/CSSimplify.cpp
@@ -2979,10 +2979,27 @@
return SolutionKind::Unsolved;
}
- // If the base type is not optional, the constraint fails.
+
Type objectTy = optTy->getOptionalObjectType();
- if (!objectTy)
- return SolutionKind::Error;
+ // If the base type is not optional, let's attempt a fix (if possible)
+ // and assume that `!` is just not there.
+ if (!objectTy) {
+ // Let's see if we can apply a specific fix here.
+ if (shouldAttemptFixes()) {
+ auto *fix =
+ RemoveUnwrap::create(*this, optTy, getConstraintLocator(locator));
+
+ if (recordFix(fix))
+ return SolutionKind::Error;
+
+ // If the fix was successful let's record
+ // "fixed" object type and continue.
+ objectTy = optTy;
+ } else {
+ // If fixes are not allowed, no choice but to fail.
+ return SolutionKind::Error;
+ }
+ }
// The object type is an lvalue if the optional was.
if (optLValueTy->is<LValueType>())
@@ -2993,7 +3010,7 @@
return SolutionKind::Solved;
}
-/// \brief Attempt to simplify a function input or result constraint.
+/// Attempt to simplify a function input or result constraint.
ConstraintSystem::SolutionKind
ConstraintSystem::simplifyFunctionComponentConstraint(
ConstraintKind kind,
@@ -5427,6 +5444,7 @@
case FixKind::RelabelArguments:
case FixKind::AddConformance:
case FixKind::AutoClosureForwarding:
+ case FixKind::RemoveUnwrap:
llvm_unreachable("handled elsewhere");
}
diff --git a/lib/Sema/CSSolver.cpp b/lib/Sema/CSSolver.cpp
index 6008846..944b6ef 100644
--- a/lib/Sema/CSSolver.cpp
+++ b/lib/Sema/CSSolver.cpp
@@ -234,7 +234,7 @@
Fixes.append(solution.Fixes.begin(), solution.Fixes.end());
}
-/// \brief Restore the type variable bindings to what they were before
+/// Restore the type variable bindings to what they were before
/// we attempted to solve this constraint system.
void ConstraintSystem::restoreTypeVariableBindings(unsigned numBindings) {
auto &savedBindings = *getSavedBindings();
@@ -316,7 +316,7 @@
namespace {
-/// \brief Truncate the given small vector to the given new size.
+/// Truncate the given small vector to the given new size.
template<typename T>
void truncate(SmallVectorImpl<T> &vec, unsigned newSize) {
assert(newSize <= vec.size() && "Not a truncation!");
@@ -485,7 +485,7 @@
cs.failedConstraint = nullptr;
}
-/// \brief Solve the system of constraints.
+/// Solve the system of constraints.
///
/// \param allowFreeTypeVariables How to bind free type variables in
/// the solution.
@@ -826,7 +826,7 @@
}
private:
- /// \brief Extract type of the element from given collection type.
+ /// Extract type of the element from given collection type.
///
/// \param collection The type of the collection container.
///
diff --git a/lib/Sema/CSStep.h b/lib/Sema/CSStep.h
index 3fdde3c..c2d805f 100644
--- a/lib/Sema/CSStep.h
+++ b/lib/Sema/CSStep.h
@@ -126,7 +126,7 @@
/// this step solved or failed.
virtual StepResult take(bool prevFailed) = 0;
- /// \brief Try to resume previously suspended step.
+ /// Try to resume previously suspended step.
///
/// This happens after "follow-up" steps are done
/// and all of the required information should be
@@ -144,7 +144,7 @@
virtual void print(llvm::raw_ostream &Out) = 0;
protected:
- /// \brief Transition this step into one of the available states.
+ /// Transition this step into one of the available states.
///
/// This is primarily driven by execution of the step itself and
/// the solver, while it executes the work list.
diff --git a/lib/Sema/CalleeCandidateInfo.cpp b/lib/Sema/CalleeCandidateInfo.cpp
index 5581f94..b4850ce 100644
--- a/lib/Sema/CalleeCandidateInfo.cpp
+++ b/lib/Sema/CalleeCandidateInfo.cpp
@@ -26,7 +26,7 @@
using namespace swift;
using namespace constraints;
-/// \brief Determine whether one type would be a valid substitution for an
+/// Determine whether one type would be a valid substitution for an
/// archetype.
///
/// \param type The potential type.
diff --git a/lib/Sema/CodeSynthesis.cpp b/lib/Sema/CodeSynthesis.cpp
index 28a7790..912c8f3 100644
--- a/lib/Sema/CodeSynthesis.cpp
+++ b/lib/Sema/CodeSynthesis.cpp
@@ -81,7 +81,8 @@
// Note that we can't just use hasClangNode() because the importer
// sometimes synthesizes things that lack clang nodes.
auto *mod = storage->getDeclContext()->getModuleScopeContext();
- return (cast<FileUnit>(mod)->getKind() == FileUnitKind::ClangModule);
+ return (cast<FileUnit>(mod)->getKind() == FileUnitKind::ClangModule ||
+ cast<FileUnit>(mod)->getKind() == FileUnitKind::DWARFModule);
}
/// Insert the specified decl into the DeclContext's member list. If the hint
@@ -2186,7 +2187,7 @@
llvm_unreachable("bad synthesized function kind");
}
-/// \brief Create an implicit struct or class constructor.
+/// Create an implicit struct or class constructor.
///
/// \param decl The struct or class for which a constructor will be created.
/// \param ICK The kind of implicit constructor to create.
diff --git a/lib/Sema/CodeSynthesis.h b/lib/Sema/CodeSynthesis.h
index 3b08c7a..6f5bb35 100644
--- a/lib/Sema/CodeSynthesis.h
+++ b/lib/Sema/CodeSynthesis.h
@@ -106,19 +106,19 @@
void triggerAccessorSynthesis(TypeChecker &TC, AbstractStorageDecl *storage);
-/// \brief Describes the kind of implicit constructor that will be
+/// Describes the kind of implicit constructor that will be
/// generated.
enum class ImplicitConstructorKind {
- /// \brief The default constructor, which default-initializes each
+ /// The default constructor, which default-initializes each
/// of the instance variables.
Default,
- /// \brief The memberwise constructor, which initializes each of
+ /// The memberwise constructor, which initializes each of
/// the instance variables from a parameter of the same type and
/// name.
Memberwise
};
-/// \brief Create an implicit struct or class constructor.
+/// Create an implicit struct or class constructor.
///
/// \param decl The struct or class for which a constructor will be created.
/// \param ICK The kind of implicit constructor to create.
diff --git a/lib/Sema/Constraint.h b/lib/Sema/Constraint.h
index 9f5bd4a..d824da0 100644
--- a/lib/Sema/Constraint.h
+++ b/lib/Sema/Constraint.h
@@ -45,45 +45,45 @@
class ConstraintLocator;
class ConstraintSystem;
-/// \brief Describes the kind of constraint placed on one or more types.
+/// Describes the kind of constraint placed on one or more types.
enum class ConstraintKind : char {
- /// \brief The two types must be bound to the same type. This is the only
+ /// The two types must be bound to the same type. This is the only
/// truly symmetric constraint.
Bind,
- /// \brief The two types must be bound to the same type, dropping
+ /// The two types must be bound to the same type, dropping
/// lvalueness when comparing a type variable to a type.
Equal,
- /// \brief The first type is the type of a function parameter; the second
+ /// The first type is the type of a function parameter; the second
/// type is the type of a reference to that parameter from within the
/// function body. Specifically, the left type is an inout type iff the right
/// type is an lvalue type with the same object type. Otherwise, the two
/// types must be the same type.
BindParam,
- /// \brief Binds the first type to the element type of the second type.
+ /// Binds the first type to the element type of the second type.
BindToPointerType,
- /// \brief The first type is a subtype of the second type, i.e., a value
+ /// The first type is a subtype of the second type, i.e., a value
/// of the type of the first type can be used wherever a value of the
/// second type is expected.
Subtype,
- /// \brief The first type is convertible to the second type.
+ /// The first type is convertible to the second type.
Conversion,
- /// \brief The first type can be bridged to the second type.
+ /// The first type can be bridged to the second type.
BridgingConversion,
- /// \brief The first type is the element of an argument tuple that is
+ /// The first type is the element of an argument tuple that is
/// convertible to the second type (which represents the corresponding
/// parameter type).
ArgumentConversion,
- /// \brief The first type is convertible to the second type, including inout.
+ /// The first type is convertible to the second type, including inout.
OperatorArgumentConversion,
- /// \brief The first type must conform to the second type (which is a
+ /// The first type must conform to the second type (which is a
/// protocol type).
ConformsTo,
- /// \brief The first type describes a literal that conforms to the second
+ /// The first type describes a literal that conforms to the second
/// type, which is one of the known expressible-by-literal protocols.
LiteralConformsTo,
/// A checked cast from the first type to the second.
CheckedCast,
- /// \brief The first type can act as the Self type of the second type (which
+ /// The first type can act as the Self type of the second type (which
/// is a protocol).
///
/// This constraint is slightly looser than a conforms-to constraint, because
@@ -91,78 +91,78 @@
/// existential, even if it doesn't conform to that protocol (e.g., due to
/// the use of associated types).
SelfObjectOfProtocol,
- /// \brief Both types are function types. The first function type's
+ /// Both types are function types. The first function type's
/// input is the value being passed to the function and its output
/// is a type variable that describes the output. The second
/// function type is expected to become a function type. Note, we
/// do not require the function type attributes to match.
ApplicableFunction,
- /// \brief The first type is a function type whose input is the value passed
+ /// The first type is a function type whose input is the value passed
/// to the function and whose output is a type variable describing the output.
/// The second type is either a `@dynamicCallable` nominal type or the
/// function type of a `dynamicallyCall` method defined on a
/// `@dynamicCallable` nominal type.
DynamicCallableApplicableFunction,
- /// \brief The first type is the type of the dynamicType member of the
+ /// The first type is the type of the dynamicType member of the
/// second type.
DynamicTypeOf,
- /// \brief Binds the left-hand type to a particular overload choice.
+ /// Binds the left-hand type to a particular overload choice.
BindOverload,
- /// \brief The first type has a member with the given name, and the
+ /// The first type has a member with the given name, and the
/// type of that member, when referenced as a value, is the second type.
ValueMember,
- /// \brief The first type (which is implicit) has a member with the given
+ /// The first type (which is implicit) has a member with the given
/// name, and the type of that member, when referenced as a value, is the
/// second type.
UnresolvedValueMember,
- /// \brief The first type can be defaulted to the second (which currently
+ /// The first type can be defaulted to the second (which currently
/// cannot be dependent). This is more like a type property than a
/// relational constraint.
Defaultable,
- /// \brief A disjunction constraint that specifies that one or more of the
+ /// A disjunction constraint that specifies that one or more of the
/// stored constraints must hold.
Disjunction,
- /// \brief The first type is an optional type whose object type is the second
+ /// The first type is an optional type whose object type is the second
/// type, preserving lvalue-ness.
OptionalObject,
- /// \brief The first type is the same function type as the second type, but
+ /// The first type is the same function type as the second type, but
/// made @escaping.
EscapableFunctionOf,
- /// \brief The first type is an opened type from the second type (which is
+ /// The first type is an opened type from the second type (which is
/// an existential).
OpenedExistentialOf,
- /// \brief A relation between three types. The first is the key path type,
+ /// A relation between three types. The first is the key path type,
// the second is the root type, and the third is the projected value type.
// The second and third types can be lvalues depending on the kind of key
// path.
KeyPathApplication,
- /// \brief A relation between three types. The first is the key path type,
+ /// A relation between three types. The first is the key path type,
// the second is its root type, and the third is the projected value type.
// The key path type is chosen based on the selection of overloads for the
// member references along the path.
KeyPath,
- /// \brief The first type is a function type, the second is the function's
+ /// The first type is a function type, the second is the function's
/// input type.
FunctionInput,
- /// \brief The first type is a function type, the second is the function's
+ /// The first type is a function type, the second is the function's
/// result type.
FunctionResult,
};
-/// \brief Classification of the different kinds of constraints.
+/// Classification of the different kinds of constraints.
enum class ConstraintClassification : char {
- /// \brief A relational constraint, which relates two types.
+ /// A relational constraint, which relates two types.
Relational,
- /// \brief A member constraint, which names a member of a type and assigns
+ /// A member constraint, which names a member of a type and assigns
/// it a reference type.
Member,
- /// \brief A property of a single type, such as whether it is defaultable to
+ /// A property of a single type, such as whether it is defaultable to
/// a particular type.
TypeProperty,
- /// \brief A disjunction constraint.
+ /// A disjunction constraint.
Disjunction
};
@@ -233,12 +233,12 @@
RememberChoice = true
};
-/// \brief A constraint between two type variables.
+/// A constraint between two type variables.
class Constraint final : public llvm::ilist_node<Constraint>,
private llvm::TrailingObjects<Constraint, TypeVariableType *> {
friend TrailingObjects;
- /// \brief The kind of constraint.
+ /// The kind of constraint.
ConstraintKind Kind : 8;
/// The kind of restriction placed on this constraint.
@@ -276,28 +276,28 @@
union {
struct {
- /// \brief The first type.
+ /// The first type.
Type First;
- /// \brief The second type.
+ /// The second type.
Type Second;
- /// \brief The third type, if any.
+ /// The third type, if any.
Type Third;
} Types;
struct {
- /// \brief The type of the base.
+ /// The type of the base.
Type First;
- /// \brief The type of the member.
+ /// The type of the member.
Type Second;
- /// \brief If non-null, the name of a member of the first type is that
+ /// If non-null, the name of a member of the first type is that
/// being related to the second type.
DeclName Member;
- /// \brief The DC in which the use appears.
+ /// The DC in which the use appears.
DeclContext *UseDC;
} Member;
@@ -305,22 +305,22 @@
ArrayRef<Constraint *> Nested;
struct {
- /// \brief The first type
+ /// The first type
Type First;
- /// \brief The overload choice
+ /// The overload choice
OverloadChoice Choice;
- /// \brief The DC in which the use appears.
+ /// The DC in which the use appears.
DeclContext *UseDC;
} Overload;
};
- /// \brief The locator that describes where in the expression this
+ /// The locator that describes where in the expression this
/// constraint applies.
ConstraintLocator *Locator;
- /// \brief Constraints are always allocated within a given constraint
+ /// Constraints are always allocated within a given constraint
/// system.
void *operator new(size_t) = delete;
@@ -410,7 +410,7 @@
RememberChoice_t shouldRememberChoice
= ForgetChoice);
- /// \brief Determine the kind of constraint.
+ /// Determine the kind of constraint.
ConstraintKind getKind() const { return Kind; }
/// Retrieve the restriction placed on this constraint.
@@ -460,7 +460,7 @@
return {getTrailingObjects<TypeVariableType*>(), NumTypeVariables};
}
- /// \brief Determine the classification of this constraint, providing
+ /// Determine the classification of this constraint, providing
/// a broader categorization than \c getKind().
ConstraintClassification getClassification() const {
switch (Kind) {
@@ -504,7 +504,7 @@
llvm_unreachable("Unhandled ConstraintKind in switch.");
}
- /// \brief Retrieve the first type in the constraint.
+ /// Retrieve the first type in the constraint.
Type getFirstType() const {
switch (getKind()) {
case ConstraintKind::Disjunction:
@@ -522,7 +522,7 @@
}
}
- /// \brief Retrieve the second type in the constraint.
+ /// Retrieve the second type in the constraint.
Type getSecondType() const {
switch (getKind()) {
case ConstraintKind::Disjunction:
@@ -538,7 +538,7 @@
}
}
- /// \brief Retrieve the third type in the constraint.
+ /// Retrieve the third type in the constraint.
Type getThirdType() const {
switch (getKind()) {
case ConstraintKind::KeyPath:
@@ -549,17 +549,17 @@
}
}
- /// \brief Retrieve the protocol in a conformance constraint.
+ /// Retrieve the protocol in a conformance constraint.
ProtocolDecl *getProtocol() const;
- /// \brief Retrieve the name of the member for a member constraint.
+ /// Retrieve the name of the member for a member constraint.
DeclName getMember() const {
assert(Kind == ConstraintKind::ValueMember ||
Kind == ConstraintKind::UnresolvedValueMember);
return Member.Member;
}
- /// \brief Determine whether this constraint kind has a second type.
+ /// Determine whether this constraint kind has a second type.
static bool hasMember(ConstraintKind kind) {
return kind == ConstraintKind::ValueMember
|| kind == ConstraintKind::UnresolvedValueMember;
@@ -613,7 +613,7 @@
return Member.UseDC;
}
- /// \brief Retrieve the locator for this constraint.
+ /// Retrieve the locator for this constraint.
ConstraintLocator *getLocator() const { return Locator; }
/// Clone the given constraint.
diff --git a/lib/Sema/ConstraintLocator.h b/lib/Sema/ConstraintLocator.h
index 83e5de5..df2d848 100644
--- a/lib/Sema/ConstraintLocator.h
+++ b/lib/Sema/ConstraintLocator.h
@@ -38,7 +38,7 @@
namespace constraints {
class ConstraintSystem;
-/// \brief Locates a given constraint within the expression being
+/// Locates a given constraint within the expression being
/// type-checked, which may refer down into subexpressions and parts of
/// the types of those subexpressions.
///
@@ -50,59 +50,59 @@
/// to indicate constraints on its argument or result type.
class ConstraintLocator : public llvm::FoldingSetNode {
public:
- /// \brief Describes the kind of a particular path element, e.g.,
+ /// Describes the kind of a particular path element, e.g.,
/// "tuple element", "call result", "base of member lookup", etc.
enum PathElementKind : unsigned char {
- /// \brief The argument of function application.
+ /// The argument of function application.
ApplyArgument,
- /// \brief The function being applied.
+ /// The function being applied.
ApplyFunction,
/// Matching an argument to a parameter.
ApplyArgToParam,
- /// \brief A generic parameter being opened.
+ /// A generic parameter being opened.
///
/// Also contains the generic parameter type itself.
GenericParameter,
- /// \brief The argument type of a function.
+ /// The argument type of a function.
FunctionArgument,
- /// \brief The result type of a function.
+ /// The result type of a function.
FunctionResult,
- /// \brief A tuple element referenced by position.
+ /// A tuple element referenced by position.
TupleElement,
- /// \brief A tuple element referenced by name.
+ /// A tuple element referenced by name.
NamedTupleElement,
- /// \brief An optional payload.
+ /// An optional payload.
OptionalPayload,
- /// \brief A generic argument.
+ /// A generic argument.
/// FIXME: Add support for named generic arguments?
GenericArgument,
- /// \brief A member.
+ /// A member.
/// FIXME: Do we need the actual member name here?
Member,
- /// \brief An unresolved member.
+ /// An unresolved member.
UnresolvedMember,
- /// \brief The base of a member expression.
+ /// The base of a member expression.
MemberRefBase,
- /// \brief The lookup for a subscript member.
+ /// The lookup for a subscript member.
SubscriptMember,
- /// \brief The lookup for a constructor member.
+ /// The lookup for a constructor member.
ConstructorMember,
- /// \brief An implicit @lvalue-to-inout conversion; only valid for operator
+ /// An implicit @lvalue-to-inout conversion; only valid for operator
/// arguments.
LValueConversion,
- /// \brief RValue adjustment.
+ /// RValue adjustment.
RValueAdjustment,
- /// \brief The result of a closure.
+ /// The result of a closure.
ClosureResult,
- /// \brief The parent of a nested type.
+ /// The parent of a nested type.
ParentType,
- /// \brief The instance of a metatype type.
+ /// The instance of a metatype type.
InstanceType,
- /// \brief The generic type of a sequence.
+ /// The generic type of a sequence.
SequenceIteratorProtocol,
- /// \brief The element type of a generator.
+ /// The element type of a generator.
GeneratorElementType,
- /// \brief An argument passed in an autoclosure parameter
+ /// An argument passed in an autoclosure parameter
/// position, which must match the autoclosure return type.
AutoclosureResult,
/// The requirement that we're matching during protocol conformance
@@ -119,15 +119,15 @@
ConditionalRequirement,
/// A single requirement placed on the type parameters.
TypeParameterRequirement,
- /// \brief Locator for a binding from an IUO disjunction choice.
+ /// Locator for a binding from an IUO disjunction choice.
ImplicitlyUnwrappedDisjunctionChoice,
- /// \brief A result of an expression involving dynamic lookup.
+ /// A result of an expression involving dynamic lookup.
DynamicLookupResult,
- /// \brief The desired contextual type passed in to the constraint system.
+ /// The desired contextual type passed in to the constraint system.
ContextualType,
};
- /// \brief Determine the number of numeric values used for the given path
+ /// Determine the number of numeric values used for the given path
/// element kind.
static unsigned numNumericValuesInPathElement(PathElementKind kind) {
switch (kind) {
@@ -227,11 +227,11 @@
llvm_unreachable("Unhandled PathElementKind in switch.");
}
- /// \brief One element in the path of a locator, which can include both
+ /// One element in the path of a locator, which can include both
/// a kind (PathElementKind) and a value used to describe specific
/// kinds further (e.g., the position of a tuple element).
class PathElement {
- /// \brief Describes the kind of data stored here.
+ /// Describes the kind of data stored here.
enum StoredKind : unsigned char {
StoredGenericParameter,
StoredRequirement,
@@ -239,7 +239,7 @@
StoredKindAndValue
};
- /// \brief The actual storage for the path element, which involves both a
+ /// The actual storage for the path element, which involves both a
/// kind and (potentially) a value.
///
/// The current storage involves a two-bit "storage kind", which selects
@@ -251,16 +251,16 @@
/// \note The "storage kind" is stored in the \c storedKind field.
uint64_t storage : 62;
- /// \brief The kind of value stored in \c storage. Valid values are those
+ /// The kind of value stored in \c storage. Valid values are those
/// from the StoredKind enum.
uint64_t storedKind : 2;
- /// \brief Encode a path element kind and a value into the storage format.
+ /// Encode a path element kind and a value into the storage format.
static uint64_t encodeStorage(PathElementKind kind, unsigned value) {
return ((uint64_t)value << 8) | kind;
}
- /// \brief Decode a storage value into path element kind and value.
+ /// Decode a storage value into path element kind and value.
static std::pair<PathElementKind, unsigned>
decodeStorage(uint64_t storage) {
return { (PathElementKind)((unsigned)storage & 0xFF), storage >> 8 };
@@ -310,13 +310,13 @@
(kind == Witness && getWitness() == decl)));
}
- /// \brief Retrieve a path element for a tuple element referred to by
+ /// Retrieve a path element for a tuple element referred to by
/// its position.
static PathElement getTupleElement(unsigned position) {
return PathElement(TupleElement, position);
}
- /// \brief Retrieve a path element for a tuple element referred to by
+ /// Retrieve a path element for a tuple element referred to by
/// its name.
static PathElement getNamedTupleElement(unsigned position) {
return PathElement(NamedTupleElement, position);
@@ -328,7 +328,7 @@
return PathElement(ApplyArgToParam, argIdx, paramIdx);
}
- /// \brief Retrieve a path element for a generic argument referred to by
+ /// Retrieve a path element for a generic argument referred to by
/// its position.
static PathElement getGenericArgument(unsigned position) {
return PathElement(GenericArgument, position);
@@ -350,7 +350,7 @@
static_cast<unsigned>(kind));
}
- /// \brief Retrieve the kind of path element.
+ /// Retrieve the kind of path element.
PathElementKind getKind() const {
switch (static_cast<StoredKind>(storedKind)) {
case StoredGenericParameter:
@@ -369,7 +369,7 @@
llvm_unreachable("Unhandled StoredKind in switch.");
}
- /// \brief Retrieve the value associated with this path element,
+ /// Retrieve the value associated with this path element,
/// if it has one.
unsigned getValue() const {
unsigned numValues = numNumericValuesInPathElement(getKind());
@@ -383,7 +383,7 @@
return value >> 16;
}
- /// \brief Retrieve the second value associated with this path element,
+ /// Retrieve the second value associated with this path element,
/// if it has one.
unsigned getValue2() const {
unsigned numValues = numNumericValuesInPathElement(getKind());
@@ -400,7 +400,7 @@
return reinterpret_cast<ValueDecl *>(storage << 2);
}
- /// \brief Retrieve the actual archetype for a generic parameter path
+ /// Retrieve the actual archetype for a generic parameter path
/// element.
GenericTypeParamType *getGenericParameter() const {
assert(getKind() == GenericParameter &&
@@ -415,7 +415,7 @@
return reinterpret_cast<ValueDecl *>(storage << 2);
}
- /// \brief Return the summary flags for this particular element.
+ /// Return the summary flags for this particular element.
unsigned getNewSummaryFlags() const {
return getSummaryFlagsForPathElement(getKind());
}
@@ -428,10 +428,10 @@
return flags;
}
- /// \brief Retrieve the expression that anchors this locator.
+ /// Retrieve the expression that anchors this locator.
Expr *getAnchor() const { return anchor; }
- /// \brief Retrieve the path that extends from the anchor to a specific
+ /// Retrieve the path that extends from the anchor to a specific
/// subcomponent.
ArrayRef<PathElement> getPath() const {
// FIXME: Alignment.
@@ -441,22 +441,22 @@
unsigned getSummaryFlags() const { return summaryFlags; }
- /// \brief Determines whether this locator is part of a function
+ /// Determines whether this locator is part of a function
/// conversion.
bool isFunctionConversion() const {
return (getSummaryFlags() & IsFunctionConversion);
}
- /// \brief Produce a profile of this locator, for use in a folding set.
+ /// Produce a profile of this locator, for use in a folding set.
static void Profile(llvm::FoldingSetNodeID &id, Expr *anchor,
ArrayRef<PathElement> path);
- /// \brief Produce a profile of this locator, for use in a folding set.
+ /// Produce a profile of this locator, for use in a folding set.
void Profile(llvm::FoldingSetNodeID &id) {
Profile(id, anchor, getPath());
}
- /// \brief Produce a debugging dump of this locator.
+ /// Produce a debugging dump of this locator.
LLVM_ATTRIBUTE_DEPRECATED(
void dump(SourceManager *SM) LLVM_ATTRIBUTE_USED,
"only for use within the debugger");
@@ -467,7 +467,7 @@
void dump(SourceManager *SM, raw_ostream &OS) LLVM_ATTRIBUTE_USED;
private:
- /// \brief Initialize a constraint locator with an anchor and a path.
+ /// Initialize a constraint locator with an anchor and a path.
ConstraintLocator(Expr *anchor, ArrayRef<PathElement> path,
unsigned flags)
: anchor(anchor), numPathElements(path.size()), summaryFlags(flags)
@@ -477,7 +477,7 @@
reinterpret_cast<PathElement *>(this + 1));
}
- /// \brief Create a new locator from an anchor and an array of path
+ /// Create a new locator from an anchor and an array of path
/// elements.
///
/// Note that this routine only handles the allocation and initialization
@@ -494,15 +494,15 @@
return new (mem) ConstraintLocator(anchor, path, flags);
}
- /// \brief The expression at which this locator is anchored.
+ /// The expression at which this locator is anchored.
Expr *anchor;
- /// \brief The number of path elements in this locator.
+ /// The number of path elements in this locator.
///
/// The actual path elements are stored after the locator.
unsigned numPathElements : 24;
- /// \brief A set of flags summarizing interesting properties of the path.
+ /// A set of flags summarizing interesting properties of the path.
unsigned summaryFlags : 7;
friend class ConstraintSystem;
@@ -510,21 +510,21 @@
using LocatorPathElt = ConstraintLocator::PathElement;
-/// \brief A simple stack-only builder object that constructs a
+/// A simple stack-only builder object that constructs a
/// constraint locator without allocating memory.
///
/// Use this object to build a path when passing components down the
/// stack, e.g., when recursively breaking apart types as in \c matchTypes().
class ConstraintLocatorBuilder {
- /// \brief The constraint locator that this builder extends or the
+ /// The constraint locator that this builder extends or the
/// previous builder in the chain.
llvm::PointerUnion<ConstraintLocator *, ConstraintLocatorBuilder *>
previous;
- /// \brief The current path element, if there is one.
+ /// The current path element, if there is one.
Optional<LocatorPathElt> element;
- /// \brief The current set of flags.
+ /// The current set of flags.
unsigned summaryFlags;
ConstraintLocatorBuilder(llvm::PointerUnion<ConstraintLocator *,
@@ -539,7 +539,7 @@
: previous(locator), element(),
summaryFlags(locator ? locator->getSummaryFlags() : 0) { }
- /// \brief Retrieve a new path with the given path element added to it.
+ /// Retrieve a new path with the given path element added to it.
ConstraintLocatorBuilder withPathElement(LocatorPathElt newElt) {
unsigned newFlags = summaryFlags | newElt.getNewSummaryFlags();
if (!element)
@@ -548,12 +548,12 @@
return ConstraintLocatorBuilder(this, newElt, newFlags);
}
- /// \brief Determine whether this builder has an empty path.
+ /// Determine whether this builder has an empty path.
bool hasEmptyPath() const {
return !element;
}
- /// \brief Return the set of flags that summarize this path.
+ /// Return the set of flags that summarize this path.
unsigned getSummaryFlags() const {
return summaryFlags;
}
@@ -562,7 +562,7 @@
return (getSummaryFlags() & ConstraintLocator::IsFunctionConversion);
}
- /// \brief Retrieve the base constraint locator, on which this builder's
+ /// Retrieve the base constraint locator, on which this builder's
/// path is based.
ConstraintLocator *getBaseLocator() const {
for (auto prev = this;
@@ -586,7 +586,7 @@
return nullptr;
}
- /// \brief Retrieve the components of the complete locator, which includes
+ /// Retrieve the components of the complete locator, which includes
/// the anchor expression and the path.
Expr *getLocatorParts(SmallVectorImpl<LocatorPathElt> &path) const {
for (auto prev = this;
diff --git a/lib/Sema/ConstraintSystem.cpp b/lib/Sema/ConstraintSystem.cpp
index 7ec35af..fd689a8 100644
--- a/lib/Sema/ConstraintSystem.cpp
+++ b/lib/Sema/ConstraintSystem.cpp
@@ -2189,7 +2189,7 @@
return diagnosed;
}
-/// \brief Determine the number of distinct overload choices in the
+/// Determine the number of distinct overload choices in the
/// provided set.
static unsigned countDistinctOverloads(ArrayRef<OverloadChoice> choices) {
llvm::SmallPtrSet<void *, 4> uniqueChoices;
@@ -2201,7 +2201,7 @@
return result;
}
-/// \brief Determine the name of the overload in a set of overload choices.
+/// Determine the name of the overload in a set of overload choices.
static DeclName getOverloadChoiceName(ArrayRef<OverloadChoice> choices) {
DeclName name;
for (auto choice : choices) {
diff --git a/lib/Sema/ConstraintSystem.h b/lib/Sema/ConstraintSystem.h
index ba16bc6..f7f3a8a 100644
--- a/lib/Sema/ConstraintSystem.h
+++ b/lib/Sema/ConstraintSystem.h
@@ -58,7 +58,7 @@
} // end namespace swift
-/// \brief Allocate memory within the given constraint system.
+/// Allocate memory within the given constraint system.
void *operator new(size_t bytes, swift::constraints::ConstraintSystem& cs,
size_t alignment = 8);
@@ -66,26 +66,26 @@
namespace constraints {
-/// \brief A handle that holds the saved state of a type variable, which
+/// A handle that holds the saved state of a type variable, which
/// can be restored.
class SavedTypeVariableBinding {
- /// \brief The type variable and type variable options.
+ /// The type variable and type variable options.
llvm::PointerIntPair<TypeVariableType *, 3> TypeVarAndOptions;
- /// \brief The parent or fixed type.
+ /// The parent or fixed type.
llvm::PointerUnion<TypeVariableType *, TypeBase *> ParentOrFixed;
public:
explicit SavedTypeVariableBinding(TypeVariableType *typeVar);
- /// \brief Restore the state of the type variable to the saved state.
+ /// Restore the state of the type variable to the saved state.
void restore();
TypeVariableType *getTypeVariable() { return TypeVarAndOptions.getPointer(); }
unsigned getOptions() { return TypeVarAndOptions.getInt(); }
};
-/// \brief A set of saved type variable bindings.
+/// A set of saved type variable bindings.
using SavedTypeVariableBindings = SmallVector<SavedTypeVariableBinding, 16>;
class ConstraintLocator;
@@ -169,7 +169,7 @@
TVO_PrefersSubtypeBinding = 0x04
};
-/// \brief The implementation object for a type variable used within the
+/// The implementation object for a type variable used within the
/// constraint-solving type checker.
///
/// The implementation object for a type variable contains information about
@@ -177,10 +177,10 @@
/// to, what specific types it might be and, eventually, the fixed type to
/// which it is assigned.
class TypeVariableType::Implementation {
- /// \brief The locator that describes where this type variable was generated.
+ /// The locator that describes where this type variable was generated.
constraints::ConstraintLocator *locator;
- /// \brief Either the parent of this type variable within an equivalence
+ /// Either the parent of this type variable within an equivalence
/// class of type variables, or the fixed type to which this type variable
/// type is bound.
llvm::PointerUnion<TypeVariableType *, TypeBase *> ParentOrFixed;
@@ -191,12 +191,12 @@
friend class constraints::SavedTypeVariableBinding;
public:
- /// \brief Retrieve the type variable associated with this implementation.
+ /// Retrieve the type variable associated with this implementation.
TypeVariableType *getTypeVariable() {
return reinterpret_cast<TypeVariableType *>(this) - 1;
}
- /// \brief Retrieve the type variable associated with this implementation.
+ /// Retrieve the type variable associated with this implementation.
const TypeVariableType *getTypeVariable() const {
return reinterpret_cast<const TypeVariableType *>(this) - 1;
}
@@ -207,7 +207,7 @@
getTypeVariable()->Bits.TypeVariableType.Options = options;
}
- /// \brief Retrieve the unique ID corresponding to this type variable.
+ /// Retrieve the unique ID corresponding to this type variable.
unsigned getID() const { return getTypeVariable()->getID(); }
unsigned getRawOptions() const {
@@ -256,7 +256,7 @@
getTypeVariable()->Bits.TypeVariableType.GraphIndex = newIndex;
}
- /// \brief Check whether this type variable either has a representative that
+ /// Check whether this type variable either has a representative that
/// is not itself or has a fixed type binding.
bool hasRepresentativeOrFixed() const {
// If we have a fixed type, we're done.
@@ -268,21 +268,21 @@
return ParentOrFixed.get<TypeVariableType *>() != getTypeVariable();
}
- /// \brief Record the current type-variable binding.
+ /// Record the current type-variable binding.
void recordBinding(constraints::SavedTypeVariableBindings &record) {
record.push_back(constraints::SavedTypeVariableBinding(getTypeVariable()));
}
- /// \brief Retrieve the locator describing where this type variable was
+ /// Retrieve the locator describing where this type variable was
/// created.
constraints::ConstraintLocator *getLocator() const {
return locator;
}
- /// \brief Retrieve the generic parameter opened by this type variable.
+ /// Retrieve the generic parameter opened by this type variable.
GenericTypeParamType *getGenericParameter() const;
- /// \brief Retrieve the representative of the equivalence class to which this
+ /// Retrieve the representative of the equivalence class to which this
/// type variable belongs.
///
/// \param record The record of changes made by retrieving the representative,
@@ -324,7 +324,7 @@
return result;
}
- /// \brief Merge the equivalence class of this type variable with the
+ /// Merge the equivalence class of this type variable with the
/// equivalence class of another type variable.
///
/// \param other The type variable to merge with.
@@ -351,7 +351,7 @@
}
}
- /// \brief Retrieve the fixed type that corresponds to this type variable,
+ /// Retrieve the fixed type that corresponds to this type variable,
/// if there is one.
///
/// \returns the fixed type associated with this type variable, or a null
@@ -369,7 +369,7 @@
return repImpl.ParentOrFixed.dyn_cast<TypeBase *>();
}
- /// \brief Assign a fixed type to this equivalence class.
+ /// Assign a fixed type to this equivalence class.
void assignFixedType(Type type,
constraints::SavedTypeVariableBindings *record) {
assert((!getFixedType(0) || getFixedType(0)->isEqual(type)) &&
@@ -392,7 +392,7 @@
}
}
- /// \brief Print the type variable to the given output stream.
+ /// Print the type variable to the given output stream.
void print(llvm::raw_ostream &OS);
};
@@ -400,18 +400,18 @@
struct ResolvedOverloadSetListItem;
-/// \brief The result of comparing two constraint systems that are a solutions
+/// The result of comparing two constraint systems that are a solutions
/// to the given set of constraints.
enum class SolutionCompareResult {
- /// \brief The two solutions are incomparable, because, e.g., because one
+ /// The two solutions are incomparable, because, e.g., because one
/// solution has some better decisions and some worse decisions than the
/// other.
Incomparable,
- /// \brief The two solutions are identical.
+ /// The two solutions are identical.
Identical,
- /// \brief The first solution is better than the second.
+ /// The first solution is better than the second.
Better,
- /// \brief The second solution is better than the first.
+ /// The second solution is better than the first.
Worse
};
@@ -549,21 +549,21 @@
using OpenedTypeMap =
llvm::DenseMap<GenericTypeParamType *, TypeVariableType *>;
-/// \brief A complete solution to a constraint system.
+/// A complete solution to a constraint system.
///
/// A solution to a constraint system consists of type variable bindings to
/// concrete types for every type variable that is used in the constraint
/// system along with a set of mappings from each constraint locator
/// involving an overload set to the selected overload.
class Solution {
- /// \brief The constraint system this solution solves.
+ /// The constraint system this solution solves.
ConstraintSystem *constraintSystem;
- /// \brief The fixed score for this solution.
+ /// The fixed score for this solution.
Score FixedScore;
public:
- /// \brief Create a solution for the given constraint system.
+ /// Create a solution for the given constraint system.
Solution(ConstraintSystem &cs, const Score &score)
: constraintSystem(&cs), FixedScore(score) {}
@@ -576,13 +576,13 @@
size_t getTotalMemory() const;
- /// \brief Retrieve the constraint system that this solution solves.
+ /// Retrieve the constraint system that this solution solves.
ConstraintSystem &getConstraintSystem() const { return *constraintSystem; }
- /// \brief The set of type bindings.
+ /// The set of type bindings.
llvm::SmallDenseMap<TypeVariableType *, Type> typeBindings;
- /// \brief The set of overload choices along with their types.
+ /// The set of overload choices along with their types.
llvm::SmallDenseMap<ConstraintLocator *, SelectedOverload> overloadChoices;
/// The set of constraint restrictions used to arrive at this restriction,
@@ -611,11 +611,11 @@
llvm::SmallVector<std::pair<ConstraintLocator *, ProtocolConformanceRef>, 8>
Conformances;
- /// \brief Simplify the given type by substituting all occurrences of
+ /// Simplify the given type by substituting all occurrences of
/// type variables for their fixed types.
Type simplifyType(Type type) const;
- /// \brief Coerce the given expression to the given type.
+ /// Coerce the given expression to the given type.
///
/// This operation cannot fail.
///
@@ -636,7 +636,7 @@
bool ignoreTopLevelInjection = false,
Optional<Pattern*> typeFromPattern = None) const;
- /// \brief Convert the given expression to a logic value.
+ /// Convert the given expression to a logic value.
///
/// This operation cannot fail.
///
@@ -649,7 +649,7 @@
Expr *convertBooleanTypeToBuiltinI1(Expr *expr,
ConstraintLocator *locator) const;
- /// \brief Convert the given optional-producing expression to a Bool
+ /// Convert the given optional-producing expression to a Bool
/// indicating whether the optional has a value.
///
/// This operation cannot fail.
@@ -679,26 +679,26 @@
return DisjunctionChoices.find(locator)->second;
}
- /// \brief Retrieve the fixed score of this solution
+ /// Retrieve the fixed score of this solution
const Score &getFixedScore() const { return FixedScore; }
- /// \brief Retrieve the fixed score of this solution
+ /// Retrieve the fixed score of this solution
Score &getFixedScore() { return FixedScore; }
- /// \brief Retrieve the fixed type for the given type variable.
+ /// Retrieve the fixed type for the given type variable.
Type getFixedType(TypeVariableType *typeVar) const;
/// Try to resolve the given locator to a declaration within this
/// solution.
ConcreteDeclRef resolveLocatorToDecl(ConstraintLocator *locator) const;
- /// \brief Retrieve the overload choice associated with the given
+ /// Retrieve the overload choice associated with the given
/// locator.
SelectedOverload getOverloadChoice(ConstraintLocator *locator) const {
return *getOverloadChoiceIfAvailable(locator);
}
- /// \brief Retrieve the overload choice associated with the given
+ /// Retrieve the overload choice associated with the given
/// locator.
Optional<SelectedOverload>
getOverloadChoiceIfAvailable(ConstraintLocator *locator) const {
@@ -722,41 +722,41 @@
void dump() const LLVM_ATTRIBUTE_USED,
"only for use within the debugger");
- /// \brief Dump this solution.
+ /// Dump this solution.
void dump(raw_ostream &OS) const LLVM_ATTRIBUTE_USED;
};
-/// \brief Describes the differences between several solutions to the same
+/// Describes the differences between several solutions to the same
/// constraint system.
class SolutionDiff {
public:
- /// \brief A difference between two overloads.
+ /// A difference between two overloads.
struct OverloadDiff {
- /// \brief The locator that describes where the overload comes from.
+ /// The locator that describes where the overload comes from.
ConstraintLocator *locator;
- /// \brief The choices that each solution made.
+ /// The choices that each solution made.
SmallVector<OverloadChoice, 2> choices;
};
- /// \brief A difference between two type variable bindings.
+ /// A difference between two type variable bindings.
struct TypeBindingDiff {
- /// \brief The type variable.
+ /// The type variable.
TypeVariableType *typeVar;
- /// \brief The bindings that each solution made.
+ /// The bindings that each solution made.
SmallVector<Type, 2> bindings;
};
- /// \brief The differences between the overload choices between the
+ /// The differences between the overload choices between the
/// solutions.
SmallVector<OverloadDiff, 4> overloads;
- /// \brief The differences between the type variable bindings of the
+ /// The differences between the type variable bindings of the
/// solutions.
SmallVector<TypeBindingDiff, 4> typeBindings;
- /// \brief Compute the differences between the given set of solutions.
+ /// Compute the differences between the given set of solutions.
///
/// \param solutions The set of solutions.
explicit SolutionDiff(ArrayRef<Solution> solutions);
@@ -911,7 +911,7 @@
};
-/// \brief Stores the required methods for @dynamicCallable types.
+/// Stores the required methods for @dynamicCallable types.
struct DynamicCallableMethods {
llvm::DenseSet<FuncDecl *> argumentsMethods;
llvm::DenseSet<FuncDecl *> keywordArgumentsMethods;
@@ -924,7 +924,7 @@
keywordArgumentsMethods.insert(method);
}
- /// \brief Returns true if type defines either of the @dynamicCallable
+ /// Returns true if type defines either of the @dynamicCallable
/// required methods. Returns false iff type does not satisfy @dynamicCallable
/// requirements.
bool isValid() const {
@@ -932,7 +932,7 @@
}
};
-/// \brief Describes a system of constraints on type variables, the
+/// Describes a system of constraints on type variables, the
/// solution of which assigns concrete types to each of the type variables.
/// Constraint systems are typically generated given an (untyped) expression.
class ConstraintSystem {
@@ -967,22 +967,22 @@
/// The original CS if this CS was created as a simplification of another CS
ConstraintSystem *baseCS = nullptr;
- /// \brief The total number of disjunctions created.
+ /// The total number of disjunctions created.
unsigned CountDisjunctions = 0;
private:
- /// \brief Allocator used for all of the related constraint systems.
+ /// Allocator used for all of the related constraint systems.
llvm::BumpPtrAllocator Allocator;
- /// \brief Arena used for memory management of constraint-checker-related
+ /// Arena used for memory management of constraint-checker-related
/// allocations.
ConstraintCheckerArenaRAII Arena;
- /// \brief Counter for type variables introduced.
+ /// Counter for type variables introduced.
unsigned TypeCounter = 0;
- /// \brief The number of scopes created so far during the solution
+ /// The number of scopes created so far during the solution
/// of this constraint system.
///
/// This is a measure of complexity of the solution space. A new
@@ -994,7 +994,7 @@
/// explored.
size_t MaxMemory = 0;
- /// \brief Cached member lookups.
+ /// Cached member lookups.
llvm::DenseMap<std::pair<Type, DeclName>, Optional<LookupResult>>
MemberLookups;
@@ -1002,11 +1002,11 @@
static const unsigned NumAlternativeLiteralTypes = 13;
Optional<ArrayRef<Type>> AlternativeLiteralTypes[NumAlternativeLiteralTypes];
- /// \brief Folding set containing all of the locators used in this
+ /// Folding set containing all of the locators used in this
/// constraint system.
llvm::FoldingSetVector<ConstraintLocator> ConstraintLocators;
- /// \brief The overload sets that have been resolved along the current path.
+ /// The overload sets that have been resolved along the current path.
ResolvedOverloadSetListItem *resolvedOverloadSets = nullptr;
/// The current fixed score for this constraint system and the (partial)
@@ -1039,7 +1039,7 @@
Expr *contextualTypeNode = nullptr;
ContextualTypePurpose contextualTypePurpose = CTP_Unused;
- /// \brief The set of constraint restrictions used to reach the
+ /// The set of constraint restrictions used to reach the
/// current constraint system.
///
/// Constraint restrictions help describe which path the solver took when
@@ -1052,7 +1052,7 @@
/// The set of fixes applied to make the solution work.
llvm::SmallVector<ConstraintFix *, 4> Fixes;
- /// \brief The set of remembered disjunction choices used to reach
+ /// The set of remembered disjunction choices used to reach
/// the current constraint system.
SmallVector<std::pair<ConstraintLocator*, unsigned>, 32>
DisjunctionChoices;
@@ -1093,7 +1093,7 @@
llvm::DenseMap<CanType, bool> DynamicMemberLookupCache;
private:
- /// \brief Describe the candidate expression for partial solving.
+ /// Describe the candidate expression for partial solving.
/// This class used by shrink & solve methods which apply
/// variation of directional path consistency algorithm in attempt
/// to reduce scopes of the overload sets (disjunctions) in the system.
@@ -1115,10 +1115,10 @@
: E(expr), TC(cs.TC), DC(cs.DC), Allocator(cs.Allocator), BaseCS(cs),
CT(ct), CTP(ctp) {}
- /// \brief Return underlying expression.
+ /// Return underlying expression.
Expr *getExpr() const { return E; }
- /// \brief Try to solve this candidate sub-expression
+ /// Try to solve this candidate sub-expression
/// and re-write it's OSR domains afterwards.
///
/// \param shrunkExprs The set of expressions which
@@ -1127,7 +1127,7 @@
/// \returns true on solver failure, false otherwise.
bool solve(llvm::SmallDenseSet<OverloadSetRefExpr *> &shrunkExprs);
- /// \brief Apply solutions found by solver as reduced OSR sets for
+ /// Apply solutions found by solver as reduced OSR sets for
/// for current and all of it's sub-expressions.
///
/// \param solutions The solutions found by running solver on the
@@ -1169,7 +1169,7 @@
}
};
- /// \brief Describes the current solver state.
+ /// Describes the current solver state.
struct SolverState {
SolverState(Expr *const expr, ConstraintSystem &cs,
FreeTypeVariableBinding allowFreeTypeVariables);
@@ -1187,16 +1187,16 @@
/// system itself.
bool OldDebugConstraintSolver;
- /// \brief Depth of the solution stack.
+ /// Depth of the solution stack.
unsigned depth = 0;
- /// \brief Maximum depth reached so far in exploring solutions.
+ /// Maximum depth reached so far in exploring solutions.
unsigned maxDepth = 0;
- /// \brief Whether to record failures or not.
+ /// Whether to record failures or not.
bool recordFixes = false;
- /// \brief The set of type variable bindings that have changed while
+ /// The set of type variable bindings that have changed while
/// processing this constraint system.
SavedTypeVariableBindings savedBindings;
@@ -1213,19 +1213,19 @@
#define CS_STATISTIC(Name, Description) unsigned Name = 0;
#include "ConstraintSolverStats.def"
- /// \brief Check whether there are any retired constraints present.
+ /// Check whether there are any retired constraints present.
bool hasRetiredConstraints() const {
return !retiredConstraints.empty();
}
- /// \brief Mark given constraint as retired along current solver path.
+ /// Mark given constraint as retired along current solver path.
///
/// \param constraint The constraint to retire temporarily.
void retireConstraint(Constraint *constraint) {
retiredConstraints.push_front(constraint);
}
- /// \brief Iterate over all of the retired constraints registered with
+ /// Iterate over all of the retired constraints registered with
/// current solver state.
///
/// \param processor The processor function to be applied to each of
@@ -1235,14 +1235,14 @@
processor(constraint);
}
- /// \brief Add new "generated" constraint along the current solver path.
+ /// Add new "generated" constraint along the current solver path.
///
/// \param constraint The newly generated constraint.
void addGeneratedConstraint(Constraint *constraint) {
generatedConstraints.push_back(constraint);
}
- /// \brief Erase given constraint from the list of generated constraints
+ /// Erase given constraint from the list of generated constraints
/// along the current solver path. Note that this operation doesn't
/// guarantee any ordering of the after it's application.
///
@@ -1260,7 +1260,7 @@
}
}
- /// \brief Register given scope to be tracked by the current solver state,
+ /// Register given scope to be tracked by the current solver state,
/// this helps to make sure that all of the retired/generated constraints
/// are dealt with correctly when the life time of the scope ends.
///
@@ -1277,7 +1277,7 @@
scopes.push_back(scopeInfo);
}
- /// \brief Restore all of the retired/generated constraints to the state
+ /// Restore all of the retired/generated constraints to the state
/// before given scope. This is required because retired constraints have
/// to be re-introduced to the system in order of arrival (LIFO) and list
/// of the generated constraints has to be truncated back to the
@@ -1366,12 +1366,12 @@
return expr;
}
- /// \brief Ignore statements.
+ /// Ignore statements.
std::pair<bool, Stmt *> walkToStmtPre(Stmt *stmt) override {
return { false, stmt };
}
- /// \brief Ignore declarations.
+ /// Ignore declarations.
bool walkToDeclPre(Decl *decl) override { return false; }
};
@@ -1397,12 +1397,12 @@
return expr;
}
- /// \brief Ignore statements.
+ /// Ignore statements.
std::pair<bool, Stmt *> walkToStmtPre(Stmt *stmt) override {
return { false, stmt };
}
- /// \brief Ignore declarations.
+ /// Ignore declarations.
bool walkToDeclPre(Decl *decl) override { return false; }
};
@@ -1431,7 +1431,7 @@
expr->walk(CacheExprTypes(expr, *this, excludeRoot));
}
- /// \brief The current solver state.
+ /// The current solver state.
///
/// This will be non-null when we're actively solving the constraint
/// system, and carries temporary state related to the current path
@@ -1462,7 +1462,7 @@
void incrementLeafScopes();
public:
- /// \brief Introduces a new solver scope, which any changes to the
+ /// Introduces a new solver scope, which any changes to the
/// solver state or constraint system are temporary and will be undone when
/// this object is destroyed.
///
@@ -1470,22 +1470,22 @@
class SolverScope {
ConstraintSystem &cs;
- /// \brief The current resolved overload set list.
+ /// The current resolved overload set list.
ResolvedOverloadSetListItem *resolvedOverloadSets;
- /// \brief The length of \c TypeVariables.
+ /// The length of \c TypeVariables.
unsigned numTypeVariables;
- /// \brief The length of \c SavedBindings.
+ /// The length of \c SavedBindings.
unsigned numSavedBindings;
- /// \brief The length of \c ConstraintRestrictions.
+ /// The length of \c ConstraintRestrictions.
unsigned numConstraintRestrictions;
- /// \brief The length of \c Fixes.
+ /// The length of \c Fixes.
unsigned numFixes;
- /// \brief The length of \c DisjunctionChoices.
+ /// The length of \c DisjunctionChoices.
unsigned numDisjunctionChoices;
/// The length of \c OpenedTypes.
@@ -1528,28 +1528,28 @@
/// Retrieve the constraint graph associated with this constraint system.
ConstraintGraph &getConstraintGraph() const { return CG; }
- /// \brief Retrieve the AST context.
+ /// Retrieve the AST context.
ASTContext &getASTContext() const { return TC.Context; }
- /// \brief Determine whether this constraint system has any free type
+ /// Determine whether this constraint system has any free type
/// variables.
bool hasFreeTypeVariables();
private:
- /// \brief Indicates if the constraint system should retain all of the
+ /// Indicates if the constraint system should retain all of the
/// solutions it has deduced regardless of their score.
bool retainAllSolutions() const {
return Options.contains(
ConstraintSystemFlags::ReturnAllDiscoveredSolutions);
}
- /// \brief Finalize this constraint system; we're done attempting to solve
+ /// Finalize this constraint system; we're done attempting to solve
/// it.
///
/// \returns the solution.
Solution finalize();
- /// \brief Apply the given solution to the current constraint system.
+ /// Apply the given solution to the current constraint system.
///
/// This operation is used to take a solution computed based on some
/// subset of the constraints and then apply it back to the
@@ -1560,7 +1560,7 @@
/// able to emit an error message, or false if none of the fixits worked out.
bool applySolutionFixes(Expr *E, const Solution &solution);
- /// \brief If there is more than one viable solution,
+ /// If there is more than one viable solution,
/// attempt to pick the best solution and remove all of the rest.
///
/// \param solutions The set of solutions to filter.
@@ -1582,14 +1582,14 @@
}
}
- /// \brief Restore the type variable bindings to what they were before
+ /// Restore the type variable bindings to what they were before
/// we attempted to solve this constraint system.
///
/// \param numBindings The number of bindings to restore, from the end of
/// the saved-binding stack.
void restoreTypeVariableBindings(unsigned numBindings);
- /// \brief Retrieve the set of saved type variable bindings, if available.
+ /// Retrieve the set of saved type variable bindings, if available.
///
/// \returns null when we aren't currently solving the system.
SavedTypeVariableBindings *getSavedBindings() const {
@@ -1599,12 +1599,12 @@
/// Add a new type variable that was already created.
void addTypeVariable(TypeVariableType *typeVar);
- /// \brief Add a constraint from the subscript base to the root of the key
+ /// Add a constraint from the subscript base to the root of the key
/// path literal to the constraint system.
void addKeyPathApplicationRootConstraint(Type root, ConstraintLocatorBuilder locator);
public:
- /// \brief Lookup for a member with the given name in the given base type.
+ /// Lookup for a member with the given name in the given base type.
///
/// This routine caches the results of member lookups in the top constraint
/// system, to avoid.
@@ -1620,7 +1620,7 @@
/// for a given literal protocol kind.
ArrayRef<Type> getAlternativeLiteralTypes(KnownProtocolKind kind);
- /// \brief Create a new type variable.
+ /// Create a new type variable.
TypeVariableType *createTypeVariable(ConstraintLocator *locator,
unsigned options = 0);
@@ -1746,20 +1746,20 @@
return contextualTypePurpose;
}
- /// \brief Retrieve the constraint locator for the given anchor and
+ /// Retrieve the constraint locator for the given anchor and
/// path, uniqued.
ConstraintLocator *
getConstraintLocator(Expr *anchor,
ArrayRef<ConstraintLocator::PathElement> path,
unsigned summaryFlags);
- /// \brief Retrieve the constraint locator for the given anchor and
+ /// Retrieve the constraint locator for the given anchor and
/// an empty path, uniqued.
ConstraintLocator *getConstraintLocator(Expr *anchor) {
return getConstraintLocator(anchor, {}, 0);
}
- /// \brief Retrieve the constraint locator for the given anchor and
+ /// Retrieve the constraint locator for the given anchor and
/// path element.
ConstraintLocator *
getConstraintLocator(Expr *anchor, ConstraintLocator::PathElement pathElt) {
@@ -1767,7 +1767,7 @@
pathElt.getNewSummaryFlags());
}
- /// \brief Extend the given constraint locator with a path element.
+ /// Extend the given constraint locator with a path element.
ConstraintLocator *
getConstraintLocator(ConstraintLocator *locator,
ConstraintLocator::PathElement pathElt) {
@@ -1775,14 +1775,14 @@
.withPathElement(pathElt));
}
- /// \brief Retrieve the constraint locator described by the given
+ /// Retrieve the constraint locator described by the given
/// builder.
ConstraintLocator *
getConstraintLocator(const ConstraintLocatorBuilder &builder);
public:
- /// \brief Whether we should attempt to fix problems.
+ /// Whether we should attempt to fix problems.
bool shouldAttemptFixes() const {
if (!(Options & ConstraintSystemFlags::AllowFixes))
return false;
@@ -1798,7 +1798,7 @@
return Options.contains(ConstraintSystemFlags::ReusePrecheckedType);
}
- /// \brief Log and record the application of the fix. Return true iff any
+ /// Log and record the application of the fix. Return true iff any
/// subsequent solution would be worse than the best known solution.
bool recordFix(ConstraintFix *fix);
@@ -1806,7 +1806,7 @@
/// constraint system, return the decl that it references.
ValueDecl *findResolvedMemberRef(ConstraintLocator *locator);
- /// \brief Try to salvage the constraint system by applying (speculative)
+ /// Try to salvage the constraint system by applying (speculative)
/// fixes to the underlying expression.
///
/// \param viable the set of viable solutions produced by the initial
@@ -1819,7 +1819,7 @@
/// diagnostic and returns true.
bool salvage(SmallVectorImpl<Solution> &viable, Expr *expr);
- /// \brief Mine the active and inactive constraints in the constraint
+ /// Mine the active and inactive constraints in the constraint
/// system to generate a plausible diagnosis of why the system could not be
/// solved.
///
@@ -1833,28 +1833,28 @@
bool diagnoseAmbiguity(Expr *expr, ArrayRef<Solution> solutions);
bool diagnoseAmbiguityWithFixes(Expr *expr, ArrayRef<Solution> solutions);
- /// \brief Give the deprecation warning for referring to a global function
+ /// Give the deprecation warning for referring to a global function
/// when there's a method from a conditional conformance in a smaller/closer
/// scope.
void
diagnoseDeprecatedConditionalConformanceOuterAccess(UnresolvedDotExpr *UDE,
ValueDecl *choice);
- /// \brief Add a constraint to the constraint system.
+ /// Add a constraint to the constraint system.
void addConstraint(ConstraintKind kind, Type first, Type second,
ConstraintLocatorBuilder locator,
bool isFavored = false);
- /// \brief Add a requirement as a constraint to the constraint system.
+ /// Add a requirement as a constraint to the constraint system.
void addConstraint(Requirement req, ConstraintLocatorBuilder locator,
bool isFavored = false);
- /// \brief Add a key path application constraint to the constraint system.
+ /// Add a key path application constraint to the constraint system.
void addKeyPathApplicationConstraint(Type keypath, Type root, Type value,
ConstraintLocatorBuilder locator,
bool isFavored = false);
- /// \brief Add a key path constraint to the constraint system.
+ /// Add a key path constraint to the constraint system.
void addKeyPathConstraint(Type keypath, Type root, Type value,
ConstraintLocatorBuilder locator,
bool isFavored = false);
@@ -1872,7 +1872,7 @@
resolveOverload(locator, boundTy, choice, useDC);
}
- /// \brief Add a value member constraint to the constraint system.
+ /// Add a value member constraint to the constraint system.
void addValueMemberConstraint(Type baseTy, DeclName name, Type memberTy,
DeclContext *useDC,
FunctionRefKind functionRefKind,
@@ -1901,7 +1901,7 @@
}
}
- /// \brief Add a value member constraint for an UnresolvedMemberRef
+ /// Add a value member constraint for an UnresolvedMemberRef
/// to the constraint system.
void addUnresolvedValueMemberConstraint(Type baseTy, DeclName name,
Type memberTy, DeclContext *useDC,
@@ -1939,7 +1939,7 @@
bool allowFixes,
ConstraintLocatorBuilder locator);
- /// \brief Add a disjunction constraint.
+ /// Add a disjunction constraint.
void addDisjunctionConstraint(ArrayRef<Constraint *> constraints,
ConstraintLocatorBuilder locator,
RememberChoice_t rememberChoice = ForgetChoice,
@@ -1973,7 +1973,7 @@
}
}
- /// \brief Add a newly-generated constraint that is known not to be solvable
+ /// Add a newly-generated constraint that is known not to be solvable
/// right now.
void addUnsolvedConstraint(Constraint *constraint) {
// We couldn't solve this constraint; add it to the pile.
@@ -1987,7 +1987,7 @@
solverState->addGeneratedConstraint(constraint);
}
- /// \brief Remove an inactive constraint from the current constraint graph.
+ /// Remove an inactive constraint from the current constraint graph.
void removeInactiveConstraint(Constraint *constraint) {
CG.removeConstraint(constraint);
InactiveConstraints.erase(constraint);
@@ -2009,13 +2009,13 @@
filterConstraints(InactiveConstraints, pred, found);
}
- /// \brief Retrieve the representative of the equivalence class containing
+ /// Retrieve the representative of the equivalence class containing
/// this type variable.
TypeVariableType *getRepresentative(TypeVariableType *typeVar) {
return typeVar->getImpl().getRepresentative(getSavedBindings());
}
- /// \brief Merge the equivalence sets of the two type variables.
+ /// Merge the equivalence sets of the two type variables.
///
/// Note that both \c typeVar1 and \c typeVar2 must be the
/// representatives of their equivalence classes, and must be
@@ -2024,9 +2024,9 @@
TypeVariableType *typeVar2,
bool updateWorkList = true);
- /// \brief Flags that direct type matching.
+ /// Flags that direct type matching.
enum TypeMatchFlags {
- /// \brief Indicates that we are in a context where we should be
+ /// Indicates that we are in a context where we should be
/// generating constraints for any unsolvable problems.
///
/// This flag is automatically introduced when type matching destructures
@@ -2041,7 +2041,7 @@
/// Options that govern how type matching should proceed.
using TypeMatchOptions = OptionSet<TypeMatchFlags>;
- /// \brief Retrieve the fixed type corresponding to the given type variable,
+ /// Retrieve the fixed type corresponding to the given type variable,
/// or a null type if there is no fixed type.
Type getFixedType(TypeVariableType *typeVar) {
return typeVar->getImpl().getFixedType(getSavedBindings());
@@ -2084,7 +2084,7 @@
static bool typeVarOccursInType(TypeVariableType *typeVar, Type type,
bool *involvesOtherTypeVariables = nullptr);
- /// \brief Assign a fixed type to the given type variable.
+ /// Assign a fixed type to the given type variable.
///
/// \param typeVar The type variable to bind.
///
@@ -2096,7 +2096,7 @@
void assignFixedType(TypeVariableType *typeVar, Type type,
bool updateState = true);
- /// \brief Set the TVO_MustBeMaterializable bit on all type variables
+ /// Set the TVO_MustBeMaterializable bit on all type variables
/// necessary to ensure that the type in question is materializable in a
/// viable solution.
void setMustBeMaterializableRecursive(Type type);
@@ -2116,7 +2116,7 @@
/// Determine if the type in question is one of the known collection types.
static bool isCollectionType(Type t);
- /// \brief Determine if the type in question is AnyHashable.
+ /// Determine if the type in question is AnyHashable.
bool isAnyHashableType(Type t);
/// Call Expr::isTypeReference on the given expression, using a
@@ -2157,10 +2157,10 @@
public:
- /// \brief Coerce the given expression to an rvalue, if it isn't already.
+ /// Coerce the given expression to an rvalue, if it isn't already.
Expr *coerceToRValue(Expr *expr);
- /// \brief "Open" the given unbound type by introducing fresh type
+ /// "Open" the given unbound type by introducing fresh type
/// variables for generic parameters and constructing a bound generic
/// type from these type variables.
///
@@ -2171,7 +2171,7 @@
ConstraintLocatorBuilder locator,
OpenedTypeMap &replacements);
- /// \brief "Open" the given type by replacing any occurrences of unbound
+ /// "Open" the given type by replacing any occurrences of unbound
/// generic types with bound generic types with fresh type variables as
/// generic arguments.
///
@@ -2180,7 +2180,7 @@
/// \returns The opened type.
Type openUnboundGenericType(Type type, ConstraintLocatorBuilder locator);
- /// \brief "Open" the given type by replacing any occurrences of generic
+ /// "Open" the given type by replacing any occurrences of generic
/// parameter types and dependent member types with fresh type variables.
///
/// \param type The type to open.
@@ -2188,7 +2188,7 @@
/// \returns The opened type, or \c type if there are no archetypes in it.
Type openType(Type type, OpenedTypeMap &replacements);
- /// \brief "Open" the given function type.
+ /// "Open" the given function type.
///
/// If the function type is non-generic, this is equivalent to calling
/// openType(). Otherwise, it calls openGeneric() on the generic
@@ -2239,7 +2239,7 @@
ConstraintLocatorBuilder locator,
const OpenedTypeMap &replacements);
- /// \brief Retrieve the type of a reference to the given value declaration.
+ /// Retrieve the type of a reference to the given value declaration.
///
/// For references to polymorphic function types, this routine "opens up"
/// the type by replacing each instance of an archetype with a fresh type
@@ -2272,7 +2272,7 @@
const DeclRefExpr *base = nullptr,
bool wantInterfaceType = false);
- /// \brief Retrieve the type of a reference to the given value declaration,
+ /// Retrieve the type of a reference to the given value declaration,
/// as a member with a base of the given type.
///
/// For references to generic function types or members of generic types,
@@ -2292,14 +2292,14 @@
const DeclRefExpr *base = nullptr,
OpenedTypeMap *replacements = nullptr);
- /// \brief Add a new overload set to the list of unresolved overload
+ /// Add a new overload set to the list of unresolved overload
/// sets.
void addOverloadSet(Type boundType, ArrayRef<OverloadChoice> choices,
DeclContext *useDC, ConstraintLocator *locator,
OverloadChoice *favored = nullptr,
ArrayRef<OverloadChoice> outerAlternatives = {});
- /// \brief Retrieve the allocator used by this constraint system.
+ /// Retrieve the allocator used by this constraint system.
llvm::BumpPtrAllocator &getAllocator() { return Allocator; }
template <typename It>
@@ -2323,33 +2323,33 @@
return allocateCopy(vec.begin(), vec.end());
}
- /// \brief Generate constraints for the given (unchecked) expression.
+ /// Generate constraints for the given (unchecked) expression.
///
/// \returns a possibly-sanitized expression, or null if an error occurred.
Expr *generateConstraints(Expr *E);
- /// \brief Generate constraints for binding the given pattern to the
+ /// Generate constraints for binding the given pattern to the
/// value of the given expression.
///
/// \returns a possibly-sanitized initializer, or null if an error occurred.
Type generateConstraints(Pattern *P, ConstraintLocatorBuilder locator);
- /// \brief Propagate constraints in an effort to enforce local
+ /// Propagate constraints in an effort to enforce local
/// consistency to reduce the time to solve the system.
///
/// \returns true if the system is known to be inconsistent (have no
/// solutions).
bool propagateConstraints();
- /// \brief The result of attempting to resolve a constraint or set of
+ /// The result of attempting to resolve a constraint or set of
/// constraints.
enum class SolutionKind : char {
- /// \brief The constraint has been solved completely, and provides no
+ /// The constraint has been solved completely, and provides no
/// more information.
Solved,
- /// \brief The constraint could not be solved at this point.
+ /// The constraint could not be solved at this point.
Unsolved,
- /// \brief The constraint uncovers an inconsistency in the system.
+ /// The constraint uncovers an inconsistency in the system.
Error
};
@@ -2379,14 +2379,14 @@
TypeMatchResult(SolutionKind result) : Kind(result) {}
};
- /// \brief Subroutine of \c matchTypes(), which matches up two tuple types.
+ /// Subroutine of \c matchTypes(), which matches up two tuple types.
///
/// \returns the result of performing the tuple-to-tuple conversion.
TypeMatchResult matchTupleTypes(TupleType *tuple1, TupleType *tuple2,
ConstraintKind kind, TypeMatchOptions flags,
ConstraintLocatorBuilder locator);
- /// \brief Subroutine of \c matchTypes(), which matches a scalar type to
+ /// Subroutine of \c matchTypes(), which matches a scalar type to
/// a tuple type.
///
/// \returns the result of performing the scalar-to-tuple conversion.
@@ -2395,24 +2395,24 @@
TypeMatchOptions flags,
ConstraintLocatorBuilder locator);
- /// \brief Subroutine of \c matchTypes(), which matches up two function
+ /// Subroutine of \c matchTypes(), which matches up two function
/// types.
TypeMatchResult matchFunctionTypes(FunctionType *func1, FunctionType *func2,
ConstraintKind kind, TypeMatchOptions flags,
ConstraintLocatorBuilder locator);
- /// \brief Subroutine of \c matchTypes(), which matches up a value to a
+ /// Subroutine of \c matchTypes(), which matches up a value to a
/// superclass.
TypeMatchResult matchSuperclassTypes(Type type1, Type type2,
TypeMatchOptions flags,
ConstraintLocatorBuilder locator);
- /// \brief Subroutine of \c matchTypes(), which matches up two types that
+ /// Subroutine of \c matchTypes(), which matches up two types that
/// refer to the same declaration via their generic arguments.
TypeMatchResult matchDeepEqualityTypes(Type type1, Type type2,
ConstraintLocatorBuilder locator);
- /// \brief Subroutine of \c matchTypes(), which matches up a value to an
+ /// Subroutine of \c matchTypes(), which matches up a value to an
/// existential type.
///
/// \param kind Either ConstraintKind::SelfObjectOfProtocol or
@@ -2424,7 +2424,7 @@
TypeMatchOptions flags,
ConstraintLocatorBuilder locator);
- /// \brief Subroutine of \c matchTypes(), used to bind a type to a
+ /// Subroutine of \c matchTypes(), used to bind a type to a
/// type variable.
TypeMatchResult matchTypesBindTypeVar(
TypeVariableType *typeVar, Type type, ConstraintKind kind,
@@ -2432,7 +2432,7 @@
llvm::function_ref<TypeMatchResult()> formUnsolvedResult);
public: // FIXME: public due to statics in CSSimplify.cpp
- /// \brief Attempt to match up types \c type1 and \c type2, which in effect
+ /// Attempt to match up types \c type1 and \c type2, which in effect
/// is solving the given type constraint between these two types.
///
/// \param type1 The first type, which is on the left of the type relation.
@@ -2554,18 +2554,18 @@
buildDisjunctionForOptionalVsUnderlying(boundTy, type, dynamicLocator);
}
- /// \brief Resolve the given overload set to the given choice.
+ /// Resolve the given overload set to the given choice.
void resolveOverload(ConstraintLocator *locator, Type boundType,
OverloadChoice choice, DeclContext *useDC);
- /// \brief Simplify a type, by replacing type variables with either their
+ /// Simplify a type, by replacing type variables with either their
/// fixed types (if available) or their representatives.
///
/// The resulting types can be compared canonically, so long as additional
/// type equivalence requirements aren't introduced between comparisons.
Type simplifyType(Type type);
- /// \brief Simplify a type, by replacing type variables with either their
+ /// Simplify a type, by replacing type variables with either their
/// fixed types (if available) or their representatives.
///
/// \param flags If the simplified type has changed, this will be updated
@@ -2595,7 +2595,7 @@
bool includeInaccessibleMembers);
private:
- /// \brief Attempt to simplify the given construction constraint.
+ /// Attempt to simplify the given construction constraint.
///
/// \param valueType The type being constructed.
///
@@ -2615,7 +2615,7 @@
FunctionRefKind functionRefKind,
ConstraintLocator *locator);
- /// \brief Attempt to simplify the given conformance constraint.
+ /// Attempt to simplify the given conformance constraint.
///
/// \param type The type being tested.
/// \param protocol The protocol to which the type should conform.
@@ -2627,7 +2627,7 @@
ConstraintLocatorBuilder locator,
TypeMatchOptions flags);
- /// \brief Attempt to simplify the given conformance constraint.
+ /// Attempt to simplify the given conformance constraint.
///
/// \param type The type being tested.
/// \param protocol The protocol or protocol composition type to which the
@@ -2647,65 +2647,65 @@
TypeMatchOptions flags,
ConstraintLocatorBuilder locator);
- /// \brief Attempt to simplify the given member constraint.
+ /// Attempt to simplify the given member constraint.
SolutionKind simplifyMemberConstraint(
ConstraintKind kind, Type baseType, DeclName member, Type memberType,
DeclContext *useDC, FunctionRefKind functionRefKind,
ArrayRef<OverloadChoice> outerAlternatives, TypeMatchOptions flags,
ConstraintLocatorBuilder locator);
- /// \brief Attempt to simplify the optional object constraint.
+ /// Attempt to simplify the optional object constraint.
SolutionKind simplifyOptionalObjectConstraint(
Type first, Type second,
TypeMatchOptions flags,
ConstraintLocatorBuilder locator);
- /// \brief Attempt to simplify a function input or result constraint.
+ /// Attempt to simplify a function input or result constraint.
SolutionKind simplifyFunctionComponentConstraint(
ConstraintKind kind,
Type first, Type second,
TypeMatchOptions flags,
ConstraintLocatorBuilder locator);
- /// \brief Attempt to simplify the BridgingConversion constraint.
+ /// Attempt to simplify the BridgingConversion constraint.
SolutionKind simplifyBridgingConstraint(Type type1,
Type type2,
TypeMatchOptions flags,
ConstraintLocatorBuilder locator);
- /// \brief Attempt to simplify the ApplicableFunction constraint.
+ /// Attempt to simplify the ApplicableFunction constraint.
SolutionKind simplifyApplicableFnConstraint(
Type type1,
Type type2,
TypeMatchOptions flags,
ConstraintLocatorBuilder locator);
- /// \brief Attempt to simplify the DynamicCallableApplicableFunction constraint.
+ /// Attempt to simplify the DynamicCallableApplicableFunction constraint.
SolutionKind simplifyDynamicCallableApplicableFnConstraint(
Type type1,
Type type2,
TypeMatchOptions flags,
ConstraintLocatorBuilder locator);
- /// \brief Attempt to simplify the given DynamicTypeOf constraint.
+ /// Attempt to simplify the given DynamicTypeOf constraint.
SolutionKind simplifyDynamicTypeOfConstraint(
Type type1, Type type2,
TypeMatchOptions flags,
ConstraintLocatorBuilder locator);
- /// \brief Attempt to simplify the given EscapableFunctionOf constraint.
+ /// Attempt to simplify the given EscapableFunctionOf constraint.
SolutionKind simplifyEscapableFunctionOfConstraint(
Type type1, Type type2,
TypeMatchOptions flags,
ConstraintLocatorBuilder locator);
- /// \brief Attempt to simplify the given OpenedExistentialOf constraint.
+ /// Attempt to simplify the given OpenedExistentialOf constraint.
SolutionKind simplifyOpenedExistentialOfConstraint(
Type type1, Type type2,
TypeMatchOptions flags,
ConstraintLocatorBuilder locator);
- /// \brief Attempt to simplify the given KeyPathApplication constraint.
+ /// Attempt to simplify the given KeyPathApplication constraint.
SolutionKind simplifyKeyPathApplicationConstraint(
Type keyPath,
Type root,
@@ -2713,19 +2713,19 @@
TypeMatchOptions flags,
ConstraintLocatorBuilder locator);
- /// \brief Attempt to simplify the given KeyPath constraint.
+ /// Attempt to simplify the given KeyPath constraint.
SolutionKind simplifyKeyPathConstraint(Type keyPath,
Type root,
Type value,
TypeMatchOptions flags,
ConstraintLocatorBuilder locator);
- /// \brief Attempt to simplify the given defaultable constraint.
+ /// Attempt to simplify the given defaultable constraint.
SolutionKind simplifyDefaultableConstraint(Type first, Type second,
TypeMatchOptions flags,
ConstraintLocatorBuilder locator);
- /// \brief Simplify a conversion constraint by applying the given
+ /// Simplify a conversion constraint by applying the given
/// reduction rule, which is known to apply at the outermost level.
SolutionKind simplifyRestrictedConstraintImpl(
ConversionRestrictionKind restriction,
@@ -2734,7 +2734,7 @@
TypeMatchOptions flags,
ConstraintLocatorBuilder locator);
- /// \brief Simplify a conversion constraint by applying the given
+ /// Simplify a conversion constraint by applying the given
/// reduction rule, which is known to apply at the outermost level.
SolutionKind simplifyRestrictedConstraint(
ConversionRestrictionKind restriction,
@@ -2744,14 +2744,14 @@
ConstraintLocatorBuilder locator);
public: // FIXME: Public for use by static functions.
- /// \brief Simplify a conversion constraint with a fix applied to it.
+ /// Simplify a conversion constraint with a fix applied to it.
SolutionKind simplifyFixConstraint(ConstraintFix *fix, Type type1, Type type2,
ConstraintKind matchKind,
TypeMatchOptions flags,
ConstraintLocatorBuilder locator);
public:
- /// \brief Simplify the system of constraints, by breaking down complex
+ /// Simplify the system of constraints, by breaking down complex
/// constraints into simpler constraints.
///
/// The result of simplification is a constraint system consisting of
@@ -2764,9 +2764,9 @@
/// \returns true if an error occurred, false otherwise.
bool simplify(bool ContinueAfterFailures = false);
- /// \brief Simplify the given constraint.
+ /// Simplify the given constraint.
SolutionKind simplifyConstraint(const Constraint &constraint);
- /// \brief Simplify the given disjunction choice.
+ /// Simplify the given disjunction choice.
void simplifyDisjunctionChoice(Constraint *choice);
private:
@@ -2916,7 +2916,7 @@
}
}
- /// \brief Add a potential binding to the list of bindings,
+ /// Add a potential binding to the list of bindings,
/// coalescing supertype bounds when we are able to compute the meet.
void addPotentialBinding(PotentialBinding binding,
bool allowJoinMeet = true);
@@ -2995,15 +2995,15 @@
PotentialBindings getPotentialBindings(TypeVariableType *typeVar);
private:
- /// \brief Add a constraint to the constraint system.
+ /// Add a constraint to the constraint system.
SolutionKind addConstraintImpl(ConstraintKind kind, Type first, Type second,
ConstraintLocatorBuilder locator,
bool isFavored);
- /// \brief Collect the current inactive disjunction constraints.
+ /// Collect the current inactive disjunction constraints.
void collectDisjunctions(SmallVectorImpl<Constraint *> &disjunctions);
- /// \brief Solve the system of constraints after it has already been
+ /// Solve the system of constraints after it has already been
/// simplified.
///
/// \param solutions The set of solutions to this system of constraints.
@@ -3011,7 +3011,7 @@
/// \returns true if an error occurred, false otherwise.
bool solveSimplified(SmallVectorImpl<Solution> &solutions);
- /// \brief Find reduced domains of disjunction constraints for given
+ /// Find reduced domains of disjunction constraints for given
/// expression, this is achieved to solving individual sub-expressions
/// and combining resolving types. Such algorithm is called directional
/// path consistency because it goes from children to parents for all
@@ -3020,7 +3020,7 @@
/// \param expr The expression to find reductions for.
void shrink(Expr *expr);
- /// \brief Pick a disjunction from the InactiveConstraints list.
+ /// Pick a disjunction from the InactiveConstraints list.
///
/// \returns The selected disjunction.
Constraint *selectDisjunction();
@@ -3037,7 +3037,7 @@
bool *foundConsistent);
bool areBindPairConsistent(Constraint *first, Constraint *second);
- /// \brief Solve the system of constraints generated from provided expression.
+ /// Solve the system of constraints generated from provided expression.
///
/// \param expr The expression to generate constraints from.
/// \param convertType The expected type of the expression.
@@ -3056,7 +3056,7 @@
= FreeTypeVariableBinding::Disallow);
public:
- /// \brief Solve the system of constraints generated from provided expression.
+ /// Solve the system of constraints generated from provided expression.
///
/// The expression should have already been pre-checked with
/// preCheckExpression().
@@ -3077,7 +3077,7 @@
FreeTypeVariableBinding allowFreeTypeVariables
= FreeTypeVariableBinding::Disallow);
- /// \brief Solve the system of constraints.
+ /// Solve the system of constraints.
///
/// \param solutions The set of solutions to this system of constraints.
///
@@ -3091,7 +3091,7 @@
FreeTypeVariableBinding allowFreeTypeVariables =
FreeTypeVariableBinding::Disallow);
- /// \brief Solve the system of constraints.
+ /// Solve the system of constraints.
///
/// \param allowFreeTypeVariables How to bind free type variables in
/// the solution.
@@ -3105,7 +3105,7 @@
bool allowFixes = false);
private:
- /// \brief Solve the system of constraints.
+ /// Solve the system of constraints.
///
/// This method responsible for running search/solver algorithm.
/// It doesn't filter solutions, that's the job of top-level `solve` methods.
@@ -3113,7 +3113,7 @@
/// \param solutions The set of solutions to this system of constraints.
void solve(SmallVectorImpl<Solution> &solutions);
- /// \brief Compare two solutions to the same set of constraints.
+ /// Compare two solutions to the same set of constraints.
///
/// \param cs The constraint system.
/// \param solutions All of the solutions to the system.
@@ -3135,7 +3135,7 @@
/// solution found so far.
bool worseThanBestSolution() const;
- /// \brief Given a set of viable solutions, find the best
+ /// Given a set of viable solutions, find the best
/// solution.
///
/// \param solutions The set of viable solutions to consider.
@@ -3152,7 +3152,7 @@
llvm::DenseMap<Expr *, unsigned> &weights,
bool minimize);
- /// \brief Apply a given solution to the expression, producing a fully
+ /// Apply a given solution to the expression, producing a fully
/// type-checked expression.
///
/// \param convertType the contextual type to which the
@@ -3165,12 +3165,12 @@
Type convertType, bool discardedExpr,
bool skipClosures);
- /// \brief Reorder the disjunctive clauses for a given expression to
+ /// Reorder the disjunctive clauses for a given expression to
/// increase the likelihood that a favored constraint will be successfully
/// resolved before any others.
void optimizeConstraints(Expr *e);
- /// \brief Determine if we've already explored too many paths in an
+ /// Determine if we've already explored too many paths in an
/// attempt to solve this expression.
bool isExpressionAlreadyTooComplex = false;
bool getExpressionTooComplex(SmallVectorImpl<Solution> const &solutions) {
@@ -3297,7 +3297,7 @@
void print(raw_ostream &out);
};
-/// \brief Compute the shuffle required to map from a given tuple type to
+/// Compute the shuffle required to map from a given tuple type to
/// another tuple type.
///
/// \param fromTuple The tuple type we're converting from, as represented by its
@@ -3513,7 +3513,7 @@
operator Constraint *() const { return Choice; }
private:
- /// \brief If associated disjunction is an explicit conversion,
+ /// If associated disjunction is an explicit conversion,
/// let's try to propagate its type early to prune search space.
void propagateConversionInfo(ConstraintSystem &cs) const;
@@ -3750,7 +3750,7 @@
}
};
-/// \brief Matches array of function parameters to candidate inputs,
+/// Matches array of function parameters to candidate inputs,
/// which can be anything suitable (e.g., parameters, arguments).
///
/// It claims inputs sequentially and tries to pair between an input
diff --git a/lib/Sema/MiscDiagnostics.cpp b/lib/Sema/MiscDiagnostics.cpp
index a7f46c2..54ccc6c 100644
--- a/lib/Sema/MiscDiagnostics.cpp
+++ b/lib/Sema/MiscDiagnostics.cpp
@@ -3078,7 +3078,7 @@
const_cast<Expr *>(E)->walk(Walker);
}
-/// \brief Diagnose trailing closure in statement-conditions.
+/// Diagnose trailing closure in statement-conditions.
///
/// Conditional statements, including 'for' or `switch` doesn't allow ambiguous
/// trailing closures in these conditions part. Even if the parser can recover
@@ -3969,7 +3969,7 @@
// High-level entry points.
//===----------------------------------------------------------------------===//
-/// \brief Emit diagnostics for syntactic restrictions on a given expression.
+/// Emit diagnostics for syntactic restrictions on a given expression.
void swift::performSyntacticExprDiagnostics(TypeChecker &TC, const Expr *E,
const DeclContext *DC,
bool isExprStmt) {
diff --git a/lib/Sema/MiscDiagnostics.h b/lib/Sema/MiscDiagnostics.h
index e0d53b6..358376b 100644
--- a/lib/Sema/MiscDiagnostics.h
+++ b/lib/Sema/MiscDiagnostics.h
@@ -34,12 +34,12 @@
class TypeChecker;
class ValueDecl;
-/// \brief Emit diagnostics for syntactic restrictions on a given expression.
+/// Emit diagnostics for syntactic restrictions on a given expression.
void performSyntacticExprDiagnostics(TypeChecker &TC, const Expr *E,
const DeclContext *DC,
bool isExprStmt);
-/// \brief Emit diagnostics for a given statement.
+/// Emit diagnostics for a given statement.
void performStmtDiagnostics(TypeChecker &TC, const Stmt *S);
void performAbstractFuncDeclDiagnostics(TypeChecker &TC,
diff --git a/lib/Sema/OverloadChoice.h b/lib/Sema/OverloadChoice.h
index 101249b..e1e6b63 100644
--- a/lib/Sema/OverloadChoice.h
+++ b/lib/Sema/OverloadChoice.h
@@ -31,37 +31,37 @@
namespace constraints {
class ConstraintSystem;
-/// \brief The kind of overload choice.
+/// The kind of overload choice.
enum class OverloadChoiceKind : int {
- /// \brief The overload choice selects a particular declaration from a
+ /// The overload choice selects a particular declaration from a
/// set of declarations.
Decl,
- /// \brief The overload choice selects a particular declaration that was
+ /// The overload choice selects a particular declaration that was
/// found via dynamic lookup and, therefore, might not actually be
/// available at runtime.
DeclViaDynamic,
- /// \brief The overload choice equates the member type with the
+ /// The overload choice equates the member type with the
/// base type. Used for unresolved member expressions like ".none" that
/// refer to enum members with unit type.
BaseType,
- /// \brief The overload choice selects a key path subscripting operation.
+ /// The overload choice selects a key path subscripting operation.
KeyPathApplication,
- /// \brief The member is looked up using @dynamicMemberLookup.
+ /// The member is looked up using @dynamicMemberLookup.
DynamicMemberLookup,
- /// \brief The overload choice selects a particular declaration that
+ /// The overload choice selects a particular declaration that
/// was found by bridging the base value type to its Objective-C
/// class type.
DeclViaBridge,
- /// \brief The overload choice selects a particular declaration that
+ /// The overload choice selects a particular declaration that
/// was found by unwrapping an optional context type.
DeclViaUnwrappedOptional,
- /// \brief The overload choice indexes into a tuple. Index zero will
+ /// The overload choice indexes into a tuple. Index zero will
/// have the value of this enumerator, index one will have the value of this
/// enumerator + 1, and so on. Thus, this enumerator must always be last.
TupleIndex,
};
-/// \brief Describes a particular choice within an overload set.
+/// Describes a particular choice within an overload set.
///
class OverloadChoice {
enum : unsigned {
@@ -79,7 +79,7 @@
IsDeclViaDynamic = 0x03,
};
- /// \brief The base type to be used when referencing the declaration
+ /// The base type to be used when referencing the declaration
/// along with the three bits above.
llvm::PointerIntPair<Type, 3, unsigned> BaseAndDeclKind;
@@ -195,12 +195,12 @@
return result;
}
- /// \brief Retrieve the base type used to refer to the declaration.
+ /// Retrieve the base type used to refer to the declaration.
Type getBaseType() const {
return BaseAndDeclKind.getPointer();
}
- /// \brief Determines the kind of overload choice this is.
+ /// Determines the kind of overload choice this is.
OverloadChoiceKind getKind() const {
if (!DynamicNameAndFRK.getPointer().empty())
return OverloadChoiceKind::DynamicMemberLookup;
@@ -226,7 +226,7 @@
return DeclOrKind.is<ValueDecl*>();
}
- /// \brief Retrieve the declaration that corresponds to this overload choice.
+ /// Retrieve the declaration that corresponds to this overload choice.
ValueDecl *getDecl() const {
return DeclOrKind.get<ValueDecl*>();
}
@@ -240,7 +240,7 @@
/// Get the name of the overload choice.
DeclName getName() const;
- /// \brief Retrieve the tuple index that corresponds to this overload
+ /// Retrieve the tuple index that corresponds to this overload
/// choice.
unsigned getTupleIndex() const {
assert(getKind() == OverloadChoiceKind::TupleIndex);
@@ -248,7 +248,7 @@
return kind-(uint32_t)OverloadChoiceKind::TupleIndex;
}
- /// \brief Retrieves an opaque choice that ignores the base type.
+ /// Retrieves an opaque choice that ignores the base type.
void *getOpaqueChoiceSimple() const {
return DeclOrKind.getOpaqueValue();
}
diff --git a/lib/Sema/SourceLoader.cpp b/lib/Sema/SourceLoader.cpp
index ea50c5f..476a433 100644
--- a/lib/Sema/SourceLoader.cpp
+++ b/lib/Sema/SourceLoader.cpp
@@ -11,7 +11,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief A simple module loader that loads .swift source files.
+/// A simple module loader that loads .swift source files.
///
//===----------------------------------------------------------------------===//
diff --git a/lib/Sema/TypeCheckCaptures.cpp b/lib/Sema/TypeCheckCaptures.cpp
index 29f08c1..9415a98 100644
--- a/lib/Sema/TypeCheckCaptures.cpp
+++ b/lib/Sema/TypeCheckCaptures.cpp
@@ -80,7 +80,7 @@
CaptureLoc = getCaptureLoc(AFR);
}
- /// \brief Check if the type of an expression references any generic
+ /// Check if the type of an expression references any generic
/// type parameters, or the dynamic Self type.
///
/// Note that we do not need to distinguish inner from outer generic
diff --git a/lib/Sema/TypeCheckConstraints.cpp b/lib/Sema/TypeCheckConstraints.cpp
index 4e7365a..d7e810f 100644
--- a/lib/Sema/TypeCheckConstraints.cpp
+++ b/lib/Sema/TypeCheckConstraints.cpp
@@ -2279,7 +2279,7 @@
return FunctionType::get(argTypes, solution.simplifyType(CS.getType(expr)));
}
-/// \brief Return the type of operator function for specified LHS, or a null
+/// Return the type of operator function for specified LHS, or a null
/// \c Type on error.
FunctionType *
TypeChecker::getTypeOfCompletionOperator(DeclContext *DC, Expr *LHS,
diff --git a/lib/Sema/TypeCheckDeclOverride.cpp b/lib/Sema/TypeCheckDeclOverride.cpp
index 727e2c7..5eda5e4 100644
--- a/lib/Sema/TypeCheckDeclOverride.cpp
+++ b/lib/Sema/TypeCheckDeclOverride.cpp
@@ -1318,7 +1318,7 @@
return OverrideRequiresKeyword::Always;
}
-/// \brief Returns true if the availability of the overriding declaration
+/// Returns true if the availability of the overriding declaration
/// makes it a safe override, given the availability of the base declaration.
static bool isAvailabilitySafeForOverride(ValueDecl *override,
ValueDecl *base) {
diff --git a/lib/Sema/TypeCheckProtocol.cpp b/lib/Sema/TypeCheckProtocol.cpp
index 6917f05..bcffb40 100644
--- a/lib/Sema/TypeCheckProtocol.cpp
+++ b/lib/Sema/TypeCheckProtocol.cpp
@@ -67,7 +67,7 @@
}
}
-/// \brief Describes the suitability of the chosen witness for
+/// Describes the suitability of the chosen witness for
/// the requirement.
struct swift::RequirementCheck {
CheckKind Kind;
@@ -972,7 +972,7 @@
return false;
}
-/// \brief Determine whether one requirement match is better than the other.
+/// Determine whether one requirement match is better than the other.
static bool isBetterMatch(TypeChecker &tc, DeclContext *dc,
ValueDecl *requirement,
const RequirementMatch &match1,
@@ -1623,7 +1623,7 @@
.fixItInsert(loc, differentFixit);
}
-/// \brief Determine whether the type \c T conforms to the protocol \c Proto,
+/// Determine whether the type \c T conforms to the protocol \c Proto,
/// recording the complete witness table if it does.
ProtocolConformance *MultiConformanceChecker::
checkIndividualConformance(NormalProtocolConformance *conformance,
@@ -1849,7 +1849,7 @@
return conformance;
}
-/// \brief Add the next associated type deduction to the string representation
+/// Add the next associated type deduction to the string representation
/// of the deductions, used in diagnostics.
static void addAssocTypeDeductionString(llvm::SmallString<128> &str,
AssociatedTypeDecl *assocType,
@@ -1928,7 +1928,7 @@
SubstFlags::UseErrorType);
}
-/// \brief Retrieve the kind of requirement described by the given declaration,
+/// Retrieve the kind of requirement described by the given declaration,
/// for use in some diagnostics.
static diag::RequirementKind getRequirementKind(ValueDecl *VD) {
if (isa<ConstructorDecl>(VD))
@@ -2074,7 +2074,7 @@
}
-/// \brief Diagnose a requirement match, describing what went wrong (or not).
+/// Diagnose a requirement match, describing what went wrong (or not).
static void
diagnoseMatch(ModuleDecl *module, NormalProtocolConformance *conformance,
ValueDecl *req, const RequirementMatch &match) {
diff --git a/lib/Sema/TypeCheckProtocol.h b/lib/Sema/TypeCheckProtocol.h
index 15dbb19..ca5e72a 100644
--- a/lib/Sema/TypeCheckProtocol.h
+++ b/lib/Sema/TypeCheckProtocol.h
@@ -151,53 +151,53 @@
class RequirementEnvironment;
-/// \brief The result of matching a particular declaration to a given
+/// The result of matching a particular declaration to a given
/// requirement.
enum class MatchKind : uint8_t {
- /// \brief The witness matched the requirement exactly.
+ /// The witness matched the requirement exactly.
ExactMatch,
- /// \brief There is a difference in optionality.
+ /// There is a difference in optionality.
OptionalityConflict,
- /// \brief The witness matched the requirement with some renaming.
+ /// The witness matched the requirement with some renaming.
RenamedMatch,
- /// \brief The witness is invalid or has an invalid type.
+ /// The witness is invalid or has an invalid type.
WitnessInvalid,
- /// \brief The kind of the witness and requirement differ, e.g., one
+ /// The kind of the witness and requirement differ, e.g., one
/// is a function and the other is a variable.
KindConflict,
- /// \brief The types conflict.
+ /// The types conflict.
TypeConflict,
- /// \brief The witness would match if an additional requirement were met.
+ /// The witness would match if an additional requirement were met.
MissingRequirement,
/// The witness throws, but the requirement does not.
ThrowsConflict,
- /// \brief The witness did not match due to static/non-static differences.
+ /// The witness did not match due to static/non-static differences.
StaticNonStaticConflict,
- /// \brief The witness is not settable, but the requirement is.
+ /// The witness is not settable, but the requirement is.
SettableConflict,
- /// \brief The witness did not match due to prefix/non-prefix differences.
+ /// The witness did not match due to prefix/non-prefix differences.
PrefixNonPrefixConflict,
- /// \brief The witness did not match due to postfix/non-postfix differences.
+ /// The witness did not match due to postfix/non-postfix differences.
PostfixNonPostfixConflict,
- /// \brief The witness did not match because of mutating conflicts.
+ /// The witness did not match because of mutating conflicts.
MutatingConflict,
- /// \brief The witness did not match because of nonmutating conflicts.
+ /// The witness did not match because of nonmutating conflicts.
NonMutatingConflict,
- /// \brief The witness did not match because of __consuming conflicts.
+ /// The witness did not match because of __consuming conflicts.
ConsumingConflict,
/// The witness is not rethrows, but the requirement is.
@@ -342,7 +342,7 @@
SourceLoc getOptionalityLoc(TypeRepr *tyR) const;
};
-/// \brief Describes a match between a requirement and a witness.
+/// Describes a match between a requirement and a witness.
struct RequirementMatch {
RequirementMatch(ValueDecl *witness, MatchKind kind,
Optional<RequirementEnvironment> env = None)
@@ -374,19 +374,19 @@
"Should have witness type and requirement");
}
- /// \brief The witness that matches the (implied) requirement.
+ /// The witness that matches the (implied) requirement.
ValueDecl *Witness;
- /// \brief The kind of match.
+ /// The kind of match.
MatchKind Kind;
- /// \brief The type of the witness when it is referenced.
+ /// The type of the witness when it is referenced.
Type WitnessType;
- /// \brief Requirement not met.
+ /// Requirement not met.
Optional<Requirement> MissingRequirement;
- /// \brief The requirement environment to use for the witness thunk.
+ /// The requirement environment to use for the witness thunk.
Optional<RequirementEnvironment> ReqEnv;
/// The set of optional adjustments performed on the witness.
@@ -396,7 +396,7 @@
/// environment.
SubstitutionMap WitnessSubstitutions;
- /// \brief Determine whether this match is viable.
+ /// Determine whether this match is viable.
bool isViable() const {
switch(Kind) {
case MatchKind::ExactMatch:
@@ -424,7 +424,7 @@
llvm_unreachable("Unhandled MatchKind in switch.");
}
- /// \brief Determine whether this requirement match has a witness type.
+ /// Determine whether this requirement match has a witness type.
bool hasWitnessType() const {
switch(Kind) {
case MatchKind::ExactMatch:
@@ -452,7 +452,7 @@
llvm_unreachable("Unhandled MatchKind in switch.");
}
- /// \brief Determine whether this requirement match has a requirement.
+ /// Determine whether this requirement match has a requirement.
bool hasRequirement() { return Kind == MatchKind::MissingRequirement; }
swift::Witness getWitness(ASTContext &ctx) const;
@@ -889,7 +889,7 @@
AssociatedTypeDecl *assocType);
};
-/// \brief Match the given witness to the given requirement.
+/// Match the given witness to the given requirement.
///
/// \returns the result of performing the match.
RequirementMatch matchWitness(
diff --git a/lib/Sema/TypeCheckStmt.cpp b/lib/Sema/TypeCheckStmt.cpp
index d4a97bd..a47afb2 100644
--- a/lib/Sema/TypeCheckStmt.cpp
+++ b/lib/Sema/TypeCheckStmt.cpp
@@ -284,7 +284,7 @@
public:
TypeChecker &TC;
- /// \brief This is the current function or closure being checked.
+ /// This is the current function or closure being checked.
/// This is null for top level code.
Optional<AnyFunctionRef> TheFunc;
diff --git a/lib/Sema/TypeCheckType.cpp b/lib/Sema/TypeCheckType.cpp
index c57e914..e981440 100644
--- a/lib/Sema/TypeCheckType.cpp
+++ b/lib/Sema/TypeCheckType.cpp
@@ -844,7 +844,7 @@
return resultType;
}
-/// \brief Diagnose a use of an unbound generic type.
+/// Diagnose a use of an unbound generic type.
static void diagnoseUnboundGenericType(Type ty, SourceLoc loc) {
auto unbound = ty->castTo<UnboundGenericType>();
{
@@ -900,7 +900,7 @@
ctx.Diags.diagnose(loc, diagCode, isa<TypeAliasDecl>(typeDecl), typeDecl->getFullName(), parentTy);
}
-/// \brief Returns a valid type or ErrorType in case of an error.
+/// Returns a valid type or ErrorType in case of an error.
static Type resolveTypeDecl(TypeDecl *typeDecl, SourceLoc loc,
DeclContext *foundDC,
TypeResolution resolution,
@@ -1551,7 +1551,7 @@
return ty;
}
-/// \brief Returns a valid type or ErrorType in case of an error.
+/// Returns a valid type or ErrorType in case of an error.
Type TypeChecker::resolveIdentifierType(
TypeResolution resolution,
IdentTypeRepr *IdType,
diff --git a/lib/Sema/TypeCheckType.h b/lib/Sema/TypeCheckType.h
index 7b3c782..ac3faf6 100644
--- a/lib/Sema/TypeCheckType.h
+++ b/lib/Sema/TypeCheckType.h
@@ -327,7 +327,7 @@
/// no generic signature to resolve types.
GenericSignature *getGenericSignature() const;
- /// \brief Resolves a TypeRepr to a type.
+ /// Resolves a TypeRepr to a type.
///
/// Performs name binding, checking of generic arguments, and so on in order
/// to create a well-formed type.
diff --git a/lib/Sema/TypeChecker.cpp b/lib/Sema/TypeChecker.cpp
index 5cbc12e..68a2cbf 100644
--- a/lib/Sema/TypeChecker.cpp
+++ b/lib/Sema/TypeChecker.cpp
@@ -827,7 +827,7 @@
return None;
}
-/// \brief Return the type of an expression parsed during code completion, or
+/// Return the type of an expression parsed during code completion, or
/// a null \c Type on error.
Optional<Type> swift::getTypeOfCompletionContextExpr(
ASTContext &Ctx,
@@ -843,7 +843,7 @@
referencedDecl);
}
-/// \brief Return the type of operator function for specified LHS, or a null
+/// Return the type of operator function for specified LHS, or a null
/// \c Type on error.
FunctionType *
swift::getTypeOfCompletionOperator(DeclContext *DC, Expr *LHS,
diff --git a/lib/Sema/TypeChecker.h b/lib/Sema/TypeChecker.h
index 8ee715b..5e69720 100644
--- a/lib/Sema/TypeChecker.h
+++ b/lib/Sema/TypeChecker.h
@@ -54,7 +54,7 @@
class Solution;
}
-/// \brief A mapping from substitutable types to the protocol-conformance
+/// A mapping from substitutable types to the protocol-conformance
/// mappings for those types.
using ConformanceMap =
llvm::DenseMap<SubstitutableType *, SmallVector<ProtocolConformance *, 2>>;
@@ -184,7 +184,7 @@
/// Add a result to the set of results.
void addResult(LookupTypeResultEntry result) { Results.push_back(result); }
- /// \brief Determine whether this result set is ambiguous.
+ /// Determine whether this result set is ambiguous.
bool isAmbiguous() const {
return Results.size() > 1;
}
@@ -521,7 +521,7 @@
ASTContext &Context;
DiagnosticEngine &Diags;
- /// \brief The list of function definitions we've encountered.
+ /// The list of function definitions we've encountered.
std::vector<AbstractFunctionDecl *> definedFunctions;
/// Declarations that need their conformances checked.
@@ -836,7 +836,7 @@
Type getObjCSelectorType(DeclContext *dc);
Type getExceptionType(DeclContext *dc, SourceLoc loc);
- /// \brief Try to resolve an IdentTypeRepr, returning either the referenced
+ /// Try to resolve an IdentTypeRepr, returning either the referenced
/// Type or an ErrorType in case of error.
static Type resolveIdentifierType(TypeResolution resolution,
IdentTypeRepr *IdType,
@@ -847,7 +847,7 @@
/// for the lookup.
Expr *resolveDeclRefExpr(UnresolvedDeclRefExpr *UDRE, DeclContext *Context);
- /// \brief Validate the given type.
+ /// Validate the given type.
///
/// Type validation performs name binding, checking of generic arguments,
/// and so on to determine whether the given type is well-formed and can
@@ -973,7 +973,7 @@
TypeResolution resolution,
ArrayRef<Type> genericArgs);
- /// \brief Substitute the given base type into the type of the given nested type,
+ /// Substitute the given base type into the type of the given nested type,
/// producing the effective type that the nested type will have.
///
/// \param module The module in which the substitution will be performed.
@@ -985,7 +985,7 @@
static Type substMemberTypeWithBase(ModuleDecl *module, TypeDecl *member,
Type baseTy, bool useArchetypes = true);
- /// \brief Determine whether one type is a subtype of another.
+ /// Determine whether one type is a subtype of another.
///
/// \param t1 The potential subtype.
/// \param t2 The potential supertype.
@@ -994,7 +994,7 @@
/// \returns true if \c t1 is a subtype of \c t2.
bool isSubtypeOf(Type t1, Type t2, DeclContext *dc);
- /// \brief Determine whether one type is implicitly convertible to another.
+ /// Determine whether one type is implicitly convertible to another.
///
/// \param t1 The potential source type of the conversion.
///
@@ -1009,7 +1009,7 @@
bool isConvertibleTo(Type t1, Type t2, DeclContext *dc,
bool *unwrappedIUO = nullptr);
- /// \brief Determine whether one type is explicitly convertible to another,
+ /// Determine whether one type is explicitly convertible to another,
/// i.e. using an 'as' expression.
///
/// \param t1 The potential source type of the conversion.
@@ -1021,7 +1021,7 @@
/// \returns true if \c t1 can be explicitly converted to \c t2.
bool isExplicitlyConvertibleTo(Type t1, Type t2, DeclContext *dc);
- /// \brief Determine whether one type is bridged to another type.
+ /// Determine whether one type is bridged to another type.
///
/// \param t1 The potential source type of the conversion.
///
@@ -1036,7 +1036,7 @@
bool isObjCBridgedTo(Type t1, Type t2, DeclContext *dc,
bool *unwrappedIUO = nullptr);
- /// \brief Return true if performing a checked cast from one type to another
+ /// Return true if performing a checked cast from one type to another
/// with the "as!" operator could possibly succeed.
///
/// \param t1 The potential source type of the cast.
@@ -1049,7 +1049,7 @@
/// false if it will certainly fail, e.g. because the types are unrelated.
bool checkedCastMaySucceed(Type t1, Type t2, DeclContext *dc);
- /// \brief Determine whether a constraint of the given kind can be satisfied
+ /// Determine whether a constraint of the given kind can be satisfied
/// by the two types.
///
/// \param t1 The first type of the constraint.
@@ -1258,7 +1258,7 @@
void maybeDiagnoseClassWithoutInitializers(ClassDecl *classDecl);
///
- /// \brief Add any implicitly-defined constructors required for the given
+ /// Add any implicitly-defined constructors required for the given
/// struct or class.
void addImplicitConstructors(NominalTypeDecl *typeDecl);
@@ -1323,14 +1323,14 @@
Optional<Type> boolType;
public:
- /// \brief Define the default constructor for the given struct or class.
+ /// Define the default constructor for the given struct or class.
void defineDefaultConstructor(NominalTypeDecl *decl);
- /// \brief Fold the given sequence expression into an (unchecked) expression
+ /// Fold the given sequence expression into an (unchecked) expression
/// tree.
Expr *foldSequence(SequenceExpr *expr, DeclContext *dc);
- /// \brief Type check the given expression.
+ /// Type check the given expression.
///
/// \param expr The expression to type-check, which will be modified in
/// place.
@@ -1374,7 +1374,7 @@
}
- /// \brief Type check the given expression and return its type without
+ /// Type check the given expression and return its type without
/// applying the solution.
///
/// \param expr The expression to type-check.
@@ -1404,7 +1404,7 @@
FreeTypeVariableBinding::Disallow,
ExprTypeCheckListener *listener = nullptr);
- /// \brief Return the type of operator function for specified LHS, or a null
+ /// Return the type of operator function for specified LHS, or a null
/// \c Type on error.
FunctionType *getTypeOfCompletionOperator(DeclContext *DC, Expr *LHS,
Identifier opName,
@@ -1417,14 +1417,14 @@
Optional<Type> checkObjCKeyPathExpr(DeclContext *dc, KeyPathExpr *expr,
bool requireResultType = false);
- /// \brief Type check whether the given type declaration includes members of
+ /// Type check whether the given type declaration includes members of
/// unsupported recursive value types.
///
/// \param decl The declaration to be type-checked. This process will not
/// modify the declaration.
void checkDeclCircularity(NominalTypeDecl *decl);
- /// \brief Type check whether the given switch statement exhaustively covers
+ /// Type check whether the given switch statement exhaustively covers
/// its domain.
///
/// \param stmt The switch statement to be type-checked. No modification of
@@ -1436,7 +1436,7 @@
void checkSwitchExhaustiveness(const SwitchStmt *stmt, const DeclContext *DC,
bool limitChecking);
- /// \brief Type check the given expression as a condition, which converts
+ /// Type check the given expression as a condition, which converts
/// it to a logic value.
///
/// \param expr The expression to type-check, which will be modified in place
@@ -1445,7 +1445,7 @@
/// \returns true if an error occurred, false otherwise.
bool typeCheckCondition(Expr *&expr, DeclContext *dc);
- /// \brief Type check the given 'if' or 'while' statement condition, which
+ /// Type check the given 'if' or 'while' statement condition, which
/// either converts an expression to a logic value or bind variables to the
/// contents of an Optional.
///
@@ -1455,7 +1455,7 @@
bool typeCheckStmtCondition(StmtCondition &cond, DeclContext *dc,
Diag<> diagnosticForAlwaysTrue);
- /// \brief Determine the semantics of a checked cast operation.
+ /// Determine the semantics of a checked cast operation.
///
/// \param fromType The source type of the cast.
/// \param toType The destination type of the cast.
@@ -1494,7 +1494,7 @@
Type dynamicType,
Type valueType);
- /// \brief Resolve ambiguous pattern/expr productions inside a pattern using
+ /// Resolve ambiguous pattern/expr productions inside a pattern using
/// name lookup information. Must be done before type-checking the pattern.
Pattern *resolvePattern(Pattern *P, DeclContext *dc,
bool isStmtCondition);
@@ -1549,14 +1549,14 @@
/// Type-check a for-each loop's pattern binding and sequence together.
bool typeCheckForEachBinding(DeclContext *dc, ForEachStmt *stmt);
- /// \brief Lazily diagnose conversions to C function pointers of closures
+ /// Lazily diagnose conversions to C function pointers of closures
/// with captures.
void maybeDiagnoseCaptures(Expr *E, AnyFunctionRef AFR);
- /// \brief Compute the set of captures for the given function or closure.
+ /// Compute the set of captures for the given function or closure.
void computeCaptures(AnyFunctionRef AFR);
- /// \brief Change the context of closures in the given initializer
+ /// Change the context of closures in the given initializer
/// expression to the given context.
///
/// \returns true if any closures were found
@@ -1612,7 +1612,7 @@
base, wantInterfaceType);
}
- /// \brief Retrieve the default type for the given protocol.
+ /// Retrieve the default type for the given protocol.
///
/// Some protocols, particularly those that correspond to literals, have
/// default types associated with them. This routine retrieves that default
@@ -1622,7 +1622,7 @@
/// this protocol.
Type getDefaultType(ProtocolDecl *protocol, DeclContext *dc);
- /// \brief Convert the given expression to the given type.
+ /// Convert the given expression to the given type.
///
/// \param expr The expression, which will be updated in place.
/// \param type The type to convert to.
@@ -1633,7 +1633,7 @@
bool convertToType(Expr *&expr, Type type, DeclContext *dc,
Optional<Pattern*> typeFromPattern = None);
- /// \brief Coerce the given expression to materializable type, if it
+ /// Coerce the given expression to materializable type, if it
/// isn't already.
Expr *coerceToRValue(Expr *expr,
llvm::function_ref<Type(Expr *)> getType
@@ -1643,7 +1643,7 @@
expr->setType(type);
});
- /// \brief Add implicit load expression to given AST, this is sometimes
+ /// Add implicit load expression to given AST, this is sometimes
/// more complicated than simplify wrapping given root in newly created
/// `LoadExpr`, because `ForceValueExpr` and `ParenExpr` supposed to appear
/// only at certain positions in AST.
@@ -1663,7 +1663,7 @@
/// array literals exist.
bool requireArrayLiteralIntrinsics(SourceLoc loc);
- /// \brief Retrieve the witness type with the given name.
+ /// Retrieve the witness type with the given name.
///
/// \param type The type that conforms to the given protocol.
///
@@ -1683,7 +1683,7 @@
Identifier name,
Diag<> brokenProtocolDiag);
- /// \brief Build a call to the witness with the given name and arguments.
+ /// Build a call to the witness with the given name and arguments.
///
/// \param base The base expression, whose witness will be invoked.
///
@@ -1706,7 +1706,7 @@
ArrayRef<Expr *> arguments,
Diag<> brokenProtocolDiag);
- /// \brief Determine whether the given type contains the given protocol.
+ /// Determine whether the given type contains the given protocol.
///
/// \param DC The context in which to check conformance. This affects, for
/// example, extension visibility.
@@ -1720,7 +1720,7 @@
DeclContext *DC,
ConformanceCheckOptions options);
- /// \brief Determine whether the given type conforms to the given protocol.
+ /// Determine whether the given type conforms to the given protocol.
///
/// Unlike subTypeOfProtocol(), this will return false for existentials of
/// non-self conforming protocols.
@@ -1839,7 +1839,7 @@
NameLookupOptions options
= defaultUnqualifiedLookupOptions);
- /// \brief Lookup a member in the given type.
+ /// Lookup a member in the given type.
///
/// \param dc The context that needs the member.
/// \param type The type in which we will look for a member.
@@ -1851,11 +1851,11 @@
NameLookupOptions options
= defaultMemberLookupOptions);
- /// \brief Check whether the given declaration can be written as a
+ /// Check whether the given declaration can be written as a
/// member of the given base type.
static bool isUnsupportedMemberTypeAccess(Type type, TypeDecl *typeDecl);
- /// \brief Look up a member type within the given type.
+ /// Look up a member type within the given type.
///
/// This routine looks for member types with the given name within the
/// given type.
@@ -1871,7 +1871,7 @@
NameLookupOptions options
= defaultMemberTypeLookupOptions);
- /// \brief Look up the constructors of the given type.
+ /// Look up the constructors of the given type.
///
/// \param dc The context that needs the constructor.
/// \param type The type for which we will look for constructors.
@@ -1894,7 +1894,7 @@
/// operator \c name appended to the expression.
Expr *findLHS(DeclContext *DC, Expr *E, Identifier name);
- /// \brief Look up the Bool type in the standard library.
+ /// Look up the Bool type in the standard library.
Type lookupBoolType(const DeclContext *dc);
/// @}
@@ -1915,11 +1915,11 @@
ValueDecl *decl1,
ValueDecl *decl2);
- /// \brief Build a type-checked reference to the given value.
+ /// Build a type-checked reference to the given value.
Expr *buildCheckedRefExpr(VarDecl *D, DeclContext *UseDC,
DeclNameLoc nameLoc, bool Implicit);
- /// \brief Build a reference to a declaration, where name lookup returned
+ /// Build a reference to a declaration, where name lookup returned
/// the given set of declarations.
Expr *buildRefExpr(ArrayRef<ValueDecl *> Decls, DeclContext *UseDC,
DeclNameLoc NameLoc, bool Implicit,
@@ -1931,7 +1931,7 @@
FunctionType *closureType);
/// @}
- /// \brief Retrieve a specific, known protocol.
+ /// Retrieve a specific, known protocol.
///
/// \param loc The location at which we need to look for the protocol.
/// \param kind The known protocol we're looking for.
@@ -1940,7 +1940,7 @@
/// problem with the Standard Library.
ProtocolDecl *getProtocol(SourceLoc loc, KnownProtocolKind kind);
- /// \brief Retrieve the literal protocol for the given expression.
+ /// Retrieve the literal protocol for the given expression.
///
/// \returns the literal protocol, if known and available, or null if the
/// expression does not have an associated literal protocol.
@@ -1999,7 +1999,7 @@
/// potentially unavailable API elements
/// @{
- /// \brief Returns true if the availability of the witness
+ /// Returns true if the availability of the witness
/// is sufficient to safely conform to the requirement in the context
/// the provided conformance. On return, requiredAvailability holds th
/// availability levels required for conformance.
diff --git a/lib/TBDGen/TBDGenVisitor.h b/lib/TBDGen/TBDGenVisitor.h
index 9f2582e..d0ae53d 100644
--- a/lib/TBDGen/TBDGenVisitor.h
+++ b/lib/TBDGen/TBDGenVisitor.h
@@ -86,7 +86,7 @@
addSymbol("main");
}
- /// \brief Adds the global symbols associated with the first file.
+ /// Adds the global symbols associated with the first file.
void addFirstFileSymbols();
void visitAbstractFunctionDecl(AbstractFunctionDecl *AFD);
diff --git a/lib/TBDGen/tapi/APIVersion.h b/lib/TBDGen/tapi/APIVersion.h
index 5209376..c789c47 100644
--- a/lib/TBDGen/tapi/APIVersion.h
+++ b/lib/TBDGen/tapi/APIVersion.h
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief Access the TAPI API version information and feature availability.
+/// Access the TAPI API version information and feature availability.
/// \since 1.0
///
//===----------------------------------------------------------------------===//
@@ -31,13 +31,13 @@
namespace tapi {
///
-/// \brief Defines a list of TAPI library features.
+/// Defines a list of TAPI library features.
/// \since 1.0
///
enum class Feature : unsigned {};
///
-/// \brief Access to API version, feature and ABI related information about the
+/// Access to API version, feature and ABI related information about the
/// TAPI dynamic library.
/// \since 1.0
///
@@ -49,28 +49,28 @@
///
///
- /// \brief Get the major API version number.
+ /// Get the major API version number.
/// \return The major API version number as unsigned integer.
/// \since 1.0
///
static unsigned getMajor() noexcept;
///
- /// \brief Get the minor API version number.
+ /// Get the minor API version number.
/// \return The minor API version number as unsigned integer.
/// \since 1.0
///
static unsigned getMinor() noexcept;
///
- /// \brief Get the patch API version number.
+ /// Get the patch API version number.
/// \return The patch API version as unsigned integer.
/// \since 1.0
///
static unsigned getPatch() noexcept;
///
- /// \brief Check if the current API version is at least the specified API
+ /// Check if the current API version is at least the specified API
/// version or greater.
/// \param[in] major The major API version number to compare against.
/// \param[in] minor The minor API version number to compare against.
@@ -92,7 +92,7 @@
///
///
- /// \brief Check if the library supports a particular #Feature.
+ /// Check if the library supports a particular #Feature.
/// \param[in] feature The #Feature to be queried for.
/// \return True if \a feature is supported.
/// \since 1.0
@@ -109,7 +109,7 @@
///
///
- /// \brief Check if the library supports the specified ABI version.
+ /// Check if the library supports the specified ABI version.
/// \param[in] abiVersion The ABI version to query for.
/// \return True if the library supports the ABI version \a abiVersion.
/// \since 1.0
diff --git a/lib/TBDGen/tapi/Architecture.cpp b/lib/TBDGen/tapi/Architecture.cpp
index 3652ae7..a62b3fd 100644
--- a/lib/TBDGen/tapi/Architecture.cpp
+++ b/lib/TBDGen/tapi/Architecture.cpp
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief Implements the architecture.
+/// Implements the architecture.
///
//===----------------------------------------------------------------------===//
diff --git a/lib/TBDGen/tapi/Architecture.h b/lib/TBDGen/tapi/Architecture.h
index 25d4f7d..a704bcf 100644
--- a/lib/TBDGen/tapi/Architecture.h
+++ b/lib/TBDGen/tapi/Architecture.h
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief Defines architecture enum.
+/// Defines architecture enum.
///
//===----------------------------------------------------------------------===//
diff --git a/lib/TBDGen/tapi/ArchitectureSet.cpp b/lib/TBDGen/tapi/ArchitectureSet.cpp
index 3ad3dce..00ecfd1 100644
--- a/lib/TBDGen/tapi/ArchitectureSet.cpp
+++ b/lib/TBDGen/tapi/ArchitectureSet.cpp
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief Implements the architecture set.
+/// Implements the architecture set.
///
//===----------------------------------------------------------------------===//
diff --git a/lib/TBDGen/tapi/ArchitectureSet.h b/lib/TBDGen/tapi/ArchitectureSet.h
index 7f3b546..a261527 100644
--- a/lib/TBDGen/tapi/ArchitectureSet.h
+++ b/lib/TBDGen/tapi/ArchitectureSet.h
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief Defines the architecture set.
+/// Defines the architecture set.
///
//===----------------------------------------------------------------------===//
diff --git a/lib/TBDGen/tapi/ArchitectureSupport.cpp b/lib/TBDGen/tapi/ArchitectureSupport.cpp
index 3b6d983..217797b 100644
--- a/lib/TBDGen/tapi/ArchitectureSupport.cpp
+++ b/lib/TBDGen/tapi/ArchitectureSupport.cpp
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief Implements architecture specific helper functions.
+/// Implements architecture specific helper functions.
///
//===----------------------------------------------------------------------===//
diff --git a/lib/TBDGen/tapi/ArchitectureSupport.h b/lib/TBDGen/tapi/ArchitectureSupport.h
index 058c568..3375089 100644
--- a/lib/TBDGen/tapi/ArchitectureSupport.h
+++ b/lib/TBDGen/tapi/ArchitectureSupport.h
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief Defines architecture specific enums and helper functions.
+/// Defines architecture specific enums and helper functions.
///
//===----------------------------------------------------------------------===//
@@ -45,13 +45,13 @@
bool empty() const { return _version == 0; }
- /// \brief Retrieve the major version number.
+ /// Retrieve the major version number.
unsigned getMajor() const { return _version >> 16; }
- /// \brief Retrieve the minor version number, if provided.
+ /// Retrieve the minor version number, if provided.
unsigned getMinor() const { return (_version >> 8) & 0xff; }
- /// \brief Retrieve the subminor version number, if provided.
+ /// Retrieve the subminor version number, if provided.
unsigned getSubminor() const { return _version & 0xff; }
bool parse32(StringRef str);
diff --git a/lib/TBDGen/tapi/AvailabilityInfo.h b/lib/TBDGen/tapi/AvailabilityInfo.h
index 4f48b91..5685695 100644
--- a/lib/TBDGen/tapi/AvailabilityInfo.h
+++ b/lib/TBDGen/tapi/AvailabilityInfo.h
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief Defines the Availability Info.
+/// Defines the Availability Info.
///
//===----------------------------------------------------------------------===//
diff --git a/lib/TBDGen/tapi/CoreSymbol.h b/lib/TBDGen/tapi/CoreSymbol.h
index fd3089c..149c064 100644
--- a/lib/TBDGen/tapi/CoreSymbol.h
+++ b/lib/TBDGen/tapi/CoreSymbol.h
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief API Symbol
+/// API Symbol
///
//===----------------------------------------------------------------------===//
@@ -65,7 +65,7 @@
void print(raw_ostream &os) const;
- /// \brief Print APISymbol in human readable format.
+ /// Print APISymbol in human readable format.
void dump(raw_ostream &os) const;
void dump() const { dump(llvm::errs()); }
diff --git a/lib/TBDGen/tapi/Defines.h b/lib/TBDGen/tapi/Defines.h
index 4ed9256..2a09e10 100644
--- a/lib/TBDGen/tapi/Defines.h
+++ b/lib/TBDGen/tapi/Defines.h
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief TAPI C++ library defines.
+/// TAPI C++ library defines.
/// \since 1.0
///
//===----------------------------------------------------------------------===//
diff --git a/lib/TBDGen/tapi/ExtendedInterfaceFile.cpp b/lib/TBDGen/tapi/ExtendedInterfaceFile.cpp
index ece934d..4a26b77 100644
--- a/lib/TBDGen/tapi/ExtendedInterfaceFile.cpp
+++ b/lib/TBDGen/tapi/ExtendedInterfaceFile.cpp
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief Implements the Extended Interface File
+/// Implements the Extended Interface File
///
//===----------------------------------------------------------------------===//
diff --git a/lib/TBDGen/tapi/ExtendedInterfaceFile.h b/lib/TBDGen/tapi/ExtendedInterfaceFile.h
index a634dec..a10e184 100644
--- a/lib/TBDGen/tapi/ExtendedInterfaceFile.h
+++ b/lib/TBDGen/tapi/ExtendedInterfaceFile.h
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief A generic and abstract interface representation for linkable objects.
+/// A generic and abstract interface representation for linkable objects.
/// This could be an MachO executable, bundle, dylib, or text-based stub
/// file.
///
diff --git a/lib/TBDGen/tapi/File.h b/lib/TBDGen/tapi/File.h
index 93739a6..64e7250 100644
--- a/lib/TBDGen/tapi/File.h
+++ b/lib/TBDGen/tapi/File.h
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief TAPI File abstraction.
+/// TAPI File abstraction.
///
//===----------------------------------------------------------------------===//
@@ -26,43 +26,43 @@
// clang-format off
enum FileType : unsigned {
- /// \brief Invalid file type.
+ /// Invalid file type.
Invalid = 0U,
- /// \brief TAPI Configuration file.
+ /// TAPI Configuration file.
TAPI_Configuration_V1 = 1U << 0,
- /// \brief MachO Dynamic Library file.
+ /// MachO Dynamic Library file.
MachO_DynamicLibrary = 1U << 1,
- /// \brief MachO Dynamic Library Stub file.
+ /// MachO Dynamic Library Stub file.
MachO_DynamicLibrary_Stub = 1U << 2,
- /// \brief MachO Bundle file.
+ /// MachO Bundle file.
MachO_Bundle = 1U << 3,
- /// \brief Text-based stub file (.tbd) version 1.0
+ /// Text-based stub file (.tbd) version 1.0
TBD_V1 = 1U << 4,
- /// \brief Text-based stub file (.tbd) version 2.0
+ /// Text-based stub file (.tbd) version 2.0
TBD_V2 = 1U << 5,
- /// \brief Text-based stub file (.tbd) version 3.0
+ /// Text-based stub file (.tbd) version 3.0
TBD_V3 = 1U << 6,
- /// \brief JSON Header List
+ /// JSON Header List
JSON_V1 = 1U << 7,
- /// \brief LD64 re-export file
+ /// LD64 re-export file
ReexportFile = 1U << 8,
- /// \brief Text-based API file (.api) version 1.0
+ /// Text-based API file (.api) version 1.0
API_V1 = 1U << 9,
- /// \brief Text-based SPI file (.spi) version 1.0
+ /// Text-based SPI file (.spi) version 1.0
SPI_V1 = 1U << 10,
- /// \brief SDKDB file (.sdkdb) version 1.0
+ /// SDKDB file (.sdkdb) version 1.0
SDKDB_V1 = 1U << 11,
All = ~0U,
@@ -79,7 +79,7 @@
static_cast<unsigned>(rhs));
}
-/// \brief Abstract TAPI file.
+/// Abstract TAPI file.
class File {
public:
enum class Kind : unsigned {
diff --git a/lib/TBDGen/tapi/InterfaceFile.cpp b/lib/TBDGen/tapi/InterfaceFile.cpp
index 074e32b..ed0c7b1 100644
--- a/lib/TBDGen/tapi/InterfaceFile.cpp
+++ b/lib/TBDGen/tapi/InterfaceFile.cpp
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief Implements the Interface File
+/// Implements the Interface File
///
//===----------------------------------------------------------------------===//
diff --git a/lib/TBDGen/tapi/InterfaceFile.h b/lib/TBDGen/tapi/InterfaceFile.h
index e7b9f64..a191a29 100644
--- a/lib/TBDGen/tapi/InterfaceFile.h
+++ b/lib/TBDGen/tapi/InterfaceFile.h
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief A generic and abstract interface representation for linkable objects.
+/// A generic and abstract interface representation for linkable objects.
/// This could be an MachO executable, bundle, dylib, or text-based stub
/// file.
///
diff --git a/lib/TBDGen/tapi/InterfaceFileBase.cpp b/lib/TBDGen/tapi/InterfaceFileBase.cpp
index d31d5f5..31b4ac7 100644
--- a/lib/TBDGen/tapi/InterfaceFileBase.cpp
+++ b/lib/TBDGen/tapi/InterfaceFileBase.cpp
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief Implements the Interface File Base
+/// Implements the Interface File Base
///
//===----------------------------------------------------------------------===//
diff --git a/lib/TBDGen/tapi/InterfaceFileBase.h b/lib/TBDGen/tapi/InterfaceFileBase.h
index 7d89b18..c7c97b6 100644
--- a/lib/TBDGen/tapi/InterfaceFileBase.h
+++ b/lib/TBDGen/tapi/InterfaceFileBase.h
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief Abstract base class for interface files.
+/// Abstract base class for interface files.
///
//===----------------------------------------------------------------------===//
diff --git a/lib/TBDGen/tapi/LinkerInterfaceFile.h b/lib/TBDGen/tapi/LinkerInterfaceFile.h
index 80ceccf..adf26ab 100644
--- a/lib/TBDGen/tapi/LinkerInterfaceFile.h
+++ b/lib/TBDGen/tapi/LinkerInterfaceFile.h
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief API for reading TAPI files.
+/// API for reading TAPI files.
/// \since 1.0
///
//===----------------------------------------------------------------------===//
@@ -36,113 +36,113 @@
class Symbol;
///
-/// \brief Defines a list of supported platforms.
+/// Defines a list of supported platforms.
/// \since 1.0
///
enum class Platform : unsigned {
- /// \brief Unknown platform
+ /// Unknown platform
/// \since 1.0
Unknown = 0,
- /// \brief Mac OS X
+ /// Mac OS X
/// \since 1.0
OSX = 1,
- /// \brief iOS
+ /// iOS
/// \since 1.0
iOS = 2,
- /// \brief watchOS
+ /// watchOS
/// \since 1.0
watchOS = 3,
- /// \brief tvOS
+ /// tvOS
/// \since 1.0
tvOS = 4,
- /// \brief bridgeOS
+ /// bridgeOS
/// \since 1.2
bridgeOS = 5,
};
///
-/// \brief Defines a list of Objective-C constraints.
+/// Defines a list of Objective-C constraints.
/// \since 1.0
///
enum class ObjCConstraint : unsigned {
- /// \brief No constraint.
+ /// No constraint.
/// \since 1.0
None = 0,
- /// \brief Retain/Release.
+ /// Retain/Release.
/// \since 1.0
Retain_Release = 1,
- /// \brief Retain/Release for Simulator.
+ /// Retain/Release for Simulator.
/// \since 1.0
Retain_Release_For_Simulator = 2,
- /// \brief Retain/Release or Garbage Collection.
+ /// Retain/Release or Garbage Collection.
/// \since 1.0
Retain_Release_Or_GC = 3,
- /// \brief Garbage Collection.
+ /// Garbage Collection.
/// \since 1.0
GC = 4,
};
///
-/// \brief Defines a list of supported file types.
+/// Defines a list of supported file types.
/// \since 1.0
///
enum class FileType : unsigned {
- /// \brief Unsupported file type.
+ /// Unsupported file type.
/// \since 1.0
Unsupported = 0,
- /// \brief Text-based Dynamic Library Stub File (.tbd) version 1.0
+ /// Text-based Dynamic Library Stub File (.tbd) version 1.0
/// \since 1.0
TBD_V1 = 1,
- /// \brief Text-based stub file (.tbd) version 2.0
+ /// Text-based stub file (.tbd) version 2.0
/// \since 1.0
TBD_V2 = 2,
- /// \brief Text-based stub file (.tbd) version 3.0
+ /// Text-based stub file (.tbd) version 3.0
/// \since 1.3
TBD_V3 = 3,
};
///
-/// \brief Defines the cpu subtype matching mode.
+/// Defines the cpu subtype matching mode.
/// \since 1.0
///
enum class CpuSubTypeMatching : unsigned {
- /// \brief Fall-back to an ABI compatible slice if an exact match cannot be
+ /// Fall-back to an ABI compatible slice if an exact match cannot be
/// found.
/// \since 1.0
ABI_Compatible = 0,
- /// \brief Only accept a slice if the sub type matches.
+ /// Only accept a slice if the sub type matches.
/// \since 1.0
Exact = 1,
};
///
-/// \brief Defines flags that control the parsing of text-based stub files.
+/// Defines flags that control the parsing of text-based stub files.
/// \since 1.1
///
enum ParsingFlags : unsigned {
- /// \brief Default flags.
+ /// Default flags.
/// \since 1.1
None = 0,
- /// \brief Only accept a slice if the sub type matches. ABI fall-back mode is
+ /// Only accept a slice if the sub type matches. ABI fall-back mode is
/// the default.
/// \since 1.1
ExactCpuSubType = 1U << 0,
- /// \brief Disallow weak imported symbols. This adds weak imported symbols to
+ /// Disallow weak imported symbols. This adds weak imported symbols to
/// the ignore exports list.
/// \since 1.1
DisallowWeakImports = 1U << 1,
@@ -159,13 +159,13 @@
}
///
-/// \brief TAPI File APIs
+/// TAPI File APIs
/// \since 1.0
///
class TAPI_PUBLIC LinkerInterfaceFile {
public:
///
- /// \brief Returns a list of supported file extensions.
+ /// Returns a list of supported file extensions.
///
/// \returns a list of supported file extensions.
/// \since 1.0
@@ -173,7 +173,7 @@
static std::vector<std::string> getSupportedFileExtensions() noexcept;
///
- /// \brief Indicate if the provided buffer is a supported Text-based Dynamic
+ /// Indicate if the provided buffer is a supported Text-based Dynamic
/// Library Stub file.
///
/// Checks if the buffer is a supported format. This doesn't check for
@@ -189,7 +189,7 @@
size_t size) noexcept;
///
- /// \brief Check if we should prefer the text-based stub file.
+ /// Check if we should prefer the text-based stub file.
///
/// \param[in] path full path to the text-based stub file.
/// \returns true if the tex-based stub file should be prefered over any
@@ -199,7 +199,7 @@
static bool shouldPreferTextBasedStubFile(const std::string &path) noexcept;
///
- /// \brief Check if the text-based stub file and the MachO dynamic library
+ /// Check if the text-based stub file and the MachO dynamic library
/// file are in sync.
///
/// This validates both files against each other and checks if both files are
@@ -214,7 +214,7 @@
const std::string &dylibPath) noexcept;
///
- /// \brief Create a LinkerInterfaceFile from the provided buffer.
+ /// Create a LinkerInterfaceFile from the provided buffer.
///
/// Parses the content of the provided buffer with the given constrains for
/// cpu type, cpu sub-type, matching requirement, and minimum deployment
@@ -240,7 +240,7 @@
std::string &errorMessage) noexcept;
///
- /// \brief Create a LinkerInterfaceFile from the provided buffer.
+ /// Create a LinkerInterfaceFile from the provided buffer.
///
/// Parses the content of the provided buffer with the given constrains for
/// cpu type, cpu sub-type, flags, and minimum deployment version.
@@ -264,7 +264,7 @@
PackedVersion32 minOSVersion, std::string &errorMessage) noexcept;
///
- /// \brief Create a LinkerInterfaceFile from a file.
+ /// Create a LinkerInterfaceFile from a file.
///
/// Parses the content of the file with the given constrains for cpu type,
/// cpu sub-type, flags, and minimum deployment version.
@@ -286,28 +286,28 @@
std::string &errorMessage) noexcept;
///
- /// \brief Query the file type.
+ /// Query the file type.
/// \return Returns the file type this TAPI file represents.
/// \since 1.0
///
FileType getFileType() const noexcept;
///
- /// \brief Query the platform
+ /// Query the platform
/// \return Returns the platform supported by the TAPI file.
/// \since 1.0
///
Platform getPlatform() const noexcept;
///
- /// \brief Query the install name.
+ /// Query the install name.
/// \return Returns the install name of the TAPI file.
/// \since 1.0
///
const std::string &getInstallName() const noexcept;
///
- /// \brief Query the install name is version specifc.
+ /// Query the install name is version specifc.
/// \return True if the install name has been adjusted for the provided
/// minimum OS version.
/// \since 1.0
@@ -315,70 +315,70 @@
bool isInstallNameVersionSpecific() const noexcept;
///
- /// \brief Query the current library version.
+ /// Query the current library version.
/// \return Returns the current library version as 32bit packed version.
/// \since 1.0
///
PackedVersion32 getCurrentVersion() const noexcept;
///
- /// \brief Query the compatibility library version.
+ /// Query the compatibility library version.
/// \return Returns the compatibility library version as 32bit packed version.
/// \since 1.0
///
PackedVersion32 getCompatibilityVersion() const noexcept;
///
- /// \brief Query the Swift ABI version.
+ /// Query the Swift ABI version.
/// \return Returns the Swift ABI version as unsigned integer.
/// \since 1.0
///
unsigned getSwiftVersion() const noexcept;
///
- /// \brief Query the Objective-C Constraint.
+ /// Query the Objective-C Constraint.
/// \return Returns the Objetive-C constraint.
/// \since 1.0
///
ObjCConstraint getObjCConstraint() const noexcept;
///
- /// \brief Query if the library has two level namespace.
+ /// Query if the library has two level namespace.
/// \return Returns true if the library has two level namespace.
/// \since 1.0
///
bool hasTwoLevelNamespace() const noexcept;
///
- /// \brief Query if the library is Applicatiuon Extension Safe.
+ /// Query if the library is Applicatiuon Extension Safe.
/// \return Returns true if the library is Application Extension Safe.
/// \since 1.0
///
bool isApplicationExtensionSafe() const noexcept;
///
- /// \brief Query if the library has any allowable clients.
+ /// Query if the library has any allowable clients.
/// \return Return true if there are any allowable clients.
/// \since 1.0
///
bool hasAllowableClients() const noexcept;
///
- /// \brief Query if the library has any re-exported libraries.
+ /// Query if the library has any re-exported libraries.
/// \return Return true if there are any re-exported libraries.
/// \since 1.0
///
bool hasReexportedLibraries() const noexcept;
///
- /// \brief Query if the library has any weak defined exports.
+ /// Query if the library has any weak defined exports.
/// \return Return true if there are any weak defined exports.
/// \since 1.0
///
bool hasWeakDefinedExports() const noexcept;
///
- /// \brief Obtain the name of the parent framework (umbrella framework).
+ /// Obtain the name of the parent framework (umbrella framework).
/// \return Returns the name of the parent framework (if it exists), otherwise
/// an empty string.
/// \since 1.0
@@ -386,49 +386,49 @@
const std::string &getParentFrameworkName() const noexcept;
///
- /// \brief Obtain the list of allowable clients.
+ /// Obtain the list of allowable clients.
/// \return Returns a list of allowable clients.
/// \since 1.0
///
const std::vector<std::string> &allowableClients() const noexcept;
///
- /// \brief Obtain the list of re-exported libraries.
+ /// Obtain the list of re-exported libraries.
/// \return Returns a list of re-exported libraries.
/// \since 1.0
///
const std::vector<std::string> &reexportedLibraries() const noexcept;
///
- /// \brief Obtain a list of all symbols to be ignored.
+ /// Obtain a list of all symbols to be ignored.
/// \return Returns a list of all symbols that should be ignored.
/// \since 1.0
///
const std::vector<std::string> &ignoreExports() const noexcept;
///
- /// \brief Obtain a list of all exported symbols.
+ /// Obtain a list of all exported symbols.
/// \return Returns a list of all exported symbols.
/// \since 1.0
///
const std::vector<Symbol> &exports() const noexcept;
///
- /// \brief Obtain a list of all undefined symbols.
+ /// Obtain a list of all undefined symbols.
/// \return Returns a list of all undefined symbols.
/// \since 1.0
///
const std::vector<Symbol> &undefineds() const noexcept;
///
- /// \brief Obtain a list of all inlined frameworks.
+ /// Obtain a list of all inlined frameworks.
/// \return Returns a list of install names of all inlined frameworks.
/// \since 1.3
///
const std::vector<std::string> &inlinedFrameworkNames() const noexcept;
///
- /// \brief Create a LinkerInterfaceFile from the specified inlined framework.
+ /// Create a LinkerInterfaceFile from the specified inlined framework.
///
/// Creates a LinkerInterfaceFile with the given constrains for cpu type,
/// cpu sub-type, flags, and minimum deployment version.
@@ -451,20 +451,20 @@
std::string &errorMessage) const noexcept;
///
- /// \brief Destructor.
+ /// Destructor.
/// \since 1.0
///
~LinkerInterfaceFile() noexcept;
///
- /// \brief Copy constructor (deleted).
+ /// Copy constructor (deleted).
/// \since 1.0
///
LinkerInterfaceFile(const LinkerInterfaceFile &) noexcept = delete;
LinkerInterfaceFile &operator=(const LinkerInterfaceFile &) noexcept = delete;
///
- /// \brief Move constructor.
+ /// Move constructor.
/// \since 1.0
///
LinkerInterfaceFile(LinkerInterfaceFile &&) noexcept;
diff --git a/lib/TBDGen/tapi/PackedVersion32.h b/lib/TBDGen/tapi/PackedVersion32.h
index 0dc7029..e837291 100644
--- a/lib/TBDGen/tapi/PackedVersion32.h
+++ b/lib/TBDGen/tapi/PackedVersion32.h
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief Defines the packed version number.
+/// Defines the packed version number.
/// \since 1.0
///
//===----------------------------------------------------------------------===//
@@ -27,7 +27,7 @@
TAPI_NAMESPACE_V1_BEGIN
///
-/// \brief Packed Version Number Encoding.
+/// Packed Version Number Encoding.
///
/// The Mach-O version numbers are commonly encoded as a 32bit value, where the
/// upper 16 bit quantity is used for the major version number and the lower two
@@ -41,19 +41,19 @@
public:
///
- /// \brief Default construct a PackedVersion32.
+ /// Default construct a PackedVersion32.
/// \since 1.0
///
PackedVersion32() = default;
///
- /// \brief Construct a PackedVersion32 with a raw value.
+ /// Construct a PackedVersion32 with a raw value.
/// \since 1.0
///
PackedVersion32(uint32_t rawVersion) : _version(rawVersion) {}
///
- /// \brief Construct a PackedVersion32 with the provided major, minor, and
+ /// Construct a PackedVersion32 with the provided major, minor, and
/// patch version number.
/// \since 1.0
///
@@ -61,21 +61,21 @@
: _version((major << 16) | ((minor & 0xff) << 8) | (patch & 0xff)) {}
///
- /// \brief Get the major version number.
+ /// Get the major version number.
/// \return The major version number as unsigned integer.
/// \since 1.0
///
unsigned getMajor() const { return _version >> 16; }
///
- /// \brief Get the minor version number.
+ /// Get the minor version number.
/// \return The minor version number as unsigned integer.
/// \since 1.0
///
unsigned getMinor() const { return (_version >> 8) & 0xff; }
///
- /// \brief Get the patch version number.
+ /// Get the patch version number.
/// \return The patch version number as unsigned integer.
/// \since 1.0
///
diff --git a/lib/TBDGen/tapi/Platform.cpp b/lib/TBDGen/tapi/Platform.cpp
index 5df905b..2022634 100644
--- a/lib/TBDGen/tapi/Platform.cpp
+++ b/lib/TBDGen/tapi/Platform.cpp
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief Implements platform specific helper functions.
+/// Implements platform specific helper functions.
///
//===----------------------------------------------------------------------===//
diff --git a/lib/TBDGen/tapi/Platform.h b/lib/TBDGen/tapi/Platform.h
index fb439ff..0c7c1b6 100644
--- a/lib/TBDGen/tapi/Platform.h
+++ b/lib/TBDGen/tapi/Platform.h
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief Defines the platform enum.
+/// Defines the platform enum.
///
//===----------------------------------------------------------------------===//
diff --git a/lib/TBDGen/tapi/Registry.cpp b/lib/TBDGen/tapi/Registry.cpp
index 988401b..5be845b 100644
--- a/lib/TBDGen/tapi/Registry.cpp
+++ b/lib/TBDGen/tapi/Registry.cpp
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief Implements the TAPI Registry.
+/// Implements the TAPI Registry.
///
//===----------------------------------------------------------------------===//
diff --git a/lib/TBDGen/tapi/Registry.h b/lib/TBDGen/tapi/Registry.h
index 76e5ff0..068e159 100644
--- a/lib/TBDGen/tapi/Registry.h
+++ b/lib/TBDGen/tapi/Registry.h
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief The TAPI registry keeps track of the supported file formats.
+/// The TAPI registry keeps track of the supported file formats.
///
//===----------------------------------------------------------------------===//
diff --git a/lib/TBDGen/tapi/STLExtras.h b/lib/TBDGen/tapi/STLExtras.h
index e2ce022..4377916 100644
--- a/lib/TBDGen/tapi/STLExtras.h
+++ b/lib/TBDGen/tapi/STLExtras.h
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief Simplify common uses cases of C++ code.
+/// Simplify common uses cases of C++ code.
///
//===----------------------------------------------------------------------===//
diff --git a/lib/TBDGen/tapi/Symbol.h b/lib/TBDGen/tapi/Symbol.h
index 740bdeb..2914dc0 100644
--- a/lib/TBDGen/tapi/Symbol.h
+++ b/lib/TBDGen/tapi/Symbol.h
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief Defines a symbol.
+/// Defines a symbol.
/// \since 1.0
///
//===----------------------------------------------------------------------===//
@@ -27,23 +27,23 @@
TAPI_NAMESPACE_V1_BEGIN
///
-/// \brief Symbol flags.
+/// Symbol flags.
/// \since 1.0
///
enum class SymbolFlags : unsigned {
- /// \brief No flags
+ /// No flags
/// \since 1.0
None = 0,
- /// \brief Thread-local value symbol
+ /// Thread-local value symbol
/// \since 1.0
ThreadLocalValue = 1U << 0,
- /// \brief Weak defined symbol
+ /// Weak defined symbol
/// \since 1.0
WeakDefined = 1U << 1,
- /// \brief Weak referenced symbol
+ /// Weak referenced symbol
/// \since 1.0
WeakReferenced = 1U << 2,
};
@@ -55,7 +55,7 @@
}
///
-/// \brief Provides query methods for symbols.
+/// Provides query methods for symbols.
/// \since 1.0
///
class TAPI_PUBLIC Symbol {
@@ -65,21 +65,21 @@
: _name(std::forward<Tp>(name)), _flags(flags) {}
///
- /// \brief Get the symbol name as string.
+ /// Get the symbol name as string.
/// \return A string with the symbol name.
/// \since 1.0
///
inline const std::string &getName() const noexcept { return _name; }
///
- /// \brief Obtain the symbol flags.
+ /// Obtain the symbol flags.
/// \return Returns the symbol flags.
/// \since 1.0
///
inline SymbolFlags getFlags() const noexcept { return _flags; }
///
- /// \brief Query if the symbol is thread-local.
+ /// Query if the symbol is thread-local.
/// \return True if the symbol is a thread-local value, false otherwise.
/// \since 1.0
///
@@ -89,7 +89,7 @@
}
///
- /// \brief Query if the symbol is weak defined.
+ /// Query if the symbol is weak defined.
/// \return True if the symbol is weak defined, false otherwise.
/// \since 1.0
///
@@ -98,7 +98,7 @@
}
///
- /// \brief Query if the symbol is weak referenced.
+ /// Query if the symbol is weak referenced.
/// \return True if the symbol is weak referenced, false otherwise.
/// \since 1.0
///
diff --git a/lib/TBDGen/tapi/TapiError.cpp b/lib/TBDGen/tapi/TapiError.cpp
index 657233c..9bf1bc5 100644
--- a/lib/TBDGen/tapi/TapiError.cpp
+++ b/lib/TBDGen/tapi/TapiError.cpp
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief Implements TAPI Error.
+/// Implements TAPI Error.
///
//===----------------------------------------------------------------------===//
diff --git a/lib/TBDGen/tapi/TapiError.h b/lib/TBDGen/tapi/TapiError.h
index cf1e3df..6a66381 100644
--- a/lib/TBDGen/tapi/TapiError.h
+++ b/lib/TBDGen/tapi/TapiError.h
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief Define TAPI specific error codes.
+/// Define TAPI specific error codes.
///
//===----------------------------------------------------------------------===//
diff --git a/lib/TBDGen/tapi/TextStub_v3.cpp b/lib/TBDGen/tapi/TextStub_v3.cpp
index 9ac914b..a1bf4f2 100644
--- a/lib/TBDGen/tapi/TextStub_v3.cpp
+++ b/lib/TBDGen/tapi/TextStub_v3.cpp
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief Implements the text stub file (TBD v3) reader/writer.
+/// Implements the text stub file (TBD v3) reader/writer.
///
//===----------------------------------------------------------------------===//
diff --git a/lib/TBDGen/tapi/TextStub_v3.h b/lib/TBDGen/tapi/TextStub_v3.h
index 49d4b1e..3351c69 100644
--- a/lib/TBDGen/tapi/TextStub_v3.h
+++ b/lib/TBDGen/tapi/TextStub_v3.h
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief Defines the content of a text stub v3 file.
+/// Defines the content of a text stub v3 file.
///
//===----------------------------------------------------------------------===//
diff --git a/lib/TBDGen/tapi/Version.h b/lib/TBDGen/tapi/Version.h
index 3492c0b..e8c4817 100644
--- a/lib/TBDGen/tapi/Version.h
+++ b/lib/TBDGen/tapi/Version.h
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief Access the TAPI version information.
+/// Access the TAPI version information.
/// \since 1.0
///
//===----------------------------------------------------------------------===//
@@ -32,7 +32,7 @@
namespace tapi {
///
-/// \brief Access to version related information about the TAPI dynamic library.
+/// Access to version related information about the TAPI dynamic library.
/// \since 1.0
///
class TAPI_PUBLIC Version {
@@ -43,42 +43,42 @@
///
///
- /// \brief Get the major version number.
+ /// Get the major version number.
/// \return The major version number as unsigned integer.
/// \since 1.0
///
static unsigned getMajor() noexcept;
///
- /// \brief Get the minor version number.
+ /// Get the minor version number.
/// \return The minor version number as unsigned integer.
/// \since 1.0
///
static unsigned getMinor() noexcept;
///
- /// \brief Get the patch version number.
+ /// Get the patch version number.
/// \return The patch version as unsigned integer.
/// \since 1.0
///
static unsigned getPatch() noexcept;
///
- /// \brief Get the library version as string.
+ /// Get the library version as string.
/// \return A string with the version number.
/// \since 1.0
///
static std::string getAsString() noexcept;
///
- /// \brief Get the full library name and version as string.
+ /// Get the full library name and version as string.
/// \return A string with the program name and version number.
/// \since 1.0
///
static std::string getFullVersionAsString() noexcept;
///
- /// \brief Check if the current version is at least the specified version or
+ /// Check if the current version is at least the specified version or
/// greater.
/// \param[in] major The major version number to compare against.
/// \param[in] minor The minor version number to compare against.
diff --git a/lib/TBDGen/tapi/XPI.cpp b/lib/TBDGen/tapi/XPI.cpp
index 6ce7e86..bf31576 100644
--- a/lib/TBDGen/tapi/XPI.cpp
+++ b/lib/TBDGen/tapi/XPI.cpp
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief Implements the XPI set
+/// Implements the XPI set
///
//===----------------------------------------------------------------------===//
diff --git a/lib/TBDGen/tapi/XPI.h b/lib/TBDGen/tapi/XPI.h
index b0789d40..e7a3dec 100644
--- a/lib/TBDGen/tapi/XPI.h
+++ b/lib/TBDGen/tapi/XPI.h
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief Defines XPI - API, SPI, etc
+/// Defines XPI - API, SPI, etc
///
//===----------------------------------------------------------------------===//
@@ -39,7 +39,7 @@
using SymbolFlags = tapi::v1::SymbolFlags;
-/// \brief Helper method to create the symbol flags from the XPI flags.
+/// Helper method to create the symbol flags from the XPI flags.
inline SymbolFlags operator|=(SymbolFlags &lhs,
const SymbolFlags &rhs) noexcept {
lhs = static_cast<SymbolFlags>(static_cast<unsigned>(lhs) |
@@ -47,7 +47,7 @@
return lhs;
}
-/// \brief The different XPI kinds.
+/// The different XPI kinds.
enum class XPIKind : unsigned {
GlobalSymbol,
ObjectiveCClass,
@@ -58,7 +58,7 @@
ObjCProtocol,
};
-/// \brief The XPI access permissions/visibility.
+/// The XPI access permissions/visibility.
enum class XPIAccess : unsigned {
Unknown,
Exported,
@@ -70,13 +70,13 @@
class XPI {
protected:
- /// \brief Construct an XPI - the constructor should only be called by a
+ /// Construct an XPI - the constructor should only be called by a
/// sub-class.
XPI(XPIKind kind, StringRef name, XPIAccess access,
SymbolFlags flags = SymbolFlags::None)
: _name(name), _kind(kind), _access(access), _flags(flags) {}
- /// \brief Construct an XPI - the constructor should only be called by a
+ /// Construct an XPI - the constructor should only be called by a
/// sub-class.
XPI(XPIKind kind, StringRef name, XPIAccess access, Architecture arch,
AvailabilityInfo &info)
@@ -197,13 +197,13 @@
ArchitectureSet _archs{};
protected:
- /// \brief The kind of xpi.
+ /// The kind of xpi.
XPIKind _kind;
- /// \brief The access permission/visibility of this xpi.
+ /// The access permission/visibility of this xpi.
XPIAccess _access;
- /// \brief Hoisted GlobalSymbol flags.
+ /// Hoisted GlobalSymbol flags.
SymbolFlags _flags;
};
diff --git a/lib/TBDGen/tapi/XPISet.cpp b/lib/TBDGen/tapi/XPISet.cpp
index fef41a9..f090d16 100644
--- a/lib/TBDGen/tapi/XPISet.cpp
+++ b/lib/TBDGen/tapi/XPISet.cpp
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief Implements the XPI set
+/// Implements the XPI set
///
//===----------------------------------------------------------------------===//
diff --git a/lib/TBDGen/tapi/XPISet.h b/lib/TBDGen/tapi/XPISet.h
index 1aab56c..3e155bd 100644
--- a/lib/TBDGen/tapi/XPISet.h
+++ b/lib/TBDGen/tapi/XPISet.h
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief Defines the XPI Set - A set of API, SPI, etc
+/// Defines the XPI Set - A set of API, SPI, etc
///
//===----------------------------------------------------------------------===//
diff --git a/lib/TBDGen/tapi/YAML.cpp b/lib/TBDGen/tapi/YAML.cpp
index 64d8b63..e4798af 100644
--- a/lib/TBDGen/tapi/YAML.cpp
+++ b/lib/TBDGen/tapi/YAML.cpp
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief Implements common YAML mappings
+/// Implements common YAML mappings
///
//===----------------------------------------------------------------------===//
diff --git a/lib/TBDGen/tapi/YAML.h b/lib/TBDGen/tapi/YAML.h
index 731c6e0..0a0f474 100644
--- a/lib/TBDGen/tapi/YAML.h
+++ b/lib/TBDGen/tapi/YAML.h
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief Defines common YAML mappings
+/// Defines common YAML mappings
///
//===----------------------------------------------------------------------===//
diff --git a/lib/TBDGen/tapi/YAMLReaderWriter.cpp b/lib/TBDGen/tapi/YAMLReaderWriter.cpp
index d7f710a..0268f67 100644
--- a/lib/TBDGen/tapi/YAMLReaderWriter.cpp
+++ b/lib/TBDGen/tapi/YAMLReaderWriter.cpp
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief Implements the YAML reader/writer.
+/// Implements the YAML reader/writer.
///
//===----------------------------------------------------------------------===//
diff --git a/lib/TBDGen/tapi/YAMLReaderWriter.h b/lib/TBDGen/tapi/YAMLReaderWriter.h
index 6ec24b4..a91db62 100644
--- a/lib/TBDGen/tapi/YAMLReaderWriter.h
+++ b/lib/TBDGen/tapi/YAMLReaderWriter.h
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief Defines the YAML Reader/Writer.
+/// Defines the YAML Reader/Writer.
///
//===----------------------------------------------------------------------===//
diff --git a/lib/TBDGen/tapi/tapi.h b/lib/TBDGen/tapi/tapi.h
index 0c85a6d..77c8294 100644
--- a/lib/TBDGen/tapi/tapi.h
+++ b/lib/TBDGen/tapi/tapi.h
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief This is the umbrella header for the TAPI C++ Library Interface.
+/// This is the umbrella header for the TAPI C++ Library Interface.
/// \since 1.0
///
//===----------------------------------------------------------------------===//
diff --git a/stdlib/public/SDK/XCTest/XCTestCaseAdditions.mm b/stdlib/public/SDK/XCTest/XCTestCaseAdditions.mm
index c3cc74e..40dcfdc 100644
--- a/stdlib/public/SDK/XCTest/XCTestCaseAdditions.mm
+++ b/stdlib/public/SDK/XCTest/XCTestCaseAdditions.mm
@@ -55,7 +55,7 @@
}
-/// \brief Demangle a mangled class name into module+class.
+/// Demangle a mangled class name into module+class.
/// Returns true if the name was successfully decoded.
/// On success, *outModule and *outClass must be freed with free().
/// FIXME: this should be replaced by a real demangler
diff --git a/stdlib/public/core/BridgeObjectiveC.swift b/stdlib/public/core/BridgeObjectiveC.swift
index 44a2cd3..7dc8996 100644
--- a/stdlib/public/core/BridgeObjectiveC.swift
+++ b/stdlib/public/core/BridgeObjectiveC.swift
@@ -374,10 +374,9 @@
/// `Pointee`.
@inlinable
public var pointee: Pointee {
- /// Retrieve the value the pointer points to.
- @_transparent get {
+ @_transparent _read {
// We can do a strong load normally.
- return UnsafePointer(self).pointee
+ yield UnsafePointer(self).pointee
}
/// Set the value the pointer points to, copying over the previous value.
///
@@ -414,9 +413,9 @@
@inlinable // unsafe-performance
public subscript(i: Int) -> Pointee {
@_transparent
- get {
+ _read {
// We can do a strong load normally.
- return (UnsafePointer<Pointee>(self) + i).pointee
+ yield ((UnsafePointer<Pointee>(self) + i).pointee)
}
}
diff --git a/stdlib/public/core/MigrationSupport.swift b/stdlib/public/core/MigrationSupport.swift
index b553c81..a0fd8b8 100644
--- a/stdlib/public/core/MigrationSupport.swift
+++ b/stdlib/public/core/MigrationSupport.swift
@@ -157,150 +157,6 @@
@available(*, unavailable, renamed: "Optional")
public typealias ImplicitlyUnwrappedOptional<Wrapped> = Optional<Wrapped>
-@available(swift, deprecated: 3.1, obsoleted: 4.0, message: "Use FixedWidthInteger protocol instead")
-public typealias BitwiseOperations = _BitwiseOperations
-
-public protocol _BitwiseOperations {
- static func & (lhs: Self, rhs: Self) -> Self
- static func | (lhs: Self, rhs: Self) -> Self
- static func ^ (lhs: Self, rhs: Self) -> Self
- static prefix func ~ (x: Self) -> Self
- static var allZeros: Self { get }
-}
-
-extension _BitwiseOperations {
- @available(swift, obsoleted: 4.1)
- public static func |= (lhs: inout Self, rhs: Self) {
- lhs = lhs | rhs
- }
-
- @available(swift, obsoleted: 4.1)
- public static func &= (lhs: inout Self, rhs: Self) {
- lhs = lhs & rhs
- }
-
- @available(swift, obsoleted: 4.1)
- public static func ^= (lhs: inout Self, rhs: Self) {
- lhs = lhs ^ rhs
- }
-}
-
-extension FloatingPoint {
- @available(swift, obsoleted: 4, message: "Please use operators instead.")
- public func negated() -> Self {
- return -self
- }
-
- @available(swift, obsoleted: 4, message: "Please use operators instead.")
- public func adding(_ other: Self) -> Self {
- return self + other
- }
-
- @available(swift, obsoleted: 4, message: "Please use operators instead.")
- public mutating func add(_ other: Self) {
- self += other
- }
-
- @available(swift, obsoleted: 4, message: "Please use operators instead.")
- public func subtracting(_ other: Self) -> Self {
- return self - other
- }
-
- @available(swift, obsoleted: 4, message: "Please use operators instead.")
- public mutating func subtract(_ other: Self) {
- self -= other
- }
-
- @available(swift, obsoleted: 4, message: "Please use operators instead.")
- public func multiplied(by other: Self) -> Self {
- return self * other
- }
-
- @available(swift, obsoleted: 4, message: "Please use operators instead.")
- public mutating func multiply(by other: Self) {
- self *= other
- }
-
- @available(swift, obsoleted: 4, message: "Please use operators instead.")
- public func divided(by other: Self) -> Self {
- return self / other
- }
-
- @available(swift, obsoleted: 4, message: "Please use operators instead.")
- public mutating func divide(by other: Self) {
- self /= other
- }
-}
-
-extension FloatingPoint {
- @available(*, unavailable, message: "Use bitPattern property instead")
- public func _toBitPattern() -> UInt {
- fatalError("unavailable")
- }
-
- @available(*, unavailable, message: "Use init(bitPattern:) instead")
- public static func _fromBitPattern(_ bits: UInt) -> Self {
- fatalError("unavailable")
- }
-}
-
-extension BinaryFloatingPoint {
- @available(*, unavailable, renamed: "isSignalingNaN")
- public var isSignaling: Bool {
- fatalError("unavailable")
- }
-
- @available(*, unavailable, renamed: "nan")
- public var NaN: Bool {
- fatalError("unavailable")
- }
- @available(*, unavailable, renamed: "nan")
- public var quietNaN: Bool {
- fatalError("unavailable")
- }
-}
-
-@available(*, unavailable, renamed: "FloatingPoint")
-public typealias FloatingPointType = FloatingPoint
-
-// Swift 3 compatibility APIs
-@available(swift, obsoleted: 4, renamed: "BinaryInteger")
-public typealias Integer = BinaryInteger
-
-@available(swift, obsoleted: 4, renamed: "BinaryInteger")
-public typealias IntegerArithmetic = BinaryInteger
-
-@available(swift, obsoleted: 4, message: "Please use 'SignedNumeric & Comparable' instead.")
-public typealias SignedNumber = SignedNumeric & Comparable
-
-@available(swift, obsoleted: 4, message: "Please use 'SignedNumeric & Comparable' instead.")
-public typealias AbsoluteValuable = SignedNumeric & Comparable
-
-@available(swift, obsoleted: 4, renamed: "SignedInteger")
-public typealias _SignedInteger = SignedInteger
-
-extension SignedNumeric where Self : Comparable {
- @available(swift, obsoleted: 4, message: "Please use the 'abs(_:)' free function.")
- @_transparent
- public static func abs(_ x: Self) -> Self {
- return Swift.abs(x)
- }
-}
-
-extension BinaryInteger {
- @available(swift, obsoleted: 4)
- public func toIntMax() -> Int64 {
- return Int64(self)
- }
-}
-
-extension UnsignedInteger {
- @available(swift, obsoleted: 4)
- public func toUIntMax() -> UInt64 {
- return UInt64(self)
- }
-}
-
extension Range where Bound: Strideable, Bound.Stride : SignedInteger {
/// Now that Range is conditionally a collection when Bound: Strideable,
/// CountableRange is no longer needed. This is a deprecated initializer
@@ -321,13 +177,6 @@
}
}
-extension _ExpressibleByColorLiteral {
- @available(swift, deprecated: 3.2, obsoleted: 4.0, message: "This initializer is only meant to be used by color literals")
- public init(colorLiteralRed red: Float, green: Float, blue: Float, alpha: Float) {
- self.init(_colorLiteralRed: red, green: green, blue: blue, alpha: alpha)
- }
-}
-
@available(swift, deprecated: 5.0, renamed: "KeyValuePairs")
public typealias DictionaryLiteral<Key, Value> = KeyValuePairs<Key, Value>
@@ -354,43 +203,6 @@
}
}
-extension FloatingPoint {
- @available(swift, deprecated: 3.1, obsoleted: 4.0, message: "Please use the `abs(_:)` free function")
- public static func abs(_ x: Self) -> Self {
- return x.magnitude
- }
-}
-
-extension FixedWidthInteger {
- /// The empty bitset.
- @available(swift, deprecated: 3.1, obsoleted: 4.0, message: "Use 0")
- public static var allZeros: Self { return 0 }
-
- @available(*, unavailable, message:
- "Use operators or addingReportingOverflow instead.")
- public func unsafeAdding(_ other: Self) -> Self {
- fatalError("unavailable")
- }
-
- @available(*, unavailable, message:
- "Use operators or subtractingReportingOverflow instead.")
- public func unsafeSubtracting(_ other: Self) -> Self {
- fatalError("unavailable")
- }
-
- @available(*, unavailable, message:
- "Use operators or multipliedReportingOverflow(by:) instead.")
- public func unsafeMultiplied(by other: Self) -> Self {
- fatalError("unavailable")
- }
-
- @available(*, unavailable, message:
- "Use operators or dividedReportingOverflow(by:) instead.")
- public func unsafeDivided(by other: Self) -> Self {
- fatalError("unavailable")
- }
-}
-
extension String {
/// A view of a string's contents as a collection of characters.
///
@@ -407,12 +219,8 @@
/// characters, so this type is now just an alias for String.
@available(swift, deprecated: 3.2, obsoleted: 5.0, message: "Please use String directly")
public var characters: String {
- get {
- return self
- }
- set {
- self = newValue
- }
+ get { return self }
+ set { self = newValue }
}
/// Applies the given closure to a mutable view of the string's characters.
@@ -426,42 +234,8 @@
) -> R {
return body(&self)
}
-
- @available(swift, deprecated: 3.2, obsoleted: 4.0)
- public init?(_ utf16: UTF16View) {
- Builtin.unreachable()
- }
-
- @available(swift, deprecated: 3.2, message: "Failable initializer was removed in Swift 4. When upgrading to Swift 4, please use non-failable String.init(_:UTF8View)")
- @available(swift, obsoleted: 4.0, message: "Please use non-failable String.init(_:UTF8View) instead")
- public init?(_ utf8: UTF8View) {
- Builtin.unreachable()
- }
}
-extension String { // RangeReplaceableCollection
- // The defaulted argument prevents this initializer from satisfies the
- // LosslessStringConvertible conformance. You can satisfy a protocol
- // requirement with something that's not yet available, but not with
- // something that has become unavailable. Without this, the code won't
- // compile as Swift 4.
- @available(swift, obsoleted: 4, message: "String.init(_:String) is no longer failable")
- public init?(_ other: String, obsoletedInSwift4: () = ()) {
- Builtin.unreachable()
- }
-}
-
-@available(*, unavailable, renamed: "TextOutputStream")
-public typealias OutputStreamType = TextOutputStream
-
-extension TextOutputStreamable {
- @available(*, unavailable, renamed: "write(to:)")
- public func writeTo<Target : TextOutputStream>(_ target: inout Target) {
- Builtin.unreachable()
- }
-}
-
-
extension String.UnicodeScalarView : _CustomPlaygroundQuickLookable {
@available(swift, deprecated: 4.2/*, obsoleted: 5.0*/, message: "UnicodeScalarView.customPlaygroundQuickLook will be removed in Swift 5.0")
public var customPlaygroundQuickLook: _PlaygroundQuickLook {
@@ -469,88 +243,6 @@
}
}
-// backward compatibility for index interchange.
-extension String.UnicodeScalarView {
- @available(swift, obsoleted: 4.0, message: "Any String view index conversion can fail in Swift 4; please unwrap the optional index")
- public func index(after i: Index?) -> Index {
- Builtin.unreachable()
- }
- @available(swift, obsoleted: 4.0, message: "Any String view index conversion can fail in Swift 4; please unwrap the optional index")
- public func index(_ i: Index?, offsetBy n: Int) -> Index {
- Builtin.unreachable()
- }
- @available(swift, obsoleted: 4.0, message: "Any String view index conversion can fail in Swift 4; please unwrap the optional indices")
- public func distance(from i: Index?, to j: Index?) -> Int {
- Builtin.unreachable()
- }
- @available(swift, obsoleted: 4.0, message: "Any String view index conversion can fail in Swift 4; please unwrap the optional index")
- public subscript(i: Index?) -> Unicode.Scalar {
- Builtin.unreachable()
- }
-}
-
-// backward compatibility for index interchange.
-extension String.UTF16View {
- @available(swift, obsoleted: 4.0, message: "Any String view index conversion can fail in Swift 4; please unwrap the optional index")
- public func index(after i: Index?) -> Index {
- Builtin.unreachable()
- }
- @available(swift, obsoleted: 4.0, message: "Any String view index conversion can fail in Swift 4; please unwrap the optional index")
- public func index(_ i: Index?, offsetBy n: Int) -> Index {
- Builtin.unreachable()
- }
- @available(swift, obsoleted: 4.0, message: "Any String view index conversion can fail in Swift 4; please unwrap the optional indices")
- public func distance(from i: Index?, to j: Index?) -> Int {
- Builtin.unreachable()
- }
- @available(swift, obsoleted: 4.0, message: "Any String view index conversion can fail in Swift 4; please unwrap the optional index")
- public subscript(i: Index?) -> Unicode.UTF16.CodeUnit {
- Builtin.unreachable()
- }
-}
-
-// backward compatibility for index interchange.
-extension String.UTF8View {
- @available(swift, obsoleted: 4.0, message: "Any String view index conversion can fail in Swift 4; please unwrap the optional index")
- public func index(after i: Index?) -> Index {
- Builtin.unreachable()
- }
- @available(swift, obsoleted: 4.0, message: "Any String view index conversion can fail in Swift 4; please unwrap the optional index")
- public func index(_ i: Index?, offsetBy n: Int) -> Index {
- Builtin.unreachable()
- }
- @available(swift, obsoleted: 4.0, message: "Any String view index conversion can fail in Swift 4; please unwrap the optional indices")
- public func distance(from i: Index?, to j: Index?) -> Int {
- Builtin.unreachable()
- }
- @available(swift, obsoleted: 4.0, message: "Any String view index conversion can fail in Swift 4; please unwrap the optional index")
- public subscript(i: Index?) -> Unicode.UTF8.CodeUnit {
- Builtin.unreachable()
- }
-}
-
-//===--- String/Substring Slicing Support ---------------------------------===//
-/// In Swift 3.2, in the absence of type context,
-///
-/// someString[someString.startIndex..<someString.endIndex]
-///
-/// was deduced to be of type `String`. Therefore have a more-specific
-/// Swift-3-only `subscript` overload on `String` (and `Substring`) that
-/// continues to produce `String`.
-extension String {
- @available(swift, obsoleted: 4)
- public subscript(bounds: Range<Index>) -> String {
- _boundsCheck(bounds)
- return String(self[bounds])
- }
-
- @available(swift, obsoleted: 4)
- public subscript(bounds: ClosedRange<Index>) -> String {
- _boundsCheck(bounds)
- return String(self[bounds])
- }
-}
-
//===--- Slicing Support --------------------------------------------------===//
// In Swift 3.2, in the absence of type context,
//
@@ -573,47 +265,6 @@
}
}
-//===--- Slicing Support --------------------------------------------------===//
-// In Swift 3.2, in the absence of type context,
-//
-// someString.utf16[someString.utf16.startIndex..<someString.utf16.endIndex]
-//
-// was deduced to be of type `String.UTF16View`. Provide a more-specific
-// Swift-3-only `subscript` overload that continues to produce
-// `String.UTF16View`.
-extension String.UTF16View {
- @available(swift, obsoleted: 4)
- public subscript(bounds: Range<Index>) -> String.UTF16View {
- Builtin.unreachable()
- }
-
- @available(swift, obsoleted: 4)
- public subscript(bounds: ClosedRange<Index>) -> String.UTF16View {
- Builtin.unreachable()
- }
-}
-
-//===--- Slicing Support --------------------------------------------------===//
-/// In Swift 3.2, in the absence of type context,
-///
-/// someString.utf8[someString.utf8.startIndex..<someString.utf8.endIndex]
-///
-/// was deduced to be of type `String.UTF8View`. Provide a more-specific
-/// Swift-3-only `subscript` overload that continues to produce
-/// `String.UTF8View`.
-extension String.UTF8View {
- @available(swift, obsoleted: 4)
- public subscript(bounds: Range<Index>) -> String.UTF8View {
- Builtin.unreachable()
- }
-
-
- @available(swift, obsoleted: 4)
- public subscript(bounds: ClosedRange<Index>) -> String.UTF8View {
- Builtin.unreachable()
- }
-}
-
// @available(swift,deprecated: 5.0, renamed: "Unicode.UTF8")
public typealias UTF8 = Unicode.UTF8
// @available(swift, deprecated: 5.0, renamed: "Unicode.UTF16")
@@ -624,22 +275,6 @@
public typealias UnicodeScalar = Unicode.Scalar
-// popFirst() is only present when a collection is its own subsequence. This was
-// dropped in Swift 4.
-extension String {
- @available(swift, deprecated: 3.2, obsoleted: 4, message: "Please use 'first', 'dropFirst()', or 'Substring.popFirst()'.")
- public mutating func popFirst() -> String.Element? {
- Builtin.unreachable()
- }
-}
-
-extension String.UnicodeScalarView {
- @available(swift, deprecated: 3.2, obsoleted: 4, message: "Please use 'first', 'dropFirst()', or 'Substring.UnicodeScalarView.popFirst()'.")
- public mutating func popFirst() -> String.UnicodeScalarView.Element? {
- Builtin.unreachable()
- }
-}
-
extension String.UTF16View : _CustomPlaygroundQuickLookable {
@available(swift, deprecated: 4.2/*, obsoleted: 5.0*/, message: "UTF16View.customPlaygroundQuickLook will be removed in Swift 5.0")
public var customPlaygroundQuickLook: _PlaygroundQuickLook {
@@ -654,15 +289,6 @@
}
}
-extension StringProtocol {
- @available(swift, deprecated: 3.2, obsoleted: 4.0, renamed: "UTF8View.Index")
- public typealias UTF8Index = UTF8View.Index
- @available(swift, deprecated: 3.2, obsoleted: 4.0, renamed: "UTF16View.Index")
- public typealias UTF16Index = UTF16View.Index
- @available(swift, deprecated: 3.2, obsoleted: 4.0, renamed: "UnicodeScalarView.Index")
- public typealias UnicodeScalarIndex = UnicodeScalarView.Index
-}
-
extension Substring {
/// A view of a string's contents as a collection of characters.
///
@@ -787,38 +413,6 @@
}
}
-extension Strideable {
- @available(swift, deprecated: 3, obsoleted: 4, message: "Please use explicit type conversions or Strideable methods for mixed-type arithmetics.")
- public static func + (lhs: Self, rhs: Self.Stride) -> Self {
- return lhs.advanced(by: rhs)
- }
-
- @available(swift, deprecated: 3, obsoleted: 4, message: "Please use explicit type conversions or Strideable methods for mixed-type arithmetics.")
- public static func + (lhs: Self.Stride, rhs: Self) -> Self {
- return rhs.advanced(by: lhs)
- }
-
- @available(swift, deprecated: 3, obsoleted: 4, message: "Please use explicit type conversions or Strideable methods for mixed-type arithmetics.")
- public static func - (lhs: Self, rhs: Self.Stride) -> Self {
- return lhs.advanced(by: -rhs)
- }
-
- @available(swift, deprecated: 3, obsoleted: 4, message: "Please use explicit type conversions or Strideable methods for mixed-type arithmetics.")
- public static func - (lhs: Self, rhs: Self) -> Self.Stride {
- return rhs.distance(to: lhs)
- }
-
- @available(swift, deprecated: 3, obsoleted: 4, message: "Please use explicit type conversions or Strideable methods for mixed-type arithmetics.")
- public static func += (lhs: inout Self, rhs: Self.Stride) {
- lhs = lhs.advanced(by: rhs)
- }
-
- @available(swift, deprecated: 3, obsoleted: 4, message: "Please use explicit type conversions or Strideable methods for mixed-type arithmetics.")
- public static func -= (lhs: inout Self, rhs: Self.Stride) {
- lhs = lhs.advanced(by: -rhs)
- }
-}
-
extension UnsafeMutableRawPointer {
@available(*, unavailable, renamed: "init(mutating:)")
public init(_ from : UnsafeRawPointer) { Builtin.unreachable() }
@@ -1013,45 +607,6 @@
}
}
-extension String.Index {
- @available(swift, deprecated: 3.2, obsoleted: 4.0)
- public init(_position: Int) {
- self.init(encodedOffset: _position)
- }
-
- @available(swift, deprecated: 3.2, obsoleted: 4.0)
- public init(_codeUnitOffset: Int) {
- self.init(encodedOffset: _codeUnitOffset)
- }
-
- @available(swift, deprecated: 3.2, obsoleted: 4.0)
- public var _utf16Index: Int {
- return self.encodedOffset
- }
-
- @available(swift, deprecated: 3.2, obsoleted: 4.0)
- public var _offset: Int {
- return self.encodedOffset
- }
-}
-
-// backward compatibility for index interchange.
-extension Optional where Wrapped == String.Index {
- @available(swift, obsoleted: 4.0, message: "Any String view index conversion can fail in Swift 4; please unwrap the optional indices")
- public static func ..<(
- lhs: String.Index?, rhs: String.Index?
- ) -> Range<String.Index> {
- return lhs! ..< rhs!
- }
-
- @available(swift, obsoleted: 4.0, message: "Any String view index conversion can fail in Swift 4; please unwrap the optional indices")
- public static func ...(
- lhs: String.Index?, rhs: String.Index?
- ) -> ClosedRange<String.Index> {
- return lhs! ... rhs!
- }
-}
-
extension Zip2Sequence {
@available(swift, deprecated: 4.2, obsoleted: 5.0, renamed: "Sequence1.Iterator")
public typealias Stream1 = Sequence1.Iterator
@@ -1106,78 +661,6 @@
case _raw([UInt8], String)
}
-// Maintain old `keys` and `values` types in Swift 3 mode.
-extension Dictionary {
- /// A collection containing just the keys of the dictionary.
- ///
- /// When iterated over, keys appear in this collection in the same order as
- /// they occur in the dictionary's key-value pairs. Each key in the keys
- /// collection has a unique value.
- ///
- /// let countryCodes = ["BR": "Brazil", "GH": "Ghana", "JP": "Japan"]
- /// print(countryCodes)
- /// // Prints "["BR": "Brazil", "JP": "Japan", "GH": "Ghana"]"
- ///
- /// for k in countryCodes.keys {
- /// print(k)
- /// }
- /// // Prints "BR"
- /// // Prints "JP"
- /// // Prints "GH"
- @available(swift, obsoleted: 4.0)
- public var keys: LazyMapCollection<[Key: Value], Key> {
- return self.lazy.map { $0.key }
- }
-
- /// A collection containing just the values of the dictionary.
- ///
- /// When iterated over, values appear in this collection in the same order as
- /// they occur in the dictionary's key-value pairs.
- ///
- /// let countryCodes = ["BR": "Brazil", "GH": "Ghana", "JP": "Japan"]
- /// print(countryCodes)
- /// // Prints "["BR": "Brazil", "JP": "Japan", "GH": "Ghana"]"
- ///
- /// for v in countryCodes.values {
- /// print(v)
- /// }
- /// // Prints "Brazil"
- /// // Prints "Japan"
- /// // Prints "Ghana"
- @available(swift, obsoleted: 4.0)
- public var values: LazyMapCollection<[Key: Value], Value> {
- return self.lazy.map { $0.value }
- }
-
- @available(swift, obsoleted: 4.0)
- public __consuming func filter(
- _ isIncluded: (Element) throws -> Bool, obsoletedInSwift4: () = ()
- ) rethrows -> [Element] {
- var result: [Element] = []
- for x in self {
- if try isIncluded(x) {
- result.append(x)
- }
- }
- return result
- }
-}
-
-extension Set {
- @available(swift, obsoleted: 4.0)
- public __consuming func filter(
- _ isIncluded: (Element) throws -> Bool, obsoletedInSwift4: () = ()
- ) rethrows -> [Element] {
- var result: [Element] = []
- for x in self {
- if try isIncluded(x) {
- result.append(x)
- }
- }
- return result
- }
-}
-
extension _PlaygroundQuickLook {
/// Creates a new Quick Look for the given instance.
///
diff --git a/stdlib/public/runtime/HeapObject.cpp b/stdlib/public/runtime/HeapObject.cpp
index 02032a4..53179a5 100644
--- a/stdlib/public/runtime/HeapObject.cpp
+++ b/stdlib/public/runtime/HeapObject.cpp
@@ -153,7 +153,7 @@
"Fatal error: Weak reference to stack object\n");
}
-/// \brief Allocate a reference-counted object on the heap that
+/// Allocate a reference-counted object on the heap that
/// occupies <size> bytes of maximally-aligned storage. The object is
/// uninitialized except for its header.
SWIFT_CC(swift) SWIFT_RUNTIME_STDLIB_SPI
diff --git a/stdlib/public/runtime/Metadata.cpp b/stdlib/public/runtime/Metadata.cpp
index a6c93e6..2186353 100644
--- a/stdlib/public/runtime/Metadata.cpp
+++ b/stdlib/public/runtime/Metadata.cpp
@@ -2823,7 +2823,7 @@
/*** Metatypes *************************************************************/
/***************************************************************************/
-/// \brief Find the appropriate value witness table for the given type.
+/// Find the appropriate value witness table for the given type.
static const ValueWitnessTable *
getMetatypeValueWitnesses(const Metadata *instanceType) {
// When metatypes are accessed opaquely, they always have a "thick"
@@ -2862,7 +2862,7 @@
/// The uniquing structure for metatype type metadata.
static SimpleGlobalCache<MetatypeCacheEntry> MetatypeTypes;
-/// \brief Fetch a uniqued metadata for a metatype type.
+/// Fetch a uniqued metadata for a metatype type.
SWIFT_RUNTIME_EXPORT
const MetatypeMetadata *
swift::swift_getMetatypeMetadata(const Metadata *instanceMetadata) {
@@ -2986,7 +2986,7 @@
assert(getNumWitnessTables() == numWitnessTables);
}
-/// \brief Fetch a uniqued metadata for a metatype type.
+/// Fetch a uniqued metadata for a metatype type.
SWIFT_RUNTIME_EXPORT
const ExistentialMetatypeMetadata *
swift::swift_getExistentialMetatypeMetadata(const Metadata *instanceMetadata) {
@@ -3493,7 +3493,7 @@
&protocolRef);
}
-/// \brief Fetch a uniqued metadata for an existential type. The array
+/// Fetch a uniqued metadata for an existential type. The array
/// referenced by \c protocols will be sorted in-place.
const ExistentialTypeMetadata *
swift::swift_getExistentialTypeMetadata(
@@ -3564,7 +3564,7 @@
}
}
-/// \brief Perform a copy-assignment from one existential container to another.
+/// Perform a copy-assignment from one existential container to another.
/// Both containers must be of the same existential type representable with no
/// witness tables.
OpaqueValue *swift::swift_assignExistentialWithCopy0(OpaqueValue *dest,
@@ -3574,7 +3574,7 @@
return Witnesses::assignWithCopy(dest, const_cast<OpaqueValue*>(src), type);
}
-/// \brief Perform a copy-assignment from one existential container to another.
+/// Perform a copy-assignment from one existential container to another.
/// Both containers must be of the same existential type representable with one
/// witness table.
OpaqueValue *swift::swift_assignExistentialWithCopy1(OpaqueValue *dest,
@@ -3584,7 +3584,7 @@
return Witnesses::assignWithCopy(dest, const_cast<OpaqueValue*>(src), type);
}
-/// \brief Perform a copy-assignment from one existential container to another.
+/// Perform a copy-assignment from one existential container to another.
/// Both containers must be of the same existential type representable with the
/// same number of witness tables.
OpaqueValue *swift::swift_assignExistentialWithCopy(OpaqueValue *dest,
diff --git a/stdlib/public/runtime/SwiftObject.mm b/stdlib/public/runtime/SwiftObject.mm
index abea0bf..18ad41e 100644
--- a/stdlib/public/runtime/SwiftObject.mm
+++ b/stdlib/public/runtime/SwiftObject.mm
@@ -102,7 +102,7 @@
#if SWIFT_OBJC_INTEROP
-/// \brief Replacement for ObjC object_isClass(), which is unavailable on
+/// Replacement for ObjC object_isClass(), which is unavailable on
/// deployment targets macOS 10.9 and iOS 7.
static bool objcObjectIsClass(id object) {
// same as object_isClass(object)
@@ -114,7 +114,7 @@
return class_const_cast(_swift_getClassOfAllocated(object));
}
-/// \brief Fetch the ObjC class object associated with the formal dynamic
+/// Fetch the ObjC class object associated with the formal dynamic
/// type of the given (possibly Objective-C) object. The formal
/// dynamic type ignores dynamic subclasses such as those introduced
/// by KVO.
@@ -144,7 +144,7 @@
}
#endif
-/// \brief Fetch the type metadata associated with the formal dynamic
+/// Fetch the type metadata associated with the formal dynamic
/// type of the given (possibly Objective-C) object. The formal
/// dynamic type ignores dynamic subclasses such as those introduced
/// by KVO.
diff --git a/test/ClangImporter/inlinable_bitfields.swift b/test/ClangImporter/inlinable_bitfields.swift
index 14d2db2..5f992f2 100644
--- a/test/ClangImporter/inlinable_bitfields.swift
+++ b/test/ClangImporter/inlinable_bitfields.swift
@@ -2,6 +2,9 @@
// RUN: %target-swift-frontend %clang-importer-sdk %S/Inputs/inlinable_bitfields_other.swift -emit-module -emit-module-path %t/inlinable_bitfields_other.swiftmodule
// RUN: %target-swift-frontend %clang-importer-sdk -I %t %s -emit-ir -disable-llvm-optzns -O | %FileCheck %s -DINT=i%target-ptrsize
+// rdar://46486435
+// REQUIRES: CPU=x86_64
+
import inlinable_bitfields_other
public func g(_ m: MM) -> UInt32 {
@@ -10,4 +13,4 @@
// Just make sure this is a definition and not a declaration...
-// CHECK: define internal i32 @"$ModRM$rm$getter"([[INT]] %.coerce)
+// CHECK: define internal i32 @"$ModRM$rm$getter"
diff --git a/test/Constraints/closures.swift b/test/Constraints/closures.swift
index 0eaff39..894bcc0 100644
--- a/test/Constraints/closures.swift
+++ b/test/Constraints/closures.swift
@@ -747,7 +747,7 @@
func f20371273() {
let x: [Int] = [1, 2, 3, 4]
let y: UInt = 4
- _ = x.filter { ($0 + y) > 42 } // expected-error {{'+' is unavailable}}
+ _ = x.filter { ($0 + y) > 42 } // expected-error {{binary operator '+' cannot be applied to operands of type 'Int' and 'UInt'}} expected-note {{overloads for '+' exist with these partially matching parameter lists: (UInt, UInt), (Int, Int)}}
}
// rdar://problem/42337247
diff --git a/test/Constraints/diagnostics.swift b/test/Constraints/diagnostics.swift
index b1bf0f4..42b1331 100644
--- a/test/Constraints/diagnostics.swift
+++ b/test/Constraints/diagnostics.swift
@@ -708,9 +708,10 @@
func r24251022() {
var a = 1
var b: UInt32 = 2
- _ = a + b // expected-error {{unavailable}}
- a += a + // expected-error {{binary operator '+=' cannot be applied to operands of type 'Int' and 'UInt32'}} expected-note {{overloads for '+=' exist}}
+ _ = a + b // expected-error {{binary operator '+' cannot be applied to operands of type 'Int' and 'UInt32'}} expected-note {{overloads for '+' exist with these partially matching parameter lists: (UInt32, UInt32), (Int, Int)}}
+ a += a + // expected-error {{binary operator '+' cannot be applied to operands of type 'Int' and 'UInt32'}} expected-note {{overloads for '+' exist with these partially matching parameter lists:}}
b
+ a += b // expected-error {{binary operator '+=' cannot be applied to operands of type 'Int' and 'UInt32'}} expected-note {{overloads for '+=' exist with these partially matching parameter lists: (inout UInt32, UInt32), (inout Int, Int)}}
}
func overloadSetResultType(_ a : Int, b : Int) -> Int {
@@ -1183,6 +1184,14 @@
let _ = [i, j, k].reduce(0 as Int?) {
$0 && $1 ? $0! + $1! : ($0 ? $0! : ($1 ? $1! : nil))
+ // expected-error@-1 {{cannot force unwrap value of non-optional type 'Bool'}} {{18-19=}}
+ // expected-error@-2 {{cannot force unwrap value of non-optional type 'Bool'}} {{24-25=}}
+ // expected-error@-3 {{cannot force unwrap value of non-optional type 'Bool'}} {{36-37=}}
+ // expected-error@-4 {{cannot force unwrap value of non-optional type 'Bool'}} {{48-49=}}
+ }
+
+ let _ = [i, j, k].reduce(0 as Int?) {
+ $0 && $1 ? $0 + $1 : ($0 ? $0 : ($1 ? $1 : nil))
// expected-error@-1 {{ambiguous use of operator '+'}}
}
}
diff --git a/test/Constraints/dynamic_lookup.swift b/test/Constraints/dynamic_lookup.swift
index 048902a..9888157 100644
--- a/test/Constraints/dynamic_lookup.swift
+++ b/test/Constraints/dynamic_lookup.swift
@@ -210,7 +210,6 @@
// Checked casts to AnyObject
var p: P = Y()
-// expected-warning @+1 {{forced cast from 'P' to 'AnyObject' always succeeds; did you mean to use 'as'?}}
var obj3 : AnyObject = (p as! AnyObject)! // expected-error{{cannot force unwrap value of non-optional type 'AnyObject'}} {{41-42=}}
// Implicit force of an implicitly unwrapped optional
diff --git a/test/Constraints/optional.swift b/test/Constraints/optional.swift
index 1948c7d..b255778 100644
--- a/test/Constraints/optional.swift
+++ b/test/Constraints/optional.swift
@@ -292,3 +292,13 @@
_ = Q("who")!.foo // Ok
_ = Q?("how") // Ok
}
+
+func rdar45218255(_ i: Int) {
+ struct S<T> {
+ init(_:[T]) {}
+ }
+
+ _ = i! // expected-error {{cannot force unwrap value of non-optional type 'Int'}} {{8-9=}}
+ _ = [i!] // expected-error {{cannot force unwrap value of non-optional type 'Int'}} {{9-10=}}
+ _ = S<Int>([i!]) // expected-error {{cannot force unwrap value of non-optional type 'Int'}} {{16-17=}}
+}
diff --git a/test/DWARFImporter/Inputs/module.modulemap b/test/DWARFImporter/Inputs/module.modulemap
new file mode 100644
index 0000000..a9ef2ed
--- /dev/null
+++ b/test/DWARFImporter/Inputs/module.modulemap
@@ -0,0 +1,4 @@
+module ObjCModule {
+ header "objc-header.h"
+ export *
+}
\ No newline at end of file
diff --git a/test/DWARFImporter/Inputs/objc-header.h b/test/DWARFImporter/Inputs/objc-header.h
new file mode 100644
index 0000000..b87f766
--- /dev/null
+++ b/test/DWARFImporter/Inputs/objc-header.h
@@ -0,0 +1,7 @@
+struct Point {
+ int x, y;
+};
+
+@interface ObjCClass
+- (instancetype)init;
+@end
diff --git a/test/DWARFImporter/basic.swift b/test/DWARFImporter/basic.swift
new file mode 100644
index 0000000..c8fa29d
--- /dev/null
+++ b/test/DWARFImporter/basic.swift
@@ -0,0 +1,32 @@
+// REQUIRES: executable_test
+// REQUIRES: objc_interop
+
+// RUN: %empty-directory(%t)
+
+// RUN: cp %S/Inputs/objc-header.h %S/Inputs/module.modulemap %t
+// RUN: %target-build-swift -emit-executable %s -g -o %t/a.out \
+// RUN: -module-name basic -emit-module -I%t
+// -DOBJC -module-name basic
+// RUN: %lldb-moduleimport-test -verbose -dump-module %t/a.out | %FileCheck %s
+
+// RUN: rm %t/objc-header.h
+// RUN: %lldb-moduleimport-test -verbose -dump-module %t/a.out \
+// RUN: | %FileCheck %s --check-prefix=FAIL
+
+// RUN: %lldb-moduleimport-test -verbose -dump-module %t/a.out \
+// RUN: -enable-dwarf-importer | %FileCheck %s --check-prefix=SWIFTONLY
+
+// CHECK: Importing basic... ok!
+// FAIL: Importing basic... ok!
+// SWIFTONLY: Importing basic... ok!
+import ObjCModule
+
+let pureSwift = Int32(42)
+// FAIL-NOT: var_decl
+// CHECK: var_decl "pureSwift" {{.*}} type='Int32'
+// SWIFTONLY: var_decl "pureSwift" {{.*}} type='Int32'
+
+let point = Point(x: 1, y: 2)
+// CHECK: var_decl "point" {{.*}} type='Point'
+// SWIFTONLY-NOT: var_decl "point"
+
diff --git a/test/DebugInfo/simple.sil b/test/DebugInfo/simple.sil
index a70202c..b5cb8f9 100644
--- a/test/DebugInfo/simple.sil
+++ b/test/DebugInfo/simple.sil
@@ -6,7 +6,7 @@
import Swift
sil @square : $@convention(thin) (Int32) -> Int32 {
-bb0(%0 : @trivial $Int32):
+bb0(%0 : $Int32):
debug_value %0 : $Int32, let, name "x" // id: %1
%3 = struct_extract %0 : $Int32, #Int32._value // user: %6
%4 = struct_extract %0 : $Int32, #Int32._value // user: %6
diff --git a/test/Driver/Dependencies/README.txt b/test/Driver/Dependencies/README.txt
index 0d7ab5b..f10ee21 100644
--- a/test/Driver/Dependencies/README.txt
+++ b/test/Driver/Dependencies/README.txt
@@ -8,7 +8,8 @@
Because of the way the tests are set up, the dependency information is put into the .swift files; any such test needs to start by "building" everything to copy that information into .swiftdeps files. To avoid timestamp issues, most of these tests start with:
- // RUN: rm -rf %t && cp -r %S/Inputs/<TEST_GRAPH>/ %t
+ // RUN: %empty-directory(%t)
+ // RUN: cp -r %S/Inputs/<TEST_GRAPH>/* %t
// RUN: touch -t 201401240005 %t/*
@@ -21,6 +22,7 @@
Most of these tests start with:
- // RUN: rm -rf %t && cp -r %S/Inputs/<TEST_GRAPH>/ %t
+ // RUN: %empty-directory(%t)
+ // RUN: cp -r %S/Inputs/<TEST_GRAPH>/* %t
// RUN: touch -t 201401240005 %t/*.swift
// RUN: touch -t 201401240006 %t/*.o
diff --git a/test/Driver/Dependencies/bindings-build-record-options.swift b/test/Driver/Dependencies/bindings-build-record-options.swift
index 550a454..3f8fd56 100644
--- a/test/Driver/Dependencies/bindings-build-record-options.swift
+++ b/test/Driver/Dependencies/bindings-build-record-options.swift
@@ -1,4 +1,5 @@
-// RUN: rm -rf %t && cp -r %S/Inputs/bindings-build-record/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/bindings-build-record/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && %swiftc_driver -c -module-name main -driver-print-bindings ./main.swift ./other.swift ./yet-another.swift -incremental -output-file-map %t/output.json 2>&1 | %FileCheck %s -check-prefix=MUST-EXEC-INITIAL
diff --git a/test/Driver/Dependencies/bindings-build-record.swift b/test/Driver/Dependencies/bindings-build-record.swift
index 85d2751..bf52005 100644
--- a/test/Driver/Dependencies/bindings-build-record.swift
+++ b/test/Driver/Dependencies/bindings-build-record.swift
@@ -1,5 +1,6 @@
-// RUN: rm -rf %t && cp -r %S/Inputs/bindings-build-record/ %t
-// RUN: %S/Inputs/touch.py 443865900 %t/*
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/bindings-build-record/* %t
+// RUN: %{python} %S/Inputs/touch.py 443865900 %t/*
// RUN: cd %t && %swiftc_driver -driver-print-bindings ./main.swift ./other.swift ./yet-another.swift -incremental -output-file-map %t/output.json 2>&1 | %FileCheck %s -check-prefix=MUST-EXEC
@@ -29,13 +30,13 @@
// FILE-ADDED: inputs: ["./added.swift"], output: {{[{].*[}]}}, condition: newly-added{{$}}
-// RUN: %S/Inputs/touch.py 443865960 %t/main.swift
+// RUN: %{python} %S/Inputs/touch.py 443865960 %t/main.swift
// RUN: cd %t && %swiftc_driver -driver-print-bindings ./main.swift ./other.swift ./yet-another.swift -incremental -output-file-map %t/output.json 2>&1 | %FileCheck %s -check-prefix=BUILD-RECORD-PLUS-CHANGE
// BUILD-RECORD-PLUS-CHANGE: inputs: ["./main.swift"], output: {{[{].*[}]}}, condition: run-without-cascading
// BUILD-RECORD-PLUS-CHANGE: inputs: ["./other.swift"], output: {{[{].*[}]}}, condition: run-without-cascading{{$}}
// BUILD-RECORD-PLUS-CHANGE: inputs: ["./yet-another.swift"], output: {{[{].*[}]$}}
-// RUN: %S/Inputs/touch.py 443865900 %t/*
+// RUN: %{python} %S/Inputs/touch.py 443865900 %t/*
// RUN: cd %t && %swiftc_driver -driver-print-bindings ./main.swift ./other.swift -incremental -output-file-map %t/output.json 2>&1 | %FileCheck %s -check-prefix=FILE-REMOVED
// FILE-REMOVED: inputs: ["./main.swift"], output: {{[{].*[}]$}}
// FILE-REMOVED: inputs: ["./other.swift"], output: {{[{].*[}]$}}
diff --git a/test/Driver/Dependencies/build-record-invalid.swift b/test/Driver/Dependencies/build-record-invalid.swift
index 16ffbf8..5fa21b2 100644
--- a/test/Driver/Dependencies/build-record-invalid.swift
+++ b/test/Driver/Dependencies/build-record-invalid.swift
@@ -1,4 +1,5 @@
-// RUN: rm -rf %t && cp -r %S/Inputs/bindings-build-record/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/bindings-build-record/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental ./main.swift ./other.swift -module-name main -j1 -v 2>&1 | %FileCheck %s -check-prefix=CHECK-ALL-BUILT
diff --git a/test/Driver/Dependencies/chained-additional-kinds.swift b/test/Driver/Dependencies/chained-additional-kinds.swift
index 5aad8ab..7d8fb82 100644
--- a/test/Driver/Dependencies/chained-additional-kinds.swift
+++ b/test/Driver/Dependencies/chained-additional-kinds.swift
@@ -1,6 +1,7 @@
// other ==> main ==> yet-another
-// RUN: rm -rf %t && cp -r %S/Inputs/chained-additional-kinds/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/chained-additional-kinds/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./main.swift ./other.swift ./yet-another.swift -module-name main -j1 -v 2>&1 | %FileCheck -check-prefix=CHECK-FIRST %s
diff --git a/test/Driver/Dependencies/chained-after.swift b/test/Driver/Dependencies/chained-after.swift
index 901fb3c..cc18a6d 100644
--- a/test/Driver/Dependencies/chained-after.swift
+++ b/test/Driver/Dependencies/chained-after.swift
@@ -1,7 +1,8 @@
/// other ==> main | yet-another
/// other ==> main +==> yet-another
-// RUN: rm -rf %t && cp -r %S/Inputs/chained-after/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/chained-after/* %t
// RUN: touch -t 201401240005 %t/*.swift
// Generate the build record...
diff --git a/test/Driver/Dependencies/chained-private-after-multiple-nominal-members.swift b/test/Driver/Dependencies/chained-private-after-multiple-nominal-members.swift
index 5bc9173..c106897 100644
--- a/test/Driver/Dependencies/chained-private-after-multiple-nominal-members.swift
+++ b/test/Driver/Dependencies/chained-private-after-multiple-nominal-members.swift
@@ -1,7 +1,8 @@
/// other --> main ==> yet-another
/// other ==>+ main ==> yet-another
-// RUN: rm -rf %t && cp -r %S/Inputs/chained-private-after-multiple-nominal-members/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/chained-private-after-multiple-nominal-members/* %t
// RUN: touch -t 201401240005 %t/*.swift
// Generate the build record...
diff --git a/test/Driver/Dependencies/chained-private-after-multiple.swift b/test/Driver/Dependencies/chained-private-after-multiple.swift
index a203d7d..04522f3 100644
--- a/test/Driver/Dependencies/chained-private-after-multiple.swift
+++ b/test/Driver/Dependencies/chained-private-after-multiple.swift
@@ -1,7 +1,8 @@
/// other --> main ==> yet-another
/// other ==>+ main ==> yet-another
-// RUN: rm -rf %t && cp -r %S/Inputs/chained-private-after-multiple/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/chained-private-after-multiple/* %t
// RUN: touch -t 201401240005 %t/*.swift
// Generate the build record...
diff --git a/test/Driver/Dependencies/chained-private-after.swift b/test/Driver/Dependencies/chained-private-after.swift
index 555bd64..00b6b48 100644
--- a/test/Driver/Dependencies/chained-private-after.swift
+++ b/test/Driver/Dependencies/chained-private-after.swift
@@ -1,7 +1,8 @@
/// other --> main ==> yet-another
/// other ==>+ main ==> yet-another
-// RUN: rm -rf %t && cp -r %S/Inputs/chained-private-after/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/chained-private-after/* %t
// RUN: touch -t 201401240005 %t/*.swift
// Generate the build record...
diff --git a/test/Driver/Dependencies/chained-private.swift b/test/Driver/Dependencies/chained-private.swift
index 9be747b..acc2f08 100644
--- a/test/Driver/Dependencies/chained-private.swift
+++ b/test/Driver/Dependencies/chained-private.swift
@@ -1,6 +1,7 @@
/// other --> main ==> yet-another
-// RUN: rm -rf %t && cp -r %S/Inputs/chained-private/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/chained-private/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./main.swift ./other.swift ./yet-another.swift -module-name main -j1 -v 2>&1 | %FileCheck -check-prefix=CHECK-FIRST %s
diff --git a/test/Driver/Dependencies/chained.swift b/test/Driver/Dependencies/chained.swift
index f1bcf78..88738a5 100644
--- a/test/Driver/Dependencies/chained.swift
+++ b/test/Driver/Dependencies/chained.swift
@@ -1,6 +1,7 @@
// other ==> main ==> yet-another
-// RUN: rm -rf %t && cp -r %S/Inputs/chained/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/chained/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./main.swift ./other.swift ./yet-another.swift -module-name main -j1 -v 2>&1 | %FileCheck -check-prefix=CHECK-FIRST %s
diff --git a/test/Driver/Dependencies/crash-added.swift b/test/Driver/Dependencies/crash-added.swift
index badb46a..854b7f1 100644
--- a/test/Driver/Dependencies/crash-added.swift
+++ b/test/Driver/Dependencies/crash-added.swift
@@ -1,6 +1,7 @@
/// crash ==> main | crash --> other
-// RUN: rm -rf %t && cp -r %S/Inputs/crash-simple/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/crash-simple/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./main.swift ./other.swift -module-name main -j1 -v 2>&1 | %FileCheck -check-prefix=CHECK-INITIAL %s
@@ -21,7 +22,8 @@
// CHECK-RECORD-ADDED-DAG: "./other.swift": [
-// RUN: rm -rf %t && cp -r %S/Inputs/crash-simple/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/crash-simple/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./main.swift ./other.swift -module-name main -j1 -v 2>&1 | %FileCheck -check-prefix=CHECK-INITIAL %s
diff --git a/test/Driver/Dependencies/crash-new.swift b/test/Driver/Dependencies/crash-new.swift
index c68c185..d5af216 100644
--- a/test/Driver/Dependencies/crash-new.swift
+++ b/test/Driver/Dependencies/crash-new.swift
@@ -1,6 +1,7 @@
/// crash ==> main | crash --> other
-// RUN: rm -rf %t && cp -r %S/Inputs/crash-simple/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/crash-simple/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && not %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies-bad.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./main.swift ./crash.swift ./other.swift -module-name main -j1 -v 2>&1 | %FileCheck %s
diff --git a/test/Driver/Dependencies/crash-simple.swift b/test/Driver/Dependencies/crash-simple.swift
index 394aaa8..0771ae3 100644
--- a/test/Driver/Dependencies/crash-simple.swift
+++ b/test/Driver/Dependencies/crash-simple.swift
@@ -1,6 +1,7 @@
/// crash ==> main | crash --> other
-// RUN: rm -rf %t && cp -r %S/Inputs/crash-simple/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/crash-simple/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./main.swift ./crash.swift ./other.swift -module-name main -j1 -v 2>&1 | %FileCheck -check-prefix=CHECK-FIRST %s
diff --git a/test/Driver/Dependencies/dependencies-preservation.swift b/test/Driver/Dependencies/dependencies-preservation.swift
index 6825100..79543b0 100644
--- a/test/Driver/Dependencies/dependencies-preservation.swift
+++ b/test/Driver/Dependencies/dependencies-preservation.swift
@@ -1,8 +1,9 @@
// Verify that the top-level build record file from the last incremental
// compilation is preserved with the same name, suffixed by a '~'.
-// RUN: rm -rf %t && cp -r %S/Inputs/one-way/ %t
-// RUN: %S/Inputs/touch.py 443865900 %t/*
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/one-way/* %t
+// RUN: %{python} %S/Inputs/touch.py 443865900 %t/*
// RUN: echo '{version: "'$(%swiftc_driver_plain -version | head -n1)'", inputs: {"./main.swift": [443865900, 0], "./other.swift": [443865900, 0]}}' > %t/main~buildrecord.swiftdeps
// RUN: cd %t && %swiftc_driver -driver-use-frontend-path %S/Inputs/update-dependencies.py -c ./main.swift ./other.swift -module-name main -incremental -v -driver-show-incremental -output-file-map %t/output.json
diff --git a/test/Driver/Dependencies/driver-show-incremental-arguments.swift b/test/Driver/Dependencies/driver-show-incremental-arguments.swift
index 3a4c37f..73ce709 100644
--- a/test/Driver/Dependencies/driver-show-incremental-arguments.swift
+++ b/test/Driver/Dependencies/driver-show-incremental-arguments.swift
@@ -8,8 +8,9 @@
// is disabled.
-// RUN: rm -rf %t && cp -r %S/Inputs/one-way/ %t
-// RUN: %S/Inputs/touch.py 443865900 %t/*
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/one-way/* %t
+// RUN: %{python} %S/Inputs/touch.py 443865900 %t/*
// RUN: echo '{version: "'$(%swiftc_driver_plain -version | head -n1)'", inputs: {"./main.swift": [443865900, 0], "./other.swift": [443865900, 0]}}' > %t/main~buildrecord.swiftdeps
// RUN: cd %t && %swiftc_driver -driver-use-frontend-path %S/Inputs/update-dependencies.py -c ./main.swift ./other.swift -module-name main -incremental -v -driver-show-incremental -output-file-map %t/output.json | %FileCheck --check-prefix CHECK-INCREMENTAL %s
diff --git a/test/Driver/Dependencies/driver-show-incremental-conflicting-arguments.swift b/test/Driver/Dependencies/driver-show-incremental-conflicting-arguments.swift
index e9b2e93..b5522f5 100644
--- a/test/Driver/Dependencies/driver-show-incremental-conflicting-arguments.swift
+++ b/test/Driver/Dependencies/driver-show-incremental-conflicting-arguments.swift
@@ -8,8 +8,9 @@
// is disabled. If both are specified, the driver should only print one message.
-// RUN: rm -rf %t && cp -r %S/Inputs/one-way/ %t
-// RUN: %S/Inputs/touch.py 443865900 %t/*
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/one-way/* %t
+// RUN: %{python} %S/Inputs/touch.py 443865900 %t/*
// RUN: echo '{version: "'$(%swiftc_driver_plain -version | head -n1)'", inputs: {"./main.swift": [443865900, 0], "./other.swift": [443865900, 0]}}' > %t/main~buildrecord.swiftdeps
// RUN: cd %t && %swiftc_driver -driver-use-frontend-path %S/Inputs/update-dependencies.py -c ./main.swift ./other.swift -module-name main -incremental -v -driver-show-incremental -output-file-map %t/output.json | %FileCheck --check-prefix CHECK-INCREMENTAL %s
diff --git a/test/Driver/Dependencies/driver-show-incremental-inputs.swift b/test/Driver/Dependencies/driver-show-incremental-inputs.swift
index 931eff9..0e43db7 100644
--- a/test/Driver/Dependencies/driver-show-incremental-inputs.swift
+++ b/test/Driver/Dependencies/driver-show-incremental-inputs.swift
@@ -8,8 +8,9 @@
// is disabled.
-// RUN: rm -rf %t && cp -r %S/Inputs/one-way/ %t
-// RUN: %S/Inputs/touch.py 443865900 %t/*
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/one-way/* %t
+// RUN: %{python} %S/Inputs/touch.py 443865900 %t/*
// RUN: echo '{version: "'$(%swiftc_driver_plain -version | head -n1)'", inputs: {"./main.swift": [443865900, 0], "./other.swift": [443865900, 0]}}' > %t/main~buildrecord.swiftdeps
// RUN: cd %t && %swiftc_driver -driver-use-frontend-path %S/Inputs/update-dependencies.py -c ./main.swift ./other.swift -module-name main -incremental -v -driver-show-incremental -output-file-map %t/output.json | %FileCheck --check-prefix CHECK-INCREMENTAL %s
diff --git a/test/Driver/Dependencies/driver-show-incremental-malformed.swift b/test/Driver/Dependencies/driver-show-incremental-malformed.swift
index b3911ae..5f76b17 100644
--- a/test/Driver/Dependencies/driver-show-incremental-malformed.swift
+++ b/test/Driver/Dependencies/driver-show-incremental-malformed.swift
@@ -7,8 +7,9 @@
// is disabled.
-// RUN: rm -rf %t && cp -r %S/Inputs/one-way/ %t
-// RUN: %S/Inputs/touch.py 443865900 %t/*
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/one-way/* %t
+// RUN: %{python} %S/Inputs/touch.py 443865900 %t/*
// RUN: echo '{version: "'$(%swiftc_driver_plain -version | head -n1)'", inputs: {"./main.swift": [443865900, 0], "./other.swift": [443865900, 0]}}' > %t/main~buildrecord.swiftdeps
// RUN: cd %t && %swiftc_driver -driver-use-frontend-path %S/Inputs/update-dependencies.py -c ./main.swift ./other.swift -module-name main -incremental -v -driver-show-incremental -output-file-map %t/output.json | %FileCheck --check-prefix CHECK-INCREMENTAL %s
diff --git a/test/Driver/Dependencies/driver-show-incremental-mutual.swift b/test/Driver/Dependencies/driver-show-incremental-mutual.swift
index 2b8fd3b..c756477 100644
--- a/test/Driver/Dependencies/driver-show-incremental-mutual.swift
+++ b/test/Driver/Dependencies/driver-show-incremental-mutual.swift
@@ -1,6 +1,7 @@
/// main <==> other
-// RUN: rm -rf %t && cp -r %S/Inputs/mutual/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/mutual/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./main.swift ./other.swift -module-name main -j1 -v -driver-show-incremental 2>&1 | %FileCheck -check-prefix=CHECK-FIRST %s
diff --git a/test/Driver/Dependencies/driver-show-incremental-swift-version.swift b/test/Driver/Dependencies/driver-show-incremental-swift-version.swift
index 79d2d37..0e1a30e 100644
--- a/test/Driver/Dependencies/driver-show-incremental-swift-version.swift
+++ b/test/Driver/Dependencies/driver-show-incremental-swift-version.swift
@@ -8,8 +8,9 @@
// is disabled.
-// RUN: rm -rf %t && cp -r %S/Inputs/one-way/ %t
-// RUN: %S/Inputs/touch.py 443865900 %t/*
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/one-way/* %t
+// RUN: %{python} %S/Inputs/touch.py 443865900 %t/*
// RUN: echo '{version: "'$(%swiftc_driver_plain -version | head -n1)'", inputs: {"./main.swift": [443865900, 0], "./other.swift": [443865900, 0]}}' > %t/main~buildrecord.swiftdeps
// RUN: cd %t && %swiftc_driver -driver-use-frontend-path %S/Inputs/update-dependencies.py -c ./main.swift ./other.swift -module-name main -incremental -v -driver-show-incremental -output-file-map %t/output.json | %FileCheck --check-prefix CHECK-INCREMENTAL %s
diff --git a/test/Driver/Dependencies/embed-bitcode-parallel.swift b/test/Driver/Dependencies/embed-bitcode-parallel.swift
index 3005bd4..15216de 100644
--- a/test/Driver/Dependencies/embed-bitcode-parallel.swift
+++ b/test/Driver/Dependencies/embed-bitcode-parallel.swift
@@ -1,4 +1,5 @@
-// RUN: rm -rf %t && cp -r %S/Inputs/one-way/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/one-way/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/fake-build-for-bitcode.py -output-file-map %t/output.json -incremental ./main.swift ./other.swift -embed-bitcode -module-name main -j1 -parseable-output 2>&1 | %FileCheck -check-prefix=CHECK-FIRST %s
diff --git a/test/Driver/Dependencies/fail-added.swift b/test/Driver/Dependencies/fail-added.swift
index e316a83..4cbd2db 100644
--- a/test/Driver/Dependencies/fail-added.swift
+++ b/test/Driver/Dependencies/fail-added.swift
@@ -1,6 +1,7 @@
/// bad ==> main | bad --> other
-// RUN: rm -rf %t && cp -r %S/Inputs/fail-simple/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/fail-simple/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./main.swift ./other.swift -module-name main -j1 -v 2>&1 | %FileCheck -check-prefix=CHECK-INITIAL %s
@@ -21,7 +22,8 @@
// CHECK-RECORD-ADDED-DAG: "./other.swift": [
-// RUN: rm -rf %t && cp -r %S/Inputs/fail-simple/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/fail-simple/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./main.swift ./other.swift -module-name main -j1 -v 2>&1 | %FileCheck -check-prefix=CHECK-INITIAL %s
diff --git a/test/Driver/Dependencies/fail-chained.swift b/test/Driver/Dependencies/fail-chained.swift
index 3bb7023..0202040 100644
--- a/test/Driver/Dependencies/fail-chained.swift
+++ b/test/Driver/Dependencies/fail-chained.swift
@@ -1,6 +1,7 @@
/// a ==> bad ==> c ==> d | b --> bad --> e ==> f
-// RUN: rm -rf %t && cp -r %S/Inputs/fail-chained/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/fail-chained/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./a.swift ./b.swift ./c.swift ./d.swift ./e.swift ./f.swift ./bad.swift -module-name main -j1 -v 2>&1 | %FileCheck -check-prefix=CHECK-FIRST %s
@@ -60,7 +61,8 @@
// NEGATIVE-A2-NOT: Handled f.swift
-// RUN: rm -rf %t && cp -r %S/Inputs/fail-chained/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/fail-chained/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./a.swift ./b.swift ./c.swift ./d.swift ./e.swift ./f.swift ./bad.swift -module-name main -j1 -v 2>&1 | %FileCheck -check-prefix=CHECK-FIRST %s
diff --git a/test/Driver/Dependencies/fail-interface-hash.swift b/test/Driver/Dependencies/fail-interface-hash.swift
index 618f7b4..b4c8d1f 100644
--- a/test/Driver/Dependencies/fail-interface-hash.swift
+++ b/test/Driver/Dependencies/fail-interface-hash.swift
@@ -1,6 +1,7 @@
/// main ==> depends-on-main | bad ==> depends-on-bad
-// RUN: rm -rf %t && cp -r %S/Inputs/fail-interface-hash/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/fail-interface-hash/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental ./main.swift ./bad.swift ./depends-on-main.swift ./depends-on-bad.swift -module-name main -j1 -v 2>&1 | %FileCheck -check-prefix=CHECK-FIRST %s
diff --git a/test/Driver/Dependencies/fail-new.swift b/test/Driver/Dependencies/fail-new.swift
index 36b0395..3cd90c1 100644
--- a/test/Driver/Dependencies/fail-new.swift
+++ b/test/Driver/Dependencies/fail-new.swift
@@ -1,6 +1,7 @@
/// bad ==> main | bad --> other
-// RUN: rm -rf %t && cp -r %S/Inputs/fail-simple/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/fail-simple/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && not %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies-bad.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./main.swift ./bad.swift ./other.swift -module-name main -j1 -v 2>&1 | %FileCheck %s
diff --git a/test/Driver/Dependencies/fail-simple.swift b/test/Driver/Dependencies/fail-simple.swift
index d228b65..6f81a0d 100644
--- a/test/Driver/Dependencies/fail-simple.swift
+++ b/test/Driver/Dependencies/fail-simple.swift
@@ -1,6 +1,7 @@
/// bad ==> main | bad --> other
-// RUN: rm -rf %t && cp -r %S/Inputs/fail-simple/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/fail-simple/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./main.swift ./bad.swift ./other.swift -module-name main -j1 -v 2>&1 | %FileCheck -check-prefix=CHECK-FIRST %s
diff --git a/test/Driver/Dependencies/fail-with-bad-deps.swift b/test/Driver/Dependencies/fail-with-bad-deps.swift
index ee1e2da..663e56f 100644
--- a/test/Driver/Dependencies/fail-with-bad-deps.swift
+++ b/test/Driver/Dependencies/fail-with-bad-deps.swift
@@ -1,6 +1,7 @@
/// main ==> depends-on-main | bad ==> depends-on-bad
-// RUN: rm -rf %t && cp -r %S/Inputs/fail-with-bad-deps/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/fail-with-bad-deps/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental ./main.swift ./bad.swift ./depends-on-main.swift ./depends-on-bad.swift -module-name main -j1 -v 2>&1 | %FileCheck -check-prefix=CHECK-FIRST %s
diff --git a/test/Driver/Dependencies/file-added.swift b/test/Driver/Dependencies/file-added.swift
index 726ca88..e50bffb 100644
--- a/test/Driver/Dependencies/file-added.swift
+++ b/test/Driver/Dependencies/file-added.swift
@@ -1,6 +1,7 @@
/// other ==> main
-// RUN: rm -rf %t && cp -r %S/Inputs/one-way/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/one-way/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./other.swift -module-name main -j1 -v 2>&1 | %FileCheck -check-prefix=CHECK-FIRST %s
diff --git a/test/Driver/Dependencies/independent-half-dirty.swift b/test/Driver/Dependencies/independent-half-dirty.swift
index 964995d..4f8a2ac 100644
--- a/test/Driver/Dependencies/independent-half-dirty.swift
+++ b/test/Driver/Dependencies/independent-half-dirty.swift
@@ -1,4 +1,5 @@
-// RUN: rm -rf %t && cp -r %S/Inputs/independent/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/independent/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./main.swift ./other.swift -module-name main -j1 -v 2>&1 | %FileCheck -check-prefix=CHECK-FIRST %s
diff --git a/test/Driver/Dependencies/independent-parseable.swift b/test/Driver/Dependencies/independent-parseable.swift
index 1b86b80..6e0b7fd 100644
--- a/test/Driver/Dependencies/independent-parseable.swift
+++ b/test/Driver/Dependencies/independent-parseable.swift
@@ -1,4 +1,5 @@
-// RUN: rm -rf %t && cp -r %S/Inputs/independent/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/independent/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./main.swift -j1 -parseable-output 2>&1 | %FileCheck -check-prefix=CHECK-FIRST %s
@@ -28,7 +29,8 @@
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./main.swift -j1 -parseable-output 2>&1 | %FileCheck -check-prefix=CHECK-FIRST %s
-// RUN: rm -rf %t && cp -r %S/Inputs/independent/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/independent/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./main.swift ./other.swift -module-name main -j1 -parseable-output 2>&1 | %FileCheck -check-prefix=CHECK-FIRST-MULTI %s
diff --git a/test/Driver/Dependencies/independent.swift b/test/Driver/Dependencies/independent.swift
index 6f8cc8d..9f8688b 100644
--- a/test/Driver/Dependencies/independent.swift
+++ b/test/Driver/Dependencies/independent.swift
@@ -1,6 +1,7 @@
// main | other
-// RUN: rm -rf %t && cp -r %S/Inputs/independent/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/independent/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./main.swift -j1 -v 2>&1 | %FileCheck -check-prefix=CHECK-FIRST %s
@@ -20,7 +21,8 @@
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./main.swift -j1 -v 2>&1 | %FileCheck -check-prefix=CHECK-FIRST %s
-// RUN: rm -rf %t && cp -r %S/Inputs/independent/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/independent/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./main.swift ./other.swift -module-name main -j1 -v 2>&1 | %FileCheck -check-prefix=CHECK-FIRST-MULTI %s
@@ -34,7 +36,8 @@
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./main.swift ./other.swift -module-name main -j1 -v 2>&1 | %FileCheck -check-prefix=CHECK-FIRST-MULTI %s
-// RUN: rm -rf %t && cp -r %S/Inputs/independent/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/independent/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./main.swift -module-name main -j1 -v 2>&1 | %FileCheck -check-prefix=CHECK-SINGLE %s
diff --git a/test/Driver/Dependencies/malformed-but-valid-yaml.swift b/test/Driver/Dependencies/malformed-but-valid-yaml.swift
index f00b5a7..0d88168 100644
--- a/test/Driver/Dependencies/malformed-but-valid-yaml.swift
+++ b/test/Driver/Dependencies/malformed-but-valid-yaml.swift
@@ -1,4 +1,5 @@
-// RUN: rm -rf %t && cp -r %S/Inputs/malformed-but-valid-yaml/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/malformed-but-valid-yaml/* %t
// RUN: touch -t 201401240005 %t/*.swift
// Generate the build record...
@@ -24,7 +25,8 @@
// CHECK-THIRD: Handled main.swift
// CHECK-THIRD: Handled other.swift
-// RUN: rm -rf %t && cp -r %S/Inputs/malformed-but-valid-yaml/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/malformed-but-valid-yaml/* %t
// RUN: touch -t 201401240005 %t/*.swift
// Generate the build record...
diff --git a/test/Driver/Dependencies/malformed.swift b/test/Driver/Dependencies/malformed.swift
index 0edcabb..6c13789 100644
--- a/test/Driver/Dependencies/malformed.swift
+++ b/test/Driver/Dependencies/malformed.swift
@@ -1,4 +1,5 @@
-// RUN: rm -rf %t && cp -r %S/Inputs/malformed-after/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/malformed-after/* %t
// RUN: touch -t 201401240005 %t/*.swift
// Generate the build record...
@@ -24,7 +25,8 @@
// CHECK-THIRD: Handled main.swift
// CHECK-THIRD: Handled other.swift
-// RUN: rm -rf %t && cp -r %S/Inputs/malformed-after/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/malformed-after/* %t
// RUN: touch -t 201401240005 %t/*.swift
// Generate the build record...
diff --git a/test/Driver/Dependencies/moduleonly.swift b/test/Driver/Dependencies/moduleonly.swift
index b06864c..a2c38a2 100644
--- a/test/Driver/Dependencies/moduleonly.swift
+++ b/test/Driver/Dependencies/moduleonly.swift
@@ -1,4 +1,5 @@
-// RUN: rm -rf %t && cp -r %S/Inputs/moduleonly/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/moduleonly/* %t
// RUN: touch -t 201801230045 %t/*.swift
// RUN: cd %t && %target-build-swift -emit-module -output-file-map ./output.json -incremental ./foo.swift ./bar.swift ./baz.swift -module-name testmodule -v 2>&1 | %FileCheck -check-prefix=CHECK1 %s
@@ -48,7 +49,8 @@
// '-c' (without '-emit-module') from clean environment.
//
-// RUN: rm -rf %t && cp -r %S/Inputs/moduleonly/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/moduleonly/* %t
// RUN: touch -t 201801230045 %t/*.swift
// RUN: cd %t && %target-build-swift -c -g -output-file-map ./output.json -incremental ./foo.swift ./bar.swift ./baz.swift -module-name testmodule -v 2>&1
// RUN: test ! -f %t/buildrecord.swiftdeps~moduleonly
@@ -57,7 +59,8 @@
// '-emit-library -g' (without '-emit-module') from clean environment.
//
-// RUN: rm -rf %t && cp -r %S/Inputs/moduleonly/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/moduleonly/* %t
// RUN: touch -t 201801230045 %t/*.swift
// RUN: cd %t && %target-build-swift -emit-library -g -output-file-map ./output.json -incremental ./foo.swift ./bar.swift ./baz.swift -module-name testmodule -v 2>&1
// RUN: test ! -f %t/buildrecord.swiftdeps~moduleonly
@@ -68,12 +71,14 @@
//
// RUN: rm -f %t-moduleonly.swiftmodule
// RUN: rm -f %t-moduleonly.swiftdoc
-// RUN: rm -rf %t && cp -r %S/Inputs/moduleonly/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/moduleonly/* %t
// RUN: touch -t 201801230045 %t/*.swift
// RUN: cd %t && %target-build-swift -emit-module -output-file-map ./output.json -incremental ./foo.swift ./bar.swift ./baz.swift -module-name testmodule -v 2>&1
// RUN: cp -f %t/testmodule.swiftmodule %t-moduleonly.swiftmodule
// RUN: cp -f %t/testmodule.swiftdoc %t-moduleonly.swiftdoc
-// RUN: rm -rf %t && cp -r %S/Inputs/moduleonly/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/moduleonly/* %t
// RUN: touch -t 201801230045 %t/*.swift
// RUN: cd %t && %target-build-swift -c -emit-module -output-file-map ./output.json -incremental ./foo.swift ./bar.swift ./baz.swift -module-name testmodule -v 2>&1
// RUN: diff %t/testmodule.swiftmodule %t-moduleonly.swiftmodule
diff --git a/test/Driver/Dependencies/mutual-interface-hash.swift b/test/Driver/Dependencies/mutual-interface-hash.swift
index 13ec646..4e405f1 100644
--- a/test/Driver/Dependencies/mutual-interface-hash.swift
+++ b/test/Driver/Dependencies/mutual-interface-hash.swift
@@ -1,6 +1,7 @@
/// does-change <==> does-not-change
-// RUN: rm -rf %t && cp -r %S/Inputs/mutual-interface-hash/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/mutual-interface-hash/* %t
// RUN: touch -t 201401240005 %t/*
// Generate the build record...
diff --git a/test/Driver/Dependencies/mutual.swift b/test/Driver/Dependencies/mutual.swift
index 7db852b..66c9f25 100644
--- a/test/Driver/Dependencies/mutual.swift
+++ b/test/Driver/Dependencies/mutual.swift
@@ -1,6 +1,7 @@
/// main <==> other
-// RUN: rm -rf %t && cp -r %S/Inputs/mutual/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/mutual/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./main.swift ./other.swift -module-name main -j1 -v 2>&1 | %FileCheck -check-prefix=CHECK-FIRST %s
diff --git a/test/Driver/Dependencies/nominal-members.swift b/test/Driver/Dependencies/nominal-members.swift
index 85cc635..1f2897c 100644
--- a/test/Driver/Dependencies/nominal-members.swift
+++ b/test/Driver/Dependencies/nominal-members.swift
@@ -1,6 +1,7 @@
/// a ==> depends-on-a-ext, depends-on-a-foo | a-ext ==> depends-on-a-ext
-// RUN: rm -rf %t && cp -r %S/Inputs/nominal-members/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/nominal-members/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./a.swift ./a-ext.swift ./depends-on-a-foo.swift ./depends-on-a-ext.swift -module-name main -j1 -v 2>&1 | %FileCheck -check-prefix=CHECK-INITIAL %s
diff --git a/test/Driver/Dependencies/one-way-depends-after.swift b/test/Driver/Dependencies/one-way-depends-after.swift
index d6f3bca..21db914 100644
--- a/test/Driver/Dependencies/one-way-depends-after.swift
+++ b/test/Driver/Dependencies/one-way-depends-after.swift
@@ -1,7 +1,8 @@
/// other | main
/// other ==>+ main
-// RUN: rm -rf %t && cp -r %S/Inputs/one-way-depends-after/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/one-way-depends-after/* %t
// RUN: touch -t 201401240005 %t/*.swift
// Generate the build record...
@@ -26,7 +27,8 @@
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./main.swift ./other.swift -module-name main -j1 -v 2>&1 | %FileCheck -check-prefix=CHECK-SECOND %s
-// RUN: rm -rf %t && cp -r %S/Inputs/one-way-depends-after/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/one-way-depends-after/* %t
// RUN: touch -t 201401240005 %t/*.swift
// Generate the build record...
diff --git a/test/Driver/Dependencies/one-way-depends-before.swift b/test/Driver/Dependencies/one-way-depends-before.swift
index f6d0751..b046f21 100644
--- a/test/Driver/Dependencies/one-way-depends-before.swift
+++ b/test/Driver/Dependencies/one-way-depends-before.swift
@@ -1,7 +1,8 @@
/// other ==>+ main
/// other | main
-// RUN: rm -rf %t && cp -r %S/Inputs/one-way-depends-before/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/one-way-depends-before/* %t
// RUN: touch -t 201401240005 %t/*.swift
// Generate the build record...
@@ -29,7 +30,8 @@
// CHECK-THIRD-NOT: Handled main.swift
-// RUN: rm -rf %t && cp -r %S/Inputs/one-way-depends-before/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/one-way-depends-before/* %t
// RUN: touch -t 201401240005 %t/*.swift
// Generate the build record...
diff --git a/test/Driver/Dependencies/one-way-external-delete.swift b/test/Driver/Dependencies/one-way-external-delete.swift
index 82bc5cc..07abe55 100644
--- a/test/Driver/Dependencies/one-way-external-delete.swift
+++ b/test/Driver/Dependencies/one-way-external-delete.swift
@@ -1,4 +1,5 @@
-// RUN: rm -rf %t && cp -r %S/Inputs/one-way-external/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/one-way-external/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./main.swift ./other.swift -module-name main -j1 -v 2>&1 | %FileCheck -check-prefix=CHECK-FIRST %s
@@ -22,7 +23,8 @@
// CHECK-THIRD-DAG: Handled main.swift
-// RUN: rm -rf %t && cp -r %S/Inputs/one-way-external/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/one-way-external/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./main.swift ./other.swift -module-name main -j1 -v 2>&1 | %FileCheck -check-prefix=CHECK-FIRST %s
diff --git a/test/Driver/Dependencies/one-way-external.swift b/test/Driver/Dependencies/one-way-external.swift
index fdea22c..b6e9e96 100644
--- a/test/Driver/Dependencies/one-way-external.swift
+++ b/test/Driver/Dependencies/one-way-external.swift
@@ -4,7 +4,8 @@
/// "./other1-external" ==> other
/// "./other2-external" ==> other
-// RUN: rm -rf %t && cp -r %S/Inputs/one-way-external/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/one-way-external/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./main.swift ./other.swift -module-name main -j1 -v 2>&1 | %FileCheck -check-prefix=CHECK-FIRST %s
diff --git a/test/Driver/Dependencies/one-way-merge-module.swift b/test/Driver/Dependencies/one-way-merge-module.swift
index 90543bf..a7544cd 100644
--- a/test/Driver/Dependencies/one-way-merge-module.swift
+++ b/test/Driver/Dependencies/one-way-merge-module.swift
@@ -1,6 +1,7 @@
/// other ==> main
-// RUN: rm -rf %t && cp -r %S/Inputs/one-way/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/one-way/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && %swiftc_driver -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./main.swift ./other.swift -emit-module-path %t/master.swiftmodule -module-name main -j1 -v 2>&1 | %FileCheck -check-prefix=CHECK-FIRST %s
diff --git a/test/Driver/Dependencies/one-way-parallel.swift b/test/Driver/Dependencies/one-way-parallel.swift
index a617d13..e199390 100644
--- a/test/Driver/Dependencies/one-way-parallel.swift
+++ b/test/Driver/Dependencies/one-way-parallel.swift
@@ -1,4 +1,5 @@
-// RUN: rm -rf %t && cp -r %S/Inputs/one-way/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/one-way/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./main.swift ./other.swift -module-name main -j1 -parseable-output 2>&1 | %FileCheck -check-prefix=CHECK-FIRST %s
diff --git a/test/Driver/Dependencies/one-way-parseable.swift b/test/Driver/Dependencies/one-way-parseable.swift
index bd2946f..9be0ea5 100644
--- a/test/Driver/Dependencies/one-way-parseable.swift
+++ b/test/Driver/Dependencies/one-way-parseable.swift
@@ -1,4 +1,5 @@
-// RUN: rm -rf %t && cp -r %S/Inputs/one-way/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/one-way/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./main.swift ./other.swift -module-name main -j1 -parseable-output 2>&1 | %FileCheck -check-prefix=CHECK-FIRST %s
diff --git a/test/Driver/Dependencies/one-way-provides-after.swift b/test/Driver/Dependencies/one-way-provides-after.swift
index 561cf08..defc747 100644
--- a/test/Driver/Dependencies/one-way-provides-after.swift
+++ b/test/Driver/Dependencies/one-way-provides-after.swift
@@ -1,7 +1,8 @@
/// other | main
/// other +==> main
-// RUN: rm -rf %t && cp -r %S/Inputs/one-way-provides-after/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/one-way-provides-after/* %t
// RUN: touch -t 201401240005 %t/*.swift
// Generate the build record...
@@ -24,7 +25,8 @@
// RUN: touch -t 201401240007 %t/other.swift
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./main.swift ./other.swift -module-name main -j1 -v 2>&1 | %FileCheck -check-prefix=CHECK-SECOND %s
-// RUN: rm -rf %t && cp -r %S/Inputs/one-way-provides-after/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/one-way-provides-after/* %t
// RUN: touch -t 201401240005 %t/*.swift
// Generate the build record...
diff --git a/test/Driver/Dependencies/one-way-provides-before.swift b/test/Driver/Dependencies/one-way-provides-before.swift
index a1b98d0..b24243f 100644
--- a/test/Driver/Dependencies/one-way-provides-before.swift
+++ b/test/Driver/Dependencies/one-way-provides-before.swift
@@ -1,7 +1,8 @@
/// other +==> main
/// other | main
-// RUN: rm -rf %t && cp -r %S/Inputs/one-way-provides-before/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/one-way-provides-before/* %t
// RUN: touch -t 201401240005 %t/*.swift
// Generate the build record...
@@ -28,7 +29,8 @@
// CHECK-THIRD: Handled other.swift
// CHECK-THIRD-NOT: Handled main.swift
-// RUN: rm -rf %t && cp -r %S/Inputs/one-way-provides-before/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/one-way-provides-before/* %t
// RUN: touch -t 201401240005 %t/*.swift
// Generate the build record...
diff --git a/test/Driver/Dependencies/one-way-while-editing.swift b/test/Driver/Dependencies/one-way-while-editing.swift
index 2e6295e..ef086de 100644
--- a/test/Driver/Dependencies/one-way-while-editing.swift
+++ b/test/Driver/Dependencies/one-way-while-editing.swift
@@ -1,6 +1,7 @@
/// other ==> main
-// RUN: rm -rf %t && cp -r %S/Inputs/one-way/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/one-way/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && not %swiftc_driver -c -driver-use-frontend-path %S/Inputs/modify-non-primary-files.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./main.swift ./other.swift -module-name main -j1 -v 2>&1 | %FileCheck %s
diff --git a/test/Driver/Dependencies/one-way.swift b/test/Driver/Dependencies/one-way.swift
index ccacabb..d73cae4 100644
--- a/test/Driver/Dependencies/one-way.swift
+++ b/test/Driver/Dependencies/one-way.swift
@@ -1,6 +1,7 @@
/// other ==> main
-// RUN: rm -rf %t && cp -r %S/Inputs/one-way/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/one-way/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./main.swift ./other.swift -module-name main -j1 -v 2>&1 | %FileCheck -check-prefix=CHECK-FIRST %s
@@ -37,7 +38,8 @@
// CHECK-FIFTH-NOT: Handled main.swift
-// RUN: rm -rf %t && cp -r %S/Inputs/one-way/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/one-way/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./main.swift ./other.swift -module-name main -j1 -v 2>&1 | %FileCheck -check-prefix=CHECK-FIRST %s
@@ -49,7 +51,8 @@
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./main.swift ./other.swift -module-name main -j1 -v 2>&1 | %FileCheck -check-prefix=CHECK-FOURTH %s
-// RUN: rm -rf %t && cp -r %S/Inputs/one-way/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/one-way/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./other.swift ./main.swift -module-name main -j1 -v 2>&1 | %FileCheck -check-prefix=CHECK-REV-FIRST %s
diff --git a/test/Driver/Dependencies/only-skip-once.swift b/test/Driver/Dependencies/only-skip-once.swift
index b2647a4..8cb049b 100644
--- a/test/Driver/Dependencies/only-skip-once.swift
+++ b/test/Driver/Dependencies/only-skip-once.swift
@@ -1,5 +1,7 @@
// XFAIL: linux
-// RUN: rm -rf %t && cp -r %S/Inputs/only-skip-once/ %t
+
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/only-skip-once/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && %target-swiftc_driver -driver-show-job-lifecycle -output-file-map %t/output-file-map.json -incremental main.swift file1.swift file2.swift -j1 2>&1 | %FileCheck -check-prefix=CHECK-INITIAL %s
diff --git a/test/Driver/Dependencies/private-after.swift b/test/Driver/Dependencies/private-after.swift
index 0c2fbdc..de279f6 100644
--- a/test/Driver/Dependencies/private-after.swift
+++ b/test/Driver/Dependencies/private-after.swift
@@ -1,7 +1,8 @@
/// a --> b ==> c | a ==> d | e ==> b | f ==> g
/// a --> b ==> c | a ==> d +==> e +==> b, e --> f ==> g
-// RUN: rm -rf %t && cp -r %S/Inputs/private-after/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/private-after/* %t
// RUN: touch -t 201401240005 %t/*.swift
// Generate the build record...
@@ -29,7 +30,8 @@
// CHECK-A-NEG-NOT: Handled g.swift
-// RUN: rm -rf %t && cp -r %S/Inputs/private-after/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/private-after/* %t
// RUN: touch -t 201401240005 %t/*.swift
// Generate the build record...
diff --git a/test/Driver/Dependencies/private.swift b/test/Driver/Dependencies/private.swift
index 90656c6..db8937f 100644
--- a/test/Driver/Dependencies/private.swift
+++ b/test/Driver/Dependencies/private.swift
@@ -1,6 +1,7 @@
// a ==> b --> c ==> d | e ==> c
-// RUN: rm -rf %t && cp -r %S/Inputs/private/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/private/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/update-dependencies.py -output-file-map %t/output.json -incremental -driver-always-rebuild-dependents ./a.swift ./b.swift ./c.swift ./d.swift ./e.swift -module-name main -j1 -v 2>&1 | %FileCheck -check-prefix=CHECK-INITIAL %s
diff --git a/test/Driver/Dependencies/whole-module-build-record.swift b/test/Driver/Dependencies/whole-module-build-record.swift
index 4c53260..5375513 100644
--- a/test/Driver/Dependencies/whole-module-build-record.swift
+++ b/test/Driver/Dependencies/whole-module-build-record.swift
@@ -1,6 +1,7 @@
/// other ==> main
-// RUN: rm -rf %t && cp -r %S/Inputs/one-way/ %t
+// RUN: %empty-directory(%t)
+// RUN: cp -r %S/Inputs/one-way/* %t
// RUN: touch -t 201401240005 %t/*
// RUN: cd %t && %swiftc_driver -c -driver-use-frontend-path %S/Inputs/fake-build-whole-module.py -output-file-map %t/output.json -whole-module-optimization ./main.swift ./other.swift -module-name main -j1 -v 2>&1 | %FileCheck -check-prefix=CHECK-FIRST %s
diff --git a/test/IDE/print_ast_tc_decls.swift b/test/IDE/print_ast_tc_decls.swift
index a21a42b..75a2158 100644
--- a/test/IDE/print_ast_tc_decls.swift
+++ b/test/IDE/print_ast_tc_decls.swift
@@ -1358,7 +1358,7 @@
// FIXME: this same type requirement with Self should be printed here
associatedtype A2 : QuxProtocol where A2.Qux == Self
-// PREFER_TYPE_REPR_PRINTING-DAG: {{^}} associatedtype A2 : QuxProtocol where Self.A2.Qux == Self{{$}}
+// PREFER_TYPE_REPR_PRINTING-DAG: {{^}} associatedtype A2 : QuxProtocol where Self == Self.A2.Qux{{$}}
}
#if true
diff --git a/test/IDE/print_synthesized_extensions.swift b/test/IDE/print_synthesized_extensions.swift
index e0deb86..2cfc033 100644
--- a/test/IDE/print_synthesized_extensions.swift
+++ b/test/IDE/print_synthesized_extensions.swift
@@ -237,21 +237,21 @@
public func foo1() {}
}
-// CHECK1: <synthesized>extension <ref:Struct>S1</ref> where T : <ref:Protocol>P2</ref> {
+// CHECK1: <synthesized>extension <ref:Struct>S1</ref> where <ref:GenericTypeParam>Self</ref>.P2T1 : <ref:Protocol>P2</ref> {
// CHECK1-NEXT: <decl:Func>public func <loc>p2member()</loc></decl>
// CHECK1-NEXT: <decl:Func>public func <loc>ef1(<decl:Param>t: T</decl>)</loc></decl>
// CHECK1-NEXT: <decl:Func>public func <loc>ef2(<decl:Param>t: <ref:Struct>S2</ref></decl>)</loc></decl>
// CHECK1-NEXT: }</synthesized>
-// CHECK2: <synthesized>extension <ref:Struct>S1</ref> where T : <ref:Protocol>P3</ref> {
+// CHECK2: <synthesized>extension <ref:Struct>S1</ref> where <ref:GenericTypeParam>Self</ref>.T1 : <ref:Protocol>P3</ref> {
// CHECK2-NEXT: <decl:Func>public func <loc>p3Func(<decl:Param>i: <ref:Struct>Int</ref></decl>)</loc> -> <ref:Struct>Int</ref></decl>
// CHECK2-NEXT: }</synthesized>
-// CHECK3: <synthesized>extension <ref:Struct>S1</ref> where T == <ref:Struct>Int</ref> {
+// CHECK3: <synthesized>extension <ref:Struct>S1</ref> where <ref:GenericTypeParam>Self</ref>.T1 == <ref:Struct>Int</ref> {
// CHECK3-NEXT: <decl:Func>public func <loc>p1IntFunc(<decl:Param>i: <ref:Struct>Int</ref></decl>)</loc> -> <ref:Struct>Int</ref></decl>
// CHECK3-NEXT: }</synthesized>
-// CHECK4: <synthesized>extension <ref:Struct>S1</ref> where T == <ref:Struct>S9</ref><<ref:Struct>Int</ref>> {
+// CHECK4: <synthesized>extension <ref:Struct>S1</ref> where <ref:GenericTypeParam>Self</ref>.T1 == <ref:Struct>S9</ref><<ref:Struct>Int</ref>> {
// CHECK4-NEXT: <decl:Func>public func <loc>S9IntFunc()</loc></decl>
// CHECK4-NEXT: }</synthesized>
diff --git a/test/IRGen/Inputs/ObjectiveC.swift b/test/IRGen/Inputs/ObjectiveC.swift
index d425d77..2a21acf 100644
--- a/test/IRGen/Inputs/ObjectiveC.swift
+++ b/test/IRGen/Inputs/ObjectiveC.swift
@@ -10,7 +10,7 @@
self.value = value ? 1 : 0
}
- /// \brief Allow use in a Boolean context.
+ /// Allow use in a Boolean context.
public var boolValue: Bool {
return value != 0
}
diff --git a/test/IRGen/archetype_resilience.sil b/test/IRGen/archetype_resilience.sil
index 242658d..0744407 100644
--- a/test/IRGen/archetype_resilience.sil
+++ b/test/IRGen/archetype_resilience.sil
@@ -20,7 +20,7 @@
// CHECK: call %T20archetype_resilience36EnumWithClassArchetypeAndDynamicSizeO* @"$s20archetype_resilience36EnumWithClassArchetypeAndDynamicSizeOyxGRlzCr0_lWOc"(%T20archetype_resilience36EnumWithClassArchetypeAndDynamicSizeO* %0, %T20archetype_resilience36EnumWithClassArchetypeAndDynamicSizeO* {{.*}}, %swift.type* %"EnumWithClassArchetypeAndDynamicSize<T>")
// CHECK: ret void
sil @copyDynamicMultiEnum : $@convention(method) <T, U where T: AnyObject> (@in_guaranteed EnumWithClassArchetypeAndDynamicSize<T>) -> () {
-bb0(%0 : @trivial $*EnumWithClassArchetypeAndDynamicSize<T>):
+bb0(%0 : $*EnumWithClassArchetypeAndDynamicSize<T>):
%1 = alloc_stack $EnumWithClassArchetypeAndDynamicSize<T>
copy_addr %0 to [initialization] %1 : $*EnumWithClassArchetypeAndDynamicSize<T>
dealloc_stack %1 : $*EnumWithClassArchetypeAndDynamicSize<T>
diff --git a/test/IRGen/builtin_word.sil b/test/IRGen/builtin_word.sil
index 45bc3dc..10db401 100644
--- a/test/IRGen/builtin_word.sil
+++ b/test/IRGen/builtin_word.sil
@@ -36,7 +36,7 @@
// ARM32: ret { i32, i64 } %4
// ARM32: }
sil @word_zextOrBitCast : $(Builtin.Int32, Builtin.Word) -> (Builtin.Word, Builtin.Int64) {
-entry(%i : @trivial $Builtin.Int32, %w : @trivial $Builtin.Word):
+entry(%i : $Builtin.Int32, %w : $Builtin.Word):
%j = builtin "zextOrBitCast_Int32_Word"(%i : $Builtin.Int32) : $Builtin.Word
%v = builtin "zextOrBitCast_Word_Int64"(%w : $Builtin.Word) : $Builtin.Int64
%t = tuple (%j : $Builtin.Word, %v : $Builtin.Int64)
@@ -58,7 +58,7 @@
// ARM32: ret { i32, i32 } %4
// ARM32: }
sil @word_truncOrBitCast : $(Builtin.Word, Builtin.Int64) -> (Builtin.Int32, Builtin.Word) {
-entry(%w : @trivial $Builtin.Word, %i : @trivial $Builtin.Int64):
+entry(%w : $Builtin.Word, %i : $Builtin.Int64):
%v = builtin "truncOrBitCast_Word_Int32"(%w : $Builtin.Word) : $Builtin.Int32
%j = builtin "truncOrBitCast_Int64_Word"(%i : $Builtin.Int64) : $Builtin.Word
%t = tuple (%v : $Builtin.Int32, %j : $Builtin.Word)
diff --git a/test/IRGen/class_isa_pointers.sil b/test/IRGen/class_isa_pointers.sil
index 053d4e7..3e38f41 100644
--- a/test/IRGen/class_isa_pointers.sil
+++ b/test/IRGen/class_isa_pointers.sil
@@ -60,7 +60,7 @@
unreachable
}
sil private @$s18class_isa_pointers7MongrelC7bellsOnACSgSi_tcfcTo : $@convention(objc_method) (Int, Purebred) -> () {
-entry(%0 : @trivial $Int, %1 : @unowned $Purebred):
+entry(%0 : $Int, %1 : @unowned $Purebred):
unreachable
}
sil private @$s18class_isa_pointers7MongrelCACycfcTo : $@convention(objc_method) (Purebred) -> () {
diff --git a/test/IRGen/class_isa_pointers_armv7k_watchos.sil b/test/IRGen/class_isa_pointers_armv7k_watchos.sil
index e86931b..e258eaf 100644
--- a/test/IRGen/class_isa_pointers_armv7k_watchos.sil
+++ b/test/IRGen/class_isa_pointers_armv7k_watchos.sil
@@ -58,7 +58,7 @@
unreachable
}
sil private @$s33class_isa_pointers_armv7k_watchos7MongrelC7bellsOnACSgSi_tcfcTo : $@convention(objc_method) (Int, Purebred) -> () {
-entry(%0 : @trivial $Int, %1 : @unowned $Purebred):
+entry(%0 : $Int, %1 : @unowned $Purebred):
unreachable
}
sil private @$s33class_isa_pointers_armv7k_watchos7MongrelCACycfcTo : $@convention(objc_method) (Purebred) -> () {
diff --git a/test/IRGen/copy_value_destroy_value.sil b/test/IRGen/copy_value_destroy_value.sil
index fa4cea3..1846cb7 100644
--- a/test/IRGen/copy_value_destroy_value.sil
+++ b/test/IRGen/copy_value_destroy_value.sil
@@ -16,11 +16,11 @@
var t3 : Builtin.Int32
}
-// CHECK: define{{( protected)?}} swiftcc void @trivial(
+// CHECK: define{{( protected)?}} swiftcc void @trivial_arg(
// CHECK-NEXT: entry
// CHECK-NEXT: ret void
-sil @trivial : $@convention(thin) (Builtin.Int32) -> () {
-bb0(%0 : @trivial $Builtin.Int32):
+sil @trivial_arg : $@convention(thin) (Builtin.Int32) -> () {
+bb0(%0 : $Builtin.Int32):
%1 = copy_value %0 : $Builtin.Int32
destroy_value %1 : $Builtin.Int32
%2 = tuple()
diff --git a/test/IRGen/error_self_conformance.sil b/test/IRGen/error_self_conformance.sil
new file mode 100644
index 0000000..8024181
--- /dev/null
+++ b/test/IRGen/error_self_conformance.sil
@@ -0,0 +1,19 @@
+// RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil -emit-ir %s | %FileCheck %s -DINT=i%target-ptrsize
+
+import Swift
+
+sil @take_any_error : $@convention(thin) <T: Error> (@in T) -> ()
+
+// CHECK-LABEL: swiftcc void @test(%swift.error**
+sil @test : $@convention(thin) (@in Error) -> () {
+entry(%0 : $*Error):
+ // CHECK: [[VALUE:%.*]] = bitcast %swift.error** %0 to %swift.opaque*
+ // CHECK-NEXT: [[T0:%.*]] = call swiftcc %swift.metadata_response @"$ss5Error_pMa"([[INT]] 0)
+ // CHECK-NEXT: [[ERROR_METADATA:%.*]] = extractvalue %swift.metadata_response [[T0]], 0
+ // CHECK-NEXT: call swiftcc void @take_any_error(%swift.opaque* noalias nocapture [[VALUE]], %swift.type* [[ERROR_METADATA]], i8** @"$ss5ErrorWS")
+ // CHECK-NEXT: ret void
+ %take = function_ref @take_any_error : $@convention(thin) <T: Error> (@in T) -> ()
+ apply %take<Error>(%0) : $@convention(thin) <T: Error> (@in T) -> ()
+ %ret = tuple ()
+ return %ret : $()
+}
diff --git a/test/IRGen/generic_classes.sil b/test/IRGen/generic_classes.sil
index 47d2548..6faabbf 100644
--- a/test/IRGen/generic_classes.sil
+++ b/test/IRGen/generic_classes.sil
@@ -280,7 +280,7 @@
// CHECK: [[Y_ADDR:%.*]] = getelementptr inbounds i8, i8* [[CLASS_BYTE_ARRAY]], i64 [[Y_OFFSET]]
// CHECK: bitcast i8* [[Y_ADDR]] to %swift.opaque*
sil @RootGeneric_concrete_fragile_dependent_member_access_y : $<F> (RootGeneric<F>) -> @out F {
-entry(%z : @trivial $*F, %c : @unowned $RootGeneric<F>):
+entry(%z : $*F, %c : @unowned $RootGeneric<F>):
%p = ref_element_addr %c : $RootGeneric<F>, #RootGeneric.y
copy_addr %p to [initialization] %z : $*F
%t = tuple ()
@@ -291,7 +291,7 @@
// CHECK: [[Y_ADDR:%.*]] = getelementptr inbounds {{.*}}, {{.*}}* %1, i32 0, i32 3
// CHECK: bitcast %TSi* [[Y_ADDR]] to i8*
sil @RootGeneric_subst_concrete_fragile_dependent_member_access_y : $(RootGeneric<Int>) -> @out Int {
-entry(%z : @trivial $*Int, %c : @unowned $RootGeneric<Int>):
+entry(%z : $*Int, %c : @unowned $RootGeneric<Int>):
%p = ref_element_addr %c : $RootGeneric<Int>, #RootGeneric.y
copy_addr %p to [initialization] %z : $*Int
%t = tuple ()
diff --git a/test/IRGen/generic_classes_objc.sil b/test/IRGen/generic_classes_objc.sil
index 213ac89..c02e162 100644
--- a/test/IRGen/generic_classes_objc.sil
+++ b/test/IRGen/generic_classes_objc.sil
@@ -33,7 +33,7 @@
}
sil @$s20generic_classes_objc19GenericInheritsObjCC7bellsOnACyxGSgSi_tcfcTo : $@convention(objc_method) <T> (Int, @owned GenericInheritsObjC<T>) -> @owned GenericInheritsObjC<T> {
-bb0(%0 : @trivial $Int, %1 : @owned $GenericInheritsObjC<T>):
+bb0(%0 : $Int, %1 : @owned $GenericInheritsObjC<T>):
unreachable
}
@@ -61,7 +61,7 @@
}
sil @$s20generic_classes_objc20GenericInheritsObjC2C7bellsOnACyxGSgSi_tcfcTo : $@convention(objc_method) <T> (Int, @owned GenericInheritsObjC<T>) -> @owned GenericInheritsObjC<T> {
-bb0(%0 : @trivial $Int, %1 : @owned $GenericInheritsObjC<T>):
+bb0(%0 : $Int, %1 : @owned $GenericInheritsObjC<T>):
unreachable
}
diff --git a/test/IRGen/integer_literal.sil b/test/IRGen/integer_literal.sil
index cf82300..1adec4a 100644
--- a/test/IRGen/integer_literal.sil
+++ b/test/IRGen/integer_literal.sil
@@ -87,7 +87,7 @@
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc {{.*}} @trunc_s16
sil @trunc_s16 : $(Builtin.IntLiteral) -> (Builtin.Int16, Builtin.Int1) {
-entry(%0 : @trivial $Builtin.IntLiteral):
+entry(%0 : $Builtin.IntLiteral):
// CHECK: [[WIDTH:%.*]] = lshr i32 %1, 8
// CHECK-NEXT: [[OVERFLOW:%.*]] = icmp ugt i32 [[WIDTH]], 16
// CHECK-NEXT: br i1 [[OVERFLOW]], label %[[INVALID:[a-z.]+]], label %[[VALID:[a-z.]+]]
@@ -107,7 +107,7 @@
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc { i32, i1 } @trunc_s32
sil @trunc_s32 : $(Builtin.IntLiteral) -> (Builtin.Int32, Builtin.Int1) {
-entry(%0 : @trivial $Builtin.IntLiteral):
+entry(%0 : $Builtin.IntLiteral):
// CHECK: [[WIDTH:%.*]] = lshr i32 %1, 8
// CHECK-NEXT: [[OVERFLOW:%.*]] = icmp ugt i32 [[WIDTH]], 32
// CHECK-NEXT: br i1 [[OVERFLOW]], label %[[INVALID:[a-z.]+]], label %[[VALID:[a-z.]+]]
@@ -126,7 +126,7 @@
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc {{.*}} @trunc_s48
sil @trunc_s48 : $(Builtin.IntLiteral) -> (Builtin.Int48, Builtin.Int1) {
-entry(%0 : @trivial $Builtin.IntLiteral):
+entry(%0 : $Builtin.IntLiteral):
// CHECK: [[WIDTH:%.*]] = lshr i32 %1, 8
// CHECK-NEXT: [[OVERFLOW:%.*]] = icmp ugt i32 [[WIDTH]], 48
// CHECK-NEXT: br i1 [[OVERFLOW]], label %[[INVALID:[a-z.]+]], label %[[VALID:[a-z.]+]]
@@ -157,7 +157,7 @@
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc { i64, i1 } @trunc_s64
sil @trunc_s64 : $(Builtin.IntLiteral) -> (Builtin.Int64, Builtin.Int1) {
-entry(%0 : @trivial $Builtin.IntLiteral):
+entry(%0 : $Builtin.IntLiteral):
// CHECK: [[WIDTH:%.*]] = lshr i32 %1, 8
// CHECK-NEXT: [[OVERFLOW:%.*]] = icmp ugt i32 [[WIDTH]], 64
// CHECK-NEXT: br i1 [[OVERFLOW]], label %[[INVALID:[a-z.]+]], label %[[VALID:[a-z.]+]]
@@ -194,7 +194,7 @@
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc {{.*}} @trunc_u16
sil @trunc_u16 : $(Builtin.IntLiteral) -> (Builtin.Int16, Builtin.Int1) {
-entry(%0 : @trivial $Builtin.IntLiteral):
+entry(%0 : $Builtin.IntLiteral):
// CHECK: [[WIDTH:%.*]] = lshr i32 %1, 8
// CHECK-NEXT: [[NEGATIVE:%.*]] = trunc i32 %1 to i1
// CHECK-NEXT: [[LARGE:%.*]] = icmp ugt i32 [[WIDTH]], 17
@@ -216,7 +216,7 @@
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc { i32, i1 } @trunc_u32
sil @trunc_u32 : $(Builtin.IntLiteral) -> (Builtin.Int32, Builtin.Int1) {
-entry(%0 : @trivial $Builtin.IntLiteral):
+entry(%0 : $Builtin.IntLiteral):
// CHECK: [[WIDTH:%.*]] = lshr i32 %1, 8
// CHECK-NEXT: [[NEGATIVE:%.*]] = trunc i32 %1 to i1
// CHECK-NEXT: [[LARGE:%.*]] = icmp ugt i32 [[WIDTH]], 33
@@ -237,7 +237,7 @@
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc {{.*}} @trunc_u48
sil @trunc_u48 : $(Builtin.IntLiteral) -> (Builtin.Int48, Builtin.Int1) {
-entry(%0 : @trivial $Builtin.IntLiteral):
+entry(%0 : $Builtin.IntLiteral):
// CHECK: [[WIDTH:%.*]] = lshr i32 %1, 8
// CHECK-NEXT: [[NEGATIVE:%.*]] = trunc i32 %1 to i1
// CHECK-NEXT: [[LARGE:%.*]] = icmp ugt i32 [[WIDTH]], 49
@@ -270,7 +270,7 @@
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc { i64, i1 } @trunc_u64
sil @trunc_u64 : $(Builtin.IntLiteral) -> (Builtin.Int64, Builtin.Int1) {
-entry(%0 : @trivial $Builtin.IntLiteral):
+entry(%0 : $Builtin.IntLiteral):
// CHECK: [[WIDTH:%.*]] = lshr i32 %1, 8
// CHECK-NEXT: [[NEGATIVE:%.*]] = trunc i32 %1 to i1
// CHECK-NEXT: [[LARGE:%.*]] = icmp ugt i32 [[WIDTH]], 65
@@ -309,7 +309,7 @@
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc half @sitofp16
sil @sitofp16 : $(Builtin.IntLiteral) -> Builtin.FPIEEE16 {
-entry(%0 : @trivial $Builtin.IntLiteral):
+entry(%0 : $Builtin.IntLiteral):
// CHECK: [[T0:%.*]] = call swiftcc float @swift_intToFloat32(i32* %0, i32 %1)
// CHECK-NEXT: [[T1:%.*]] = fptrunc float [[T0]] to half
// CHECK-NEXT: ret half [[T1]]
@@ -319,7 +319,7 @@
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc float @sitofp32
sil @sitofp32 : $(Builtin.IntLiteral) -> Builtin.FPIEEE32 {
-entry(%0 : @trivial $Builtin.IntLiteral):
+entry(%0 : $Builtin.IntLiteral):
// CHECK: [[T0:%.*]] = call swiftcc float @swift_intToFloat32(i32* %0, i32 %1)
// CHECK-NEXT: ret float [[T0]]
%result = builtin "itofp_with_overflow_IntLiteral_FPIEEE32"(%0 : $Builtin.IntLiteral) : $Builtin.FPIEEE32
@@ -328,7 +328,7 @@
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc double @sitofp64
sil @sitofp64 : $(Builtin.IntLiteral) -> Builtin.FPIEEE64 {
-entry(%0 : @trivial $Builtin.IntLiteral):
+entry(%0 : $Builtin.IntLiteral):
// CHECK: [[T0:%.*]] = call swiftcc double @swift_intToFloat64(i32* %0, i32 %1)
// CHECK-NEXT: ret double [[T0]]
%result = builtin "itofp_with_overflow_IntLiteral_FPIEEE64"(%0 : $Builtin.IntLiteral) : $Builtin.FPIEEE64
@@ -337,7 +337,7 @@
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc x86_fp80 @sitofp80
sil @sitofp80 : $(Builtin.IntLiteral) -> Builtin.FPIEEE80 {
-entry(%0 : @trivial $Builtin.IntLiteral):
+entry(%0 : $Builtin.IntLiteral):
// CHECK: [[T0:%.*]] = call swiftcc double @swift_intToFloat64(i32* %0, i32 %1)
// CHECK-NEXT: [[T1:%.*]] = fpext double [[T0]] to x86_fp80
// CHECK-NEXT: ret x86_fp80 [[T1]]
@@ -347,7 +347,7 @@
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc fp128 @sitofp128
sil @sitofp128 : $(Builtin.IntLiteral) -> Builtin.FPIEEE128 {
-entry(%0 : @trivial $Builtin.IntLiteral):
+entry(%0 : $Builtin.IntLiteral):
// CHECK: [[T0:%.*]] = call swiftcc double @swift_intToFloat64(i32* %0, i32 %1)
// CHECK-NEXT: [[T1:%.*]] = fpext double [[T0]] to fp128
// CHECK-NEXT: ret fp128 [[T1]]
diff --git a/test/IRGen/invariant_load.sil b/test/IRGen/invariant_load.sil
index 2961f1b..e931f71 100644
--- a/test/IRGen/invariant_load.sil
+++ b/test/IRGen/invariant_load.sil
@@ -11,7 +11,7 @@
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc void @invariant_load
sil @invariant_load : $@convention(thin) (Builtin.RawPointer) -> () {
-entry(%p : @trivial $Builtin.RawPointer):
+entry(%p : $Builtin.RawPointer):
%a = pointer_to_address %p : $Builtin.RawPointer to [invariant] $*X
// CHECK: load i32, {{.*}} !invariant.load
// CHECK: load i32, {{.*}} !invariant.load
diff --git a/test/IRGen/keypaths.sil b/test/IRGen/keypaths.sil
index a0132be..709352b 100644
--- a/test/IRGen/keypaths.sil
+++ b/test/IRGen/keypaths.sil
@@ -241,27 +241,27 @@
sil @k_id : $@convention(thin) () -> ()
sil @k_get : $@convention(thin) (@in_guaranteed S) -> @out Int {
-bb0(%0 : @trivial $*Int, %1 : @trivial $*S):
+bb0(%0 : $*Int, %1 : $*S):
unreachable
}
sil @l_get : $@convention(thin) (@in_guaranteed C) -> @out Int {
-bb0(%0 : @trivial $*Int, %1 : @trivial $*C):
+bb0(%0 : $*Int, %1 : $*C):
unreachable
}
sil @l_set : $@convention(thin) (@in_guaranteed Int, @in_guaranteed C) -> () {
-bb0(%0 : @trivial $*Int, %1 : @trivial $*C):
+bb0(%0 : $*Int, %1 : $*C):
unreachable
}
sil @m_get : $@convention(thin) (@in_guaranteed S) -> @out @callee_guaranteed () -> @out () {
-bb0(%0 : @trivial $*@callee_guaranteed () -> @out (), %1 : @trivial $*S):
+bb0(%0 : $*@callee_guaranteed () -> @out (), %1 : $*S):
unreachable
}
sil @m_set : $@convention(thin) (@in_guaranteed @callee_guaranteed () -> @out (), @inout S) -> () {
-bb0(%0 : @trivial $*@callee_guaranteed () -> @out (), %1 : @trivial $*S):
+bb0(%0 : $*@callee_guaranteed () -> @out (), %1 : $*S):
unreachable
}
@@ -363,7 +363,7 @@
sil @r_set : $@convention(thin) (@in_guaranteed S, @in_guaranteed C, UnsafeRawPointer) -> ()
sil @generic_computed_property_indices : $@convention(thin) <A: Hashable, B: Hashable> (@in_guaranteed A, @in_guaranteed B, @in_guaranteed A, @in_guaranteed B, @in_guaranteed A, @in_guaranteed B) -> () {
-entry(%0 : @trivial $*A, %1 : @trivial $*B, %2 : @trivial $*A, %3 : @trivial $*B, %4 : @trivial $*A, %5 : @trivial $*B):
+entry(%0 : $*A, %1 : $*B, %2 : $*A, %3 : $*B, %4 : $*A, %5 : $*B):
%s = keypath $WritableKeyPath<A, B>, <X: Hashable, Y: Hashable> (
root $X;
settable_property $Y,
diff --git a/test/IRGen/keypaths_external.sil b/test/IRGen/keypaths_external.sil
index e03f61c..3b06e79 100644
--- a/test/IRGen/keypaths_external.sil
+++ b/test/IRGen/keypaths_external.sil
@@ -10,7 +10,7 @@
import keypaths_external_other
sil @generic_external : $@convention(thin) <A: Hashable, B: Hashable> (@in_guaranteed A, @in_guaranteed B, @in_guaranteed A, @in_guaranteed B, @in_guaranteed A, @in_guaranteed B) -> () {
-entry(%0 : @trivial $*A, %1 : @trivial $*B, %2 : @trivial $*A, %3 : @trivial $*B, %4 : @trivial $*A, %5 : @trivial $*B):
+entry(%0 : $*A, %1 : $*B, %2 : $*A, %3 : $*B, %4 : $*A, %5 : $*B):
%t = keypath $KeyPath<G<B>, B>, <Z> (
root $G<Z>;
gettable_property $Z,
diff --git a/test/IRGen/keypaths_objc.sil b/test/IRGen/keypaths_objc.sil
index 27d5da5..a14e06f 100644
--- a/test/IRGen/keypaths_objc.sil
+++ b/test/IRGen/keypaths_objc.sil
@@ -41,7 +41,7 @@
}
sil hidden @$s13keypaths_objc1CCACycfcTo : $@convention(objc_method) (@objc_metatype C.Type) -> @owned C {
-entry(%0 : @trivial $@objc_metatype C.Type):
+entry(%0 : $@objc_metatype C.Type):
unreachable
}
diff --git a/test/IRGen/multi_payload_shifting.swift b/test/IRGen/multi_payload_shifting.swift
new file mode 100644
index 0000000..44d9e0b
--- /dev/null
+++ b/test/IRGen/multi_payload_shifting.swift
@@ -0,0 +1,32 @@
+// RUN: %target-swift-frontend -enable-objc-interop -assume-parsing-unqualified-ownership-sil -primary-file %s -emit-ir | %FileCheck %s
+
+// REQUIRES: CPU=x86_64
+
+class Tag {}
+
+struct Scalar {
+ var str = ""
+ var x = Tag()
+ var style: BinaryChoice = .zero
+ enum BinaryChoice: UInt32 {
+ case zero = 0
+ case one
+ }
+}
+
+public struct Sequence {
+ var tag: Tag = Tag()
+ var tag2: Tag = Tag()
+}
+
+enum Node {
+ case scalar(Scalar)
+ case sequence(Sequence)
+}
+
+// CHECK: define internal i32 @"$s22multi_payload_shifting4NodeOwet"(%swift.opaque* noalias %value, i32 %numEmptyCases, %swift.type* %Node)
+// CHECK: [[ADDR:%.*]] = getelementptr inbounds { i64, i64, i64, i8 }, { i64, i64, i64, i8 }* {{.*}}, i32 0, i32 3
+// CHECK: [[BYTE:%.*]] = load i8, i8* [[ADDR]]
+// Make sure we zext before we shift.
+// CHECK: [[ZEXT:%.*]] = zext i8 [[BYTE]] to i32
+// CHECK: shl i32 [[ZEXT]], 10
diff --git a/test/IRGen/objc_attr_NSManaged.sil b/test/IRGen/objc_attr_NSManaged.sil
index 17f4445..19b6bbb7 100644
--- a/test/IRGen/objc_attr_NSManaged.sil
+++ b/test/IRGen/objc_attr_NSManaged.sil
@@ -42,7 +42,7 @@
}
sil @$s19objc_attr_NSManaged10SwiftGizmoC7bellsOnACSgSi_tcfcTo : $@convention(objc_method) (Int, @owned SwiftGizmo) -> @owned SwiftGizmo? {
-bb0(%0 : @trivial $Int, %1 : @owned $SwiftGizmo):
+bb0(%0 : $Int, %1 : @owned $SwiftGizmo):
unreachable
}
@@ -52,7 +52,7 @@
}
sil @$s19objc_attr_NSManaged10SwiftGizmoC7bellsOnACSi_tcfc : $@convention(method) (Int, @owned SwiftGizmo) -> @owned SwiftGizmo {
-bb0(%0 : @trivial $Int, %1 : @owned $SwiftGizmo):
+bb0(%0 : $Int, %1 : @owned $SwiftGizmo):
return %1 : $SwiftGizmo
}
diff --git a/test/IRGen/objc_dealloc.sil b/test/IRGen/objc_dealloc.sil
index cfc2cb2..5567089 100644
--- a/test/IRGen/objc_dealloc.sil
+++ b/test/IRGen/objc_dealloc.sil
@@ -131,6 +131,6 @@
}
sil @$s12objc_dealloc10SwiftGizmoC7bellsOnACSgSi_tcfcTo : $@convention(objc_method) (Int, @owned SwiftGizmo) -> @owned SwiftGizmo? {
-bb0(%0 : @trivial $Int, %1 : @owned $SwiftGizmo):
+bb0(%0 : $Int, %1 : @owned $SwiftGizmo):
unreachable
}
diff --git a/test/IRGen/objc_factory_method.sil b/test/IRGen/objc_factory_method.sil
index 29a507b..e05c345 100644
--- a/test/IRGen/objc_factory_method.sil
+++ b/test/IRGen/objc_factory_method.sil
@@ -18,7 +18,7 @@
// CHECK-LABEL: define {{.*}} @_TFCSo4HiveCfMS_FT5queenGSQCSo3Bee__S_
sil @_TFCSo4HiveCfMS_FT5queenGSQCSo3Bee__S_ : $@convention(thin) (@owned Optional<Bee>, @thick Hive.Type) -> @owned Optional<Hive> {
-bb0(%0 : @owned $Optional<Bee>, %1 : @trivial $@thick Hive.Type):
+bb0(%0 : @owned $Optional<Bee>, %1 : $@thick Hive.Type):
%2 = thick_to_objc_metatype %1 : $@thick Hive.Type to $@objc_metatype Hive.Type // users: %3, %4
// CHECK: load i8*, i8** @"\01L_selector(hiveWithQueen:)"
%3 = objc_method %2 : $@objc_metatype Hive.Type, #Hive.init!allocator.1.foreign : (Hive.Type) -> (Bee!) -> Hive!, $@convention(objc_method) (Optional<Bee>, @objc_metatype Hive.Type) -> @autoreleased Optional<Hive> // user: %4
diff --git a/test/IRGen/objc_generic_class_convention.sil b/test/IRGen/objc_generic_class_convention.sil
index fc98fd0..841081c 100644
--- a/test/IRGen/objc_generic_class_convention.sil
+++ b/test/IRGen/objc_generic_class_convention.sil
@@ -15,12 +15,12 @@
// CHECK-LABEL: define swiftcc void @method(i64, %TSo12GenericClassC* swiftself)
sil @method : $@convention(method) @pseudogeneric <T: AnyObject> (Int64, @guaranteed GenericClass<T>) -> () {
-entry(%0 : @trivial $Int64, %1 : @guaranteed $GenericClass<T>):
+entry(%0 : $Int64, %1 : @guaranteed $GenericClass<T>):
return undef : $()
}
// CHECK-LABEL: define void @objcMethod(i8*, i8*, i64)
sil @objcMethod : $@convention(objc_method) @pseudogeneric <T: AnyObject> (Int64, @guaranteed GenericClass<T>) -> () {
-entry(%0 : @trivial $Int64, %1 : @guaranteed $GenericClass<T>):
+entry(%0 : $Int64, %1 : @guaranteed $GenericClass<T>):
return undef : $()
}
diff --git a/test/IRGen/objc_implicit_with.sil b/test/IRGen/objc_implicit_with.sil
index d05221c..dc3a770 100644
--- a/test/IRGen/objc_implicit_with.sil
+++ b/test/IRGen/objc_implicit_with.sil
@@ -23,12 +23,12 @@
sil_vtable SwiftGizmo {}
sil @$s18objc_implicit_with10SwiftGizmoC3red5green4blueACSf_S2ftcfcTo : $@convention(objc_method) (Float, Float, Float, @owned SwiftGizmo) -> @owned SwiftGizmo {
-bb0(%0 : @trivial $Float, %1 : @trivial $Float, %2 : @trivial $Float, %3 : @owned $SwiftGizmo):
+bb0(%0 : $Float, %1 : $Float, %2 : $Float, %3 : @owned $SwiftGizmo):
return %3 : $SwiftGizmo
}
sil @$s18objc_implicit_with10SwiftGizmoC7bellsOnACSgSi_tcfcTo : $@convention(objc_method) (Int, @owned SwiftGizmo) -> @owned SwiftGizmo? {
-bb0(%0 : @trivial $Int, %1 : @owned $SwiftGizmo):
+bb0(%0 : $Int, %1 : @owned $SwiftGizmo):
unreachable
}
@@ -38,11 +38,11 @@
}
sil @$s18objc_implicit_with10SwiftGizmoC5color3red5green4blueySf_S2ftFTo : $@convention(objc_method) (Float, Float, Float, @owned SwiftGizmo) -> @owned SwiftGizmo {
-bb0(%0 : @trivial $Float, %1 : @trivial $Float, %2 : @trivial $Float, %3 : @owned $SwiftGizmo):
+bb0(%0 : $Float, %1 : $Float, %2 : $Float, %3 : @owned $SwiftGizmo):
return %3 : $SwiftGizmo
}
sil @$s18objc_implicit_with10SwiftGizmoC13otherColorFor3red5green4blueySf_S2ftFTo : $@convention(objc_method) (Float, Float, Float, @owned SwiftGizmo) -> @owned SwiftGizmo {
-bb0(%0 : @trivial $Float, %1 : @trivial $Float, %2 : @trivial $Float, %3 : @owned $SwiftGizmo):
+bb0(%0 : $Float, %1 : $Float, %2 : $Float, %3 : @owned $SwiftGizmo):
return %3 : $SwiftGizmo
}
diff --git a/test/IRGen/objc_int_encoding.sil b/test/IRGen/objc_int_encoding.sil
index 67f4546..125cc9b 100644
--- a/test/IRGen/objc_int_encoding.sil
+++ b/test/IRGen/objc_int_encoding.sil
@@ -20,7 +20,7 @@
}
sil hidden @$s17objc_int_encoding3FooC3foo1xSuSi_tFTo : $@convention(objc_method) (Int, @guaranteed Foo) -> UInt {
-entry(%0 : @trivial $Int, %1 : @owned $Foo):
+entry(%0 : $Int, %1 : @owned $Foo):
unreachable
}
sil @$s17objc_int_encoding3FooCACycfcTo : $@convention(objc_method) (@owned Foo) -> @owned Foo {
diff --git a/test/IRGen/objc_simd.sil b/test/IRGen/objc_simd.sil
index c2fb90f..d257c4f 100644
--- a/test/IRGen/objc_simd.sil
+++ b/test/IRGen/objc_simd.sil
@@ -25,7 +25,7 @@
// powerpc64le-LABEL: define{{( dllexport)?}}{{( protected)?}} <4 x float> @simd_c_args(<4 x float>)
// s390x-LABEL: define{{( dllexport)?}}{{( protected)?}} <4 x float> @simd_c_args(<4 x float>)
sil @simd_c_args : $@convention(c) (float4) -> float4 {
-entry(%x : @trivial $float4):
+entry(%x : $float4):
return %x : $float4
}
@@ -41,7 +41,7 @@
// powerpc64le-LABEL: define{{( dllexport)?}}{{( protected)?}} <3 x float> @simd_c_args_float3(<3 x float>)
// s390x-LABEL: define{{( dllexport)?}}{{( protected)?}} <3 x float> @simd_c_args_float3(<3 x float>)
sil @simd_c_args_float3 : $@convention(c) (float3) -> float3 {
-entry(%x : @trivial $float3):
+entry(%x : $float3):
// x86_64: [[COERCE:%.*]] = alloca <3 x float>, align 16
// x86_64: store <3 x float> %0, <3 x float>* [[COERCE]]
// x86_64: [[COERCED:%.*]] = bitcast <3 x float>* [[COERCE]] to %T4simd6float3V*
@@ -60,7 +60,7 @@
// powerpc64le-LABEL: define{{( dllexport)?}}{{( protected)?}} void @simd_native_args(%T4simd6float4V* noalias nocapture sret, %T4simd6float4V* noalias nocapture dereferenceable({{.*}}))
// s390x-LABEL: define{{( dllexport)?}}{{( protected)?}} void @simd_native_args(%T4simd6float4V* noalias nocapture sret, %T4simd6float4V* noalias nocapture dereferenceable({{.*}}))
sil @simd_native_args : $@convention(thin) (float4) -> float4 {
-entry(%x : @trivial $float4):
+entry(%x : $float4):
%f = function_ref @simd_c_args : $@convention(c) (float4) -> float4
%y = apply %f(%x) : $@convention(c) (float4) -> float4
return %y : $float4
@@ -78,7 +78,7 @@
// powerpc64le-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc { float, float, float } @simd_native_args_float3(float, float, float)
// s390x-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc { float, float, float } @simd_native_args_float3(float, float, float)
sil @simd_native_args_float3 : $@convention(thin) (float3) -> float3 {
-entry(%x : @trivial $float3):
+entry(%x : $float3):
%f = function_ref @simd_c_args_float3 : $@convention(c) (float3) -> float3
%y = apply %f(%x) : $@convention(c) (float3) -> float3
return %y : $float3
diff --git a/test/IRGen/ownership_qualified_memopts.sil b/test/IRGen/ownership_qualified_memopts.sil
index 620f526..5597f83 100644
--- a/test/IRGen/ownership_qualified_memopts.sil
+++ b/test/IRGen/ownership_qualified_memopts.sil
@@ -9,7 +9,7 @@
// CHECK-NOT: retain
// CHECK: ret void
sil @take_load : $@convention(thin) (@in Builtin.NativeObject) -> () {
-bb0(%0 : @trivial $*Builtin.NativeObject):
+bb0(%0 : $*Builtin.NativeObject):
load [take] %0 : $*Builtin.NativeObject
%1 = tuple()
return %1 : $()
@@ -20,7 +20,7 @@
// CHECK: retain
// CHECK: ret void
sil @copy_load : $@convention(thin) (@in Builtin.NativeObject) -> () {
-bb0(%0 : @trivial $*Builtin.NativeObject):
+bb0(%0 : $*Builtin.NativeObject):
load [copy] %0 : $*Builtin.NativeObject
%1 = tuple()
return %1 : $()
@@ -32,7 +32,7 @@
// CHECK-NOT: retain
// CHECK: ret void
sil @trivial_load : $@convention(thin) (@in Builtin.Int32) -> () {
-bb0(%0 : @trivial $*Builtin.Int32):
+bb0(%0 : $*Builtin.Int32):
load [trivial] %0 : $*Builtin.Int32
%1 = tuple()
return %1 : $()
@@ -46,7 +46,7 @@
// CHECK-NOT: release
// CHECK: ret void
sil @init_store : $@convention(thin) (@in Builtin.NativeObject, Builtin.NativeObject) -> () {
-bb0(%0 : @trivial $*Builtin.NativeObject, %1 : @trivial $Builtin.NativeObject):
+bb0(%0 : $*Builtin.NativeObject, %1 : $Builtin.NativeObject):
store %1 to [init] %0 : $*Builtin.NativeObject
%2 = tuple()
return %2 : $()
@@ -58,7 +58,7 @@
// CHECK: release
// CHECK: ret void
sil @assign_store : $@convention(thin) (@in Builtin.NativeObject, Builtin.NativeObject) -> () {
-bb0(%0 : @trivial $*Builtin.NativeObject, %1 : @unowned $Builtin.NativeObject):
+bb0(%0 : $*Builtin.NativeObject, %1 : @unowned $Builtin.NativeObject):
store %1 to [assign] %0 : $*Builtin.NativeObject
%2 = tuple()
return %2 : $()
@@ -70,7 +70,7 @@
}
sil @assign_store_2 : $@convention(thin) (@in Foo, Foo) -> () {
-bb0(%0 : @trivial $*Foo, %1 : @trivial $Foo):
+bb0(%0 : $*Foo, %1 : $Foo):
%2 = load [copy] %0 : $*Foo
store %1 to [assign] %0 : $*Foo
%3 = tuple()
@@ -85,7 +85,7 @@
// CHECK-NOT: release
// CHECK: ret void
sil @trivial_store : $@convention(thin) (@in Builtin.Int32, Builtin.Int32) -> () {
-bb0(%0 : @trivial $*Builtin.Int32, %1 : @trivial $Builtin.Int32):
+bb0(%0 : $*Builtin.Int32, %1 : $Builtin.Int32):
store %1 to [trivial] %0 : $*Builtin.Int32
%2 = tuple()
return %2 : $()
diff --git a/test/IRGen/subclass_existentials.sil b/test/IRGen/subclass_existentials.sil
index 28d2b42..e2b7e8f 100644
--- a/test/IRGen/subclass_existentials.sil
+++ b/test/IRGen/subclass_existentials.sil
@@ -182,7 +182,7 @@
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc void @checkExistentialMetatypeDowncast(%swift.type*, %swift.type*, i8**)
sil @checkExistentialMetatypeDowncast : $@convention(thin) (@owned @thick C.Type, @owned @thick (C & P).Type) -> () {
-bb0(%0 : @trivial $@thick C.Type, %1 : @trivial $@thick (C & P).Type):
+bb0(%0 : $@thick C.Type, %1 : $@thick (C & P).Type):
// CHECK: [[METATYPE:%.*]] = bitcast %swift.type* %0 to i8*
// CHECK-NEXT: [[TMP:%.*]] = call swiftcc %swift.metadata_response @"$s21subclass_existentials1DCMa"([[INT]] 0)
@@ -203,7 +203,7 @@
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc void @checkExistentialSameClassMetatypeDowncast(%swift.type*)
sil @checkExistentialSameClassMetatypeDowncast : $@convention(thin) (@owned @thick C.Type) -> () {
-bb0(%0 : @trivial $@thick C.Type):
+bb0(%0 : $@thick C.Type):
// CHECK: [[METATYPE:%.*]] = bitcast %swift.type* %0 to i8*
// CHECK-NEXT: [[RESULT:%.*]] = call { i8*, i8** } @dynamic_cast_existential_1_unconditional(i8* [[METATYPE]], %swift.type* %0, {{.*}} @"$s21subclass_existentials1PMp"
diff --git a/test/IRGen/yield_once.sil b/test/IRGen/yield_once.sil
index b0b0b50..45d46a8 100644
--- a/test/IRGen/yield_once.sil
+++ b/test/IRGen/yield_once.sil
@@ -48,7 +48,7 @@
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc void @test_simple_call(i1)
sil @test_simple_call : $(Builtin.Int1) -> () {
-entry(%flag : @trivial $Builtin.Int1):
+entry(%flag : $Builtin.Int1):
// Allocate the buffer.
// CHECK: [[T0:%.*]] = alloca {{\[}}[[BUFFER_SIZE]] x i8], align [[BUFFER_ALIGN]]
// CHECK-NEXT: [[BUFFER:%.*]] = getelementptr inbounds {{\[}}[[BUFFER_SIZE]] x i8], {{\[}}[[BUFFER_SIZE]] x i8]* [[T0]], i32 0, i32 0
diff --git a/test/IRGen/yield_once_big.sil b/test/IRGen/yield_once_big.sil
index 1889cab..dd54abb 100644
--- a/test/IRGen/yield_once_big.sil
+++ b/test/IRGen/yield_once_big.sil
@@ -91,7 +91,7 @@
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc void @test_simple_call(i1)
sil @test_simple_call : $(Builtin.Int1) -> () {
-entry(%flag : @trivial $Builtin.Int1):
+entry(%flag : $Builtin.Int1):
// Allocate the buffer.
// CHECK: [[T0:%.*]] = alloca {{\[}}[[BUFFER_SIZE]] x i8], align [[BUFFER_ALIGN]]
// CHECK-NEXT: [[BUFFER:%.*]] = getelementptr inbounds {{\[}}[[BUFFER_SIZE]] x i8], {{\[}}[[BUFFER_SIZE]] x i8]* [[T0]], i32 0, i32 0
diff --git a/test/IRGen/yield_once_biggish.sil b/test/IRGen/yield_once_biggish.sil
index 9ba6d00..72bf6b4 100644
--- a/test/IRGen/yield_once_biggish.sil
+++ b/test/IRGen/yield_once_biggish.sil
@@ -99,7 +99,7 @@
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc void @test_simple_call(i1)
sil @test_simple_call : $(Builtin.Int1) -> () {
-entry(%flag : @trivial $Builtin.Int1):
+entry(%flag : $Builtin.Int1):
// Allocate the buffer.
// CHECK: [[T0:%.*]] = alloca {{\[}}[[BUFFER_SIZE]] x i8], align [[BUFFER_ALIGN]]
// CHECK-NEXT: [[BUFFER:%.*]] = getelementptr inbounds {{\[}}[[BUFFER_SIZE]] x i8], {{\[}}[[BUFFER_SIZE]] x i8]* [[T0]], i32 0, i32 0
diff --git a/test/IRGen/yield_once_indirect.sil b/test/IRGen/yield_once_indirect.sil
index 63643ea..27d54ab 100644
--- a/test/IRGen/yield_once_indirect.sil
+++ b/test/IRGen/yield_once_indirect.sil
@@ -88,7 +88,7 @@
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc void @test_simple_call(i1)
sil @test_simple_call : $(Builtin.Int1) -> () {
-entry(%flag : @trivial $Builtin.Int1):
+entry(%flag : $Builtin.Int1):
// Allocate the buffer.
// CHECK: [[T0:%.*]] = alloca {{\[}}[[BUFFER_SIZE]] x i8], align [[BUFFER_ALIGN]]
// CHECK-NEXT: [[BUFFER:%.*]] = getelementptr inbounds {{\[}}[[BUFFER_SIZE]] x i8], {{\[}}[[BUFFER_SIZE]] x i8]* [[T0]], i32 0, i32 0
diff --git a/test/Interpreter/dynamic_replacement_chaining.swift b/test/Interpreter/dynamic_replacement_chaining.swift
index b15ac9b..de36972 100644
--- a/test/Interpreter/dynamic_replacement_chaining.swift
+++ b/test/Interpreter/dynamic_replacement_chaining.swift
@@ -16,6 +16,7 @@
// RUN: %target-codesign %t/main %t/libA.%target-dylib-extension %t/libB.%target-dylib-extension %t/libC.%target-dylib-extension
// RUN: %target-run %t/main %t/libA.%target-dylib-extension %t/libB.%target-dylib-extension %t/libC.%target-dylib-extension
+// REQUIRES: executable_test
import A
diff --git a/test/Interpreter/error_self_conformance.swift b/test/Interpreter/error_self_conformance.swift
new file mode 100644
index 0000000..73b4268
--- /dev/null
+++ b/test/Interpreter/error_self_conformance.swift
@@ -0,0 +1,75 @@
+// RUN: %target-run-simple-swift | %FileCheck %s
+// REQUIRES: executable_test
+
+struct BoxedError<T: Error> {
+ var contents: T
+}
+
+enum MyError: Error {
+ case nothingImportant
+ case reallyImportant(String)
+}
+
+// CHECK: start
+print("start")
+
+let value = MyError.reallyImportant("hello")
+
+// CHECK-NEXT: reallyImportant("hello")
+print(value)
+
+func takeBoxedError<T>(error: BoxedError<T>) -> Error {
+ return error.contents
+}
+
+func makeBoxedError<T: Error>(error: T) -> BoxedError<Error> {
+ return BoxedError(contents: error)
+}
+
+let unboxedValue = takeBoxedError(error: makeBoxedError(error: value))
+
+// CHECK-NEXT: reallyImportant("hello")
+print(unboxedValue)
+
+let errorValue: Error = MyError.reallyImportant("goodbye")
+
+func castValueToError<T>(error: T) -> Error? {
+ return error as? Error
+}
+
+// CHECK-NEXT: reallyImportant("goodbye")
+print(castValueToError(error: errorValue) ?? value)
+
+struct Carrier<T> {
+ var name: String
+}
+protocol ErrorCarrier {}
+extension Carrier: ErrorCarrier where T: Error {}
+
+func castValueToErrorCarrier<T>(_ value: T) -> ErrorCarrier? {
+ return value as? ErrorCarrier
+}
+
+// CHECK-NEXT: nil
+print(castValueToErrorCarrier(Carrier<Int>(name: "A carrier of numbers")))
+
+// CHECK-NEXT: A carrier of my errors
+print(castValueToErrorCarrier(Carrier<MyError>(name: "A carrier of my errors")))
+
+// CHECK-NEXT: A carrier of all errors
+print(castValueToErrorCarrier(Carrier<Error>(name: "A carrier of all errors")))
+
+// CHECK-NEXT: nil
+protocol ErrorRefinement : Error {}
+print(castValueToErrorCarrier(Carrier<ErrorRefinement>(name: "A carrier of refined errors")))
+
+// CHECK-NEXT: nil
+protocol OtherProtocol {}
+print(castValueToErrorCarrier(Carrier<Error & OtherProtocol>(name: "A carrier of composed errors")))
+
+// CHECK-NEXT: nil
+class C {}
+print(castValueToErrorCarrier(Carrier<Error & C>(name: "A carrier of classic composed errors")))
+
+// CHECK-NEXT: end
+print("end")
diff --git a/test/Interpreter/multi_payload_shifting.swift b/test/Interpreter/multi_payload_shifting.swift
new file mode 100644
index 0000000..71c9a34
--- /dev/null
+++ b/test/Interpreter/multi_payload_shifting.swift
@@ -0,0 +1,50 @@
+// RUN: %target-run-simple-swift
+
+// REQUIRES: executable_test
+
+import Swift
+import StdlibUnittest
+
+class Tag {}
+
+struct Scalar {
+ var str = ""
+ var x = Tag()
+ var style: BinaryChoice = .zero
+ enum BinaryChoice: UInt32 {
+ case zero = 0
+ case one
+ }
+}
+
+public struct Sequence {
+ var tag: Tag = Tag()
+ var tag2: Tag = Tag()
+}
+
+enum Node {
+ case scalar(Scalar)
+ case sequence(Sequence)
+}
+
+func createOptionalNodeNil<T>(_ t: T) -> T? {
+ return nil
+}
+
+func isNil<T>(_ t: T?) -> Bool {
+ return t == nil
+}
+
+var tests = TestSuite("extra inhabitants shifts")
+
+
+tests.test("test-shift-fix") {
+ let opt = createOptionalNodeNil(Node.scalar(Scalar()))
+ var res = false
+ if isNil(opt) {
+ res = true
+ }
+ expectEqual(true, res)
+}
+
+runAllTests()
diff --git a/test/Interpreter/patternmatch_on_enum_protocol_leak.swift b/test/Interpreter/patternmatch_on_enum_protocol_leak.swift
new file mode 100644
index 0000000..9187cdd
--- /dev/null
+++ b/test/Interpreter/patternmatch_on_enum_protocol_leak.swift
@@ -0,0 +1,46 @@
+// RUN: %target-run-simple-swift
+
+// REQUIRES: executable_test
+
+import StdlibUnittest
+
+// Make sure that in the following code we do not leak the case of the enum.
+
+protocol MyProtocol {}
+
+// An enum that wraps LeakingClass
+enum LeakingEnum1: MyProtocol {
+case eNone1
+case eLeakingClass1(LifetimeTracked)
+}
+
+// An enum that wraps LeakingClass
+enum LeakingEnum2 : MyProtocol {
+case eNone2
+case eLeakingClass2(LifetimeTracked)
+}
+
+var Tests = TestSuite("patternmatch_on_enum_protocol_leak")
+
+Tests.test("dontLeak") {
+ do {
+ let leakingClass = LifetimeTracked(0)
+ let leakEnum = LeakingEnum1.eLeakingClass1(leakingClass)
+ let control: MyProtocol = leakEnum
+
+ // This switch case order, interleaving LeakingEnum1 and LeakingEnum2 cases triggers the leak.
+ switch control
+ {
+ case LeakingEnum1.eNone1: break
+ case LeakingEnum2.eNone2: break
+
+ case LeakingEnum1.eLeakingClass1: break
+ case LeakingEnum2.eLeakingClass2: break
+
+ default: break
+ }
+ }
+ expectEqual(0, LifetimeTracked.instances)
+}
+
+runAllTests()
diff --git a/test/Misc/tbi.sil b/test/Misc/tbi.sil
index aa4f559..63e81ec 100644
--- a/test/Misc/tbi.sil
+++ b/test/Misc/tbi.sil
@@ -33,7 +33,7 @@
import Builtin
sil @testTBI : $@convention(thin) (Builtin.Int64) -> Builtin.Int64 {
-bb0(%0 : @trivial $Builtin.Int64):
+bb0(%0 : $Builtin.Int64):
%1 = integer_literal $Builtin.Int64, 0x00FFFFFFFFFFFFFF
%2 = builtin "and_Int64"(%0 : $Builtin.Int64, %1 : $Builtin.Int64) : $Builtin.Int64
%3 = builtin "inttoptr_Int64"(%2 : $Builtin.Int64) : $Builtin.RawPointer
diff --git a/test/Parse/operators.swift b/test/Parse/operators.swift
index c73bba7..73694cd 100644
--- a/test/Parse/operators.swift
+++ b/test/Parse/operators.swift
@@ -116,8 +116,11 @@
func !!(x: Man, y: Man) {}
let foo = Man()
let bar = TheDevil()
-foo!!foo // expected-error{{cannot force unwrap value of non-optional type 'Man'}} {{4-5=}} expected-error{{consecutive statements}} {{6-6=;}}
-// expected-warning @-1 {{expression of type 'Man' is unused}}
+foo!!foo
+// expected-error@-1 {{cannot force unwrap value of non-optional type 'Man'}} {{4-5=}}
+// expected-error@-2 {{cannot force unwrap value of non-optional type 'Man'}} {{5-6=}}
+// expected-error@-3 {{consecutive statements}} {{6-6=;}}
+// expected-warning@-4 {{expression of type 'Man' is unused}}
foo??bar // expected-error{{broken standard library}} expected-error{{consecutive statements}} {{6-6=;}}
// expected-warning @-1 {{expression of type 'TheDevil' is unused}}
diff --git a/test/Parse/strange_interpolation.swift b/test/Parse/strange_interpolation.swift
index bf07d60..0c558f4 100644
--- a/test/Parse/strange_interpolation.swift
+++ b/test/Parse/strange_interpolation.swift
@@ -1,5 +1,10 @@
// RUN: %target-typecheck-verify-swift -swift-version 4.2
-// RUN: %target-run-simple-swift -swift-version 4.2 %s | %FileCheck %s
+
+// RUN: %empty-directory(%t)
+// RUN: %target-build-swift -swift-version 4.2 %s -o %t/main
+// RUN: %target-run %t/main | %FileCheck %s
+
+// REQUIRES: executable_test
let x = 1
diff --git a/test/Reflection/capture_descriptors.sil b/test/Reflection/capture_descriptors.sil
index 8ad5da2..dc11634 100644
--- a/test/Reflection/capture_descriptors.sil
+++ b/test/Reflection/capture_descriptors.sil
@@ -19,13 +19,13 @@
extension Int: P {}
sil @concrete_callee1 : $@convention(thin) (Int, @owned <τ_0_0> { var τ_0_0 } <Int>, @thin Int.Type, @thick P.Type) -> () {
-bb0(%i : @trivial $Int, %b : @owned $<τ_0_0> { var τ_0_0 } <Int>, %m : @trivial $@thin Int.Type, %p : @trivial $@thick P.Type):
+bb0(%i : $Int, %b : @owned $<τ_0_0> { var τ_0_0 } <Int>, %m : $@thin Int.Type, %p : $@thick P.Type):
%12 = tuple ()
return %12 : $()
}
sil @concrete_caller1 : $@convention(thin) (Int, @thick P.Type) -> @owned @callee_guaranteed () -> () {
-bb0(%i : @trivial $Int, %p : @trivial $@thick P.Type):
+bb0(%i : $Int, %p : $@thick P.Type):
%f = function_ref @concrete_callee1 : $@convention(thin) (Int, @owned <τ_0_0> { var τ_0_0 } <Int>, @thin Int.Type, @thick P.Type) -> ()
%b = alloc_box $<τ_0_0> { var τ_0_0 } <Int>
%m = metatype $@thin Int.Type
@@ -52,7 +52,7 @@
// and there are no metadata bindings
sil @generic_callee2 : $@convention(thin) <T, U> (@in T, @owned <τ_0_0> { var τ_0_0 } <U>) -> () {
-bb0(%i : @trivial $*T, %b : @owned $<τ_0_0> { var τ_0_0 } <U>):
+bb0(%i : $*T, %b : @owned $<τ_0_0> { var τ_0_0 } <U>):
%12 = tuple ()
return %12 : $()
}
@@ -85,7 +85,7 @@
// contain the caller's generic parameters.
sil @generic_callee3 : $@convention(thin) <T, U> (@in_guaranteed T) -> () {
-bb0(%t : @trivial $*T):
+bb0(%t : $*T):
%12 = tuple ()
return %12 : $()
}
@@ -123,7 +123,7 @@
// fulfilled by a thick metatype value.
sil @generic_callee4 : $@convention(thin) <T, U> (@thick Optional<T>.Type) -> () {
-bb0(%t : @trivial $@thick Optional<T>.Type):
+bb0(%t : $@thick Optional<T>.Type):
%12 = tuple ()
return %12 : $()
}
@@ -224,13 +224,13 @@
// Capturing lowered function types
sil @function_callee : $@convention(thin) (@convention(thin) () -> (), @convention(c) () -> (), @convention(block) () -> (), @convention(thick) () -> (), @convention(method) () -> (), @convention(witness_method: P) (Int) -> ()) -> () {
-bb0(%thin : @trivial $@convention(thin) () -> (), %c : @trivial $@convention(c) () -> (), %block : @unowned $@convention(block) () -> (), %thick : @unowned $@convention(thick) () -> (), %method : @trivial $@convention(method) () -> (), %witness_method : @trivial $@convention(witness_method: P) (Int) -> ()):
+bb0(%thin : $@convention(thin) () -> (), %c : $@convention(c) () -> (), %block : @unowned $@convention(block) () -> (), %thick : @unowned $@convention(thick) () -> (), %method : $@convention(method) () -> (), %witness_method : $@convention(witness_method: P) (Int) -> ()):
%12 = tuple ()
return %12 : $()
}
sil @function_caller : $@convention(thin) (@convention(thin) () -> (), @convention(c) () -> (), @convention(block) () -> (), @convention(thick) () -> (), @convention(method) () -> (), @convention(witness_method: P) (Int) -> ()) -> @owned @callee_guaranteed () -> () {
-bb0(%thin: @trivial $@convention(thin) () -> (), %c: @trivial $@convention(c) () -> (), %block: @unowned $@convention(block) () -> (), %thick: @unowned $@convention(thick) () -> (), %method: @trivial $@convention(method) () -> (), %witness_method: @trivial $@convention(witness_method: P) (Int) -> ()):
+bb0(%thin: $@convention(thin) () -> (), %c: $@convention(c) () -> (), %block: @unowned $@convention(block) () -> (), %thick: @unowned $@convention(thick) () -> (), %method: $@convention(method) () -> (), %witness_method: $@convention(witness_method: P) (Int) -> ()):
%f = function_ref @function_callee : $@convention(thin) (@convention(thin) () -> (), @convention(c) () -> (), @convention(block) () -> (), @convention(thick) () -> (), @convention(method) () -> (), @convention(witness_method: P) (Int) -> ()) -> ()
%result = partial_apply [callee_guaranteed] %f(%thin, %c, %block, %thick, %method, %witness_method) : $@convention(thin) (@convention(thin) () -> (), @convention(c) () -> (), @convention(block) () -> (), @convention(thick) () -> (), @convention(method) () -> (), @convention(witness_method: P) (Int) -> ()) -> ()
return %result : $@callee_guaranteed () -> ()
@@ -271,13 +271,13 @@
// for this case.
sil @existential_callee : $@convention(thin) <τ_0_0 where τ_0_0 : P> () -> @out P {
-bb0(%0 : @trivial $*P):
+bb0(%0 : $*P):
unreachable
}
sil @existential_caller : $@convention(thin) (@in P) -> () {
-bb0(%0 : @trivial $*P):
+bb0(%0 : $*P):
%payload = open_existential_addr immutable_access %0 : $*P to $*@opened("2D7A8F84-2973-11E7-838D-34363BD08DA0") P
%f = function_ref @existential_callee : $@convention(thin) <τ_0_0 where τ_0_0 : P> () -> @out P
%result = partial_apply [callee_guaranteed] %f<@opened("2D7A8F84-2973-11E7-838D-34363BD08DA0") P>() : $@convention(thin) <τ_0_0 where τ_0_0 : P> () -> @out P
diff --git a/test/SIL/Parser/basic_objc.sil b/test/SIL/Parser/basic_objc.sil
index 4ef1ba8..471ef29 100644
--- a/test/SIL/Parser/basic_objc.sil
+++ b/test/SIL/Parser/basic_objc.sil
@@ -25,7 +25,7 @@
// CHECK: {{%.*}} = objc_metatype_to_object {{%.*}} : $@objc_metatype SomeClass.Type to $AnyObject
// CHECK: {{%.*}} = objc_existential_metatype_to_object {{%.*}} : $@objc_metatype SomeClassProtocol.Type to $AnyObject
sil @metatype_to_object : $@convention(thin) (@objc_metatype SomeClass.Type, @objc_metatype SomeClassProtocol.Type) -> @owned (AnyObject, AnyObject) {
-entry(%a : @trivial $@objc_metatype SomeClass.Type, %b : @trivial $@objc_metatype SomeClassProtocol.Type):
+entry(%a : $@objc_metatype SomeClass.Type, %b : $@objc_metatype SomeClassProtocol.Type):
%x = objc_metatype_to_object %a : $@objc_metatype SomeClass.Type to $AnyObject
%y = objc_existential_metatype_to_object %b : $@objc_metatype SomeClassProtocol.Type to $AnyObject
%z = tuple (%x : $AnyObject, %y : $AnyObject)
diff --git a/test/SIL/Parser/borrow.sil b/test/SIL/Parser/borrow.sil
index aab94d9..daa1b91 100644
--- a/test/SIL/Parser/borrow.sil
+++ b/test/SIL/Parser/borrow.sil
@@ -6,7 +6,7 @@
// We do not verify here, but just make sure that all of the combinations parse and print correctly.
// CHECK-LABEL: sil @borrow_test : $@convention(thin) (@in Builtin.NativeObject, Builtin.NativeObject) -> () {
-// CHECK: bb0([[ARG1:%[0-9]+]] : @trivial $*Builtin.NativeObject, [[ARG2:%[0-9]+]] : @unowned $Builtin.NativeObject):
+// CHECK: bb0([[ARG1:%[0-9]+]] : $*Builtin.NativeObject, [[ARG2:%[0-9]+]] : @unowned $Builtin.NativeObject):
// CHECK: begin_borrow [[ARG2]]
// CHECK: [[MEM:%.*]] = alloc_stack $Builtin.NativeObject
// CHECK: store_borrow [[ARG2]] to [[MEM]] : $*Builtin.NativeObject
@@ -15,7 +15,7 @@
// CHECK: end_borrow [[ARG1]] : $*Builtin.NativeObject
// CHECK: end_borrow [[ARG2]] : $Builtin.NativeObject
sil @borrow_test : $@convention(thin) (@in Builtin.NativeObject, Builtin.NativeObject) -> () {
-bb0(%0 : @trivial $*Builtin.NativeObject, %1 : @unowned $Builtin.NativeObject):
+bb0(%0 : $*Builtin.NativeObject, %1 : @unowned $Builtin.NativeObject):
%2 = begin_borrow %1 : $Builtin.NativeObject
end_borrow %2 : $Builtin.NativeObject
diff --git a/test/SIL/Parser/boxes.sil b/test/SIL/Parser/boxes.sil
index 6a0e312..2ea077c 100644
--- a/test/SIL/Parser/boxes.sil
+++ b/test/SIL/Parser/boxes.sil
@@ -85,7 +85,7 @@
// CHECK-LABEL: sil @address_of_box
sil @address_of_box : $@convention(thin) (@in { var Int }, @in <T> { let T } <Int>) -> () {
-// CHECK: %0 : @trivial $*{ var Int }, %1 : @trivial $*<τ_0_0> { let τ_0_0 } <Int>
-entry(%0 : @trivial $*{ var Int }, %1 : @trivial $*<T> { let T } <Int>):
+// CHECK: %0 : $*{ var Int }, %1 : $*<τ_0_0> { let τ_0_0 } <Int>
+entry(%0 : $*{ var Int }, %1 : $*<T> { let T } <Int>):
unreachable
}
diff --git a/test/SIL/Parser/coroutines.sil b/test/SIL/Parser/coroutines.sil
index 69d93eb..37e8c9c 100644
--- a/test/SIL/Parser/coroutines.sil
+++ b/test/SIL/Parser/coroutines.sil
@@ -20,7 +20,7 @@
}
sil @yield : $@yield_once (Int, Float) -> (@yields Int, @yields Float) {
-bb0(%0 : @trivial $Int, %1 : @trivial $Float):
+bb0(%0 : $Int, %1 : $Float):
yield (%0 : $Int, %1 : $Float), resume bb1, unwind bb2
bb1:
@@ -32,7 +32,7 @@
}
sil @yield_many : $@yield_many (Int, Float) -> (@yields Int, @yields Float) {
-bb0(%0 : @trivial $Int, %1 : @trivial $Float):
+bb0(%0 : $Int, %1 : $Float):
yield (%0 : $Int, %1 : $Float), resume bb1, unwind bb3
bb1:
@@ -53,7 +53,7 @@
}
sil @begin_apply : $(Int, Float) -> () {
-bb0(%0 : @trivial $Int, %1 : @trivial $Float):
+bb0(%0 : $Int, %1 : $Float):
%coro = function_ref @yield : $@convention(thin) @yield_once (Int, Float) -> (@yields Int, @yields Float)
(%int, %float, %token) = begin_apply %coro(%0, %1) : $@convention(thin) @yield_once (Int, Float) -> (@yields Int, @yields Float)
diff --git a/test/SIL/Parser/coroutines_failure_merge.sil b/test/SIL/Parser/coroutines_failure_merge.sil
index 1329b52..e95cc0d 100644
--- a/test/SIL/Parser/coroutines_failure_merge.sil
+++ b/test/SIL/Parser/coroutines_failure_merge.sil
@@ -6,7 +6,7 @@
import Swift
sil @yield : $@yield_many (Int, Float) -> (@yields Int, @yields Float) {
-bb0(%0 : @trivial $Int, %1 : @trivial $Float):
+bb0(%0 : $Int, %1 : $Float):
yield (%0 : $Int, %1 : $Float), resume bb1, unwind bb2
bb1:
diff --git a/test/SIL/Parser/coroutines_failure_unwind_return.sil b/test/SIL/Parser/coroutines_failure_unwind_return.sil
index 2371509..c79c645 100644
--- a/test/SIL/Parser/coroutines_failure_unwind_return.sil
+++ b/test/SIL/Parser/coroutines_failure_unwind_return.sil
@@ -6,7 +6,7 @@
import Swift
sil @yield : $@yield_once (Int, Float) -> (@yields Int, @yields Float) {
-bb0(%0 : @trivial $Int, %1 : @trivial $Float):
+bb0(%0 : $Int, %1 : $Float):
yield (%0 : $Int, %1 : $Float), resume bb1, unwind bb2
bb1:
diff --git a/test/SIL/Parser/coroutines_failure_unwind_reuse.sil b/test/SIL/Parser/coroutines_failure_unwind_reuse.sil
index ca4bceb..adfe6d6 100644
--- a/test/SIL/Parser/coroutines_failure_unwind_reuse.sil
+++ b/test/SIL/Parser/coroutines_failure_unwind_reuse.sil
@@ -6,7 +6,7 @@
import Swift
sil @yield : $@yield_many (Int, Float) -> (@yields Int, @yields Float) {
-bb0(%0 : @trivial $Int, %1 : @trivial $Float):
+bb0(%0 : $Int, %1 : $Float):
yield (%0 : $Int, %1 : $Float), resume bb1, unwind bb3
bb1:
diff --git a/test/SIL/Parser/coroutines_failure_yieldonce_twice.sil b/test/SIL/Parser/coroutines_failure_yieldonce_twice.sil
index 1002d5d..e14b74f 100644
--- a/test/SIL/Parser/coroutines_failure_yieldonce_twice.sil
+++ b/test/SIL/Parser/coroutines_failure_yieldonce_twice.sil
@@ -6,7 +6,7 @@
import Swift
sil @yield : $@yield_once (Int, Float) -> (@yields Int, @yields Float) {
-bb0(%0 : @trivial $Int, %1 : @trivial $Float):
+bb0(%0 : $Int, %1 : $Float):
yield (%0 : $Int, %1 : $Float), resume bb1, unwind bb3
bb1:
diff --git a/test/SIL/Parser/enum_in_class.sil b/test/SIL/Parser/enum_in_class.sil
index a09339e..0d2dfab 100644
--- a/test/SIL/Parser/enum_in_class.sil
+++ b/test/SIL/Parser/enum_in_class.sil
@@ -15,7 +15,7 @@
// CHECK: @test_declref_enum
sil [transparent] @test_declref_enum : $@convention(thin) (UInt8, @thin Task.State.Type) -> Task.State {
-bb0(%0 : @trivial $UInt8, %1 : @trivial $@thin Task.State.Type):
+bb0(%0 : $UInt8, %1 : $@thin Task.State.Type):
// CHECK: enum $Task.State, #Task.State.Bits!enumelt
%2 = enum $Task.State, #Task.State.Bits!enumelt.1, %0 : $UInt8
return %2 : $Task.State
diff --git a/test/SIL/Parser/errors.sil b/test/SIL/Parser/errors.sil
index 7205a8d..2d801fa 100644
--- a/test/SIL/Parser/errors.sil
+++ b/test/SIL/Parser/errors.sil
@@ -47,7 +47,7 @@
sil_stage nonsense // expected-error {{expected 'raw' or 'canonical' after 'sil_stage'}}
sil @missing_type : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
br bb3(%0) // expected-error {{expected ':' before type in SIL value reference}}
// FIXME: The next error is unexpected.
} // expected-error {{extraneous '}' at top level}} {{1-3=}}
diff --git a/test/SIL/Parser/generics.sil b/test/SIL/Parser/generics.sil
index d0c23d4..765e2eb 100644
--- a/test/SIL/Parser/generics.sil
+++ b/test/SIL/Parser/generics.sil
@@ -4,12 +4,12 @@
import Builtin
// CHECK-LABEL: sil @foo : $@convention(thin) <T> (@in T) -> @out T {
-// CHECK: bb0(%0 : @trivial $*T, %1 : @trivial $*T):
+// CHECK: bb0(%0 : $*T, %1 : $*T):
// CHECK: copy_addr [take] %1 to [initialization] %0 : $*T
// CHECK: return undef : $()
// CHECK: }
sil @foo : $@convention(thin) <T> (@in T) -> @out T {
-entry(%o : @trivial $*T, %i : @trivial $*T):
+entry(%o : $*T, %i : $*T):
copy_addr [take] %i to [initialization] %o : $*T
return undef : $()
}
@@ -97,7 +97,7 @@
// These generic parameters used to crash the compiler.
sil @protocol_extension_with_constrained_associated_type : $@convention(method) <Self where Self : FooProto, Self.Assoc : FooProtoHelper><I where I : FooProto, I.Assoc == Self.Assoc> (@in I, @in_guaranteed Self) -> () {
-bb0(%0 : @trivial $*I, %1 : @trivial $*Self):
+bb0(%0 : $*I, %1 : $*Self):
%2 = alloc_stack $I // users: %3, %6, %7, %9
copy_addr %0 to [initialization] %2 : $*I // id: %3
%4 = witness_method $I, #FooProto.value!getter.1 : $@convention(witness_method: FooProto) <τ_0_0 where τ_0_0 : FooProto, τ_0_0.Assoc : FooProtoHelper> (@in_guaranteed τ_0_0) -> @out τ_0_0.Assoc // user: %6
diff --git a/test/SIL/Parser/indirect_enum.sil b/test/SIL/Parser/indirect_enum.sil
index be748c8..ae81ecd 100644
--- a/test/SIL/Parser/indirect_enum.sil
+++ b/test/SIL/Parser/indirect_enum.sil
@@ -33,7 +33,7 @@
}
sil @indirect_enum_case_addr_only : $@convention(thin) <T> (@in TreeB<T>) -> () {
-entry(%e : @trivial $*TreeB<T>):
+entry(%e : $*TreeB<T>):
%a = unchecked_take_enum_data_addr %e : $*TreeB<T>, #TreeB.Leaf!enumelt.1
destroy_addr %a : $*T
diff --git a/test/SIL/Parser/overloaded_member.sil b/test/SIL/Parser/overloaded_member.sil
index 3840cdf..3867f2a 100644
--- a/test/SIL/Parser/overloaded_member.sil
+++ b/test/SIL/Parser/overloaded_member.sil
@@ -17,7 +17,7 @@
// CHECK-LABEL: sil @_TFCSo1XcfMS_FT1aV11peer_method1A_S_
sil @_TFCSo1XcfMS_FT1aV11peer_method1A_S_ : $@convention(method) (A, @owned X) -> @owned X {
-bb0(%0 : @trivial $A, %1 : @owned $X):
+bb0(%0 : $A, %1 : @owned $X):
%2 = alloc_box $<τ_0_0> { var τ_0_0 } <X>
%2a = project_box %2 : $<τ_0_0> { var τ_0_0 } <X>, 0
%3 = alloc_box $<τ_0_0> { var τ_0_0 } <A>
diff --git a/test/SIL/Parser/ownership_arguments.sil b/test/SIL/Parser/ownership_arguments.sil
index 309a6b1..55a0012 100644
--- a/test/SIL/Parser/ownership_arguments.sil
+++ b/test/SIL/Parser/ownership_arguments.sil
@@ -5,14 +5,14 @@
import Builtin
// CHECK-LABEL: sil @simple : $@convention(thin) (@owned Builtin.NativeObject, Builtin.NativeObject, @guaranteed Builtin.NativeObject, Builtin.Int32) -> () {
-// CHECK: bb0({{%.*}} : @owned $Builtin.NativeObject, {{%.*}} : @unowned $Builtin.NativeObject, {{%.*}} : @guaranteed $Builtin.NativeObject, {{%.*}} : @trivial $Builtin.Int32):
-// CHECK: bb1({{%[0-9][0-9]*}} : @owned $Builtin.NativeObject, {{%[0-9][0-9]*}} : @unowned $Builtin.NativeObject, {{%[0-9][0-9]*}} : @guaranteed $Builtin.NativeObject, {{%[0-9][0-9]*}} : @trivial $Builtin.Int32):
+// CHECK: bb0({{%.*}} : @owned $Builtin.NativeObject, {{%.*}} : @unowned $Builtin.NativeObject, {{%.*}} : @guaranteed $Builtin.NativeObject, {{%.*}} : $Builtin.Int32):
+// CHECK: bb1({{%[0-9][0-9]*}} : @owned $Builtin.NativeObject, {{%[0-9][0-9]*}} : @unowned $Builtin.NativeObject, {{%[0-9][0-9]*}} : @guaranteed $Builtin.NativeObject, {{%[0-9][0-9]*}} : $Builtin.Int32):
sil @simple : $@convention(thin) (@owned Builtin.NativeObject, Builtin.NativeObject, @guaranteed Builtin.NativeObject, Builtin.Int32) -> () {
-bb0(%0 : @owned $Builtin.NativeObject, %1 : @unowned $Builtin.NativeObject, %2 : @guaranteed $Builtin.NativeObject, %3 : @trivial $Builtin.Int32):
+bb0(%0 : @owned $Builtin.NativeObject, %1 : @unowned $Builtin.NativeObject, %2 : @guaranteed $Builtin.NativeObject, %3 : $Builtin.Int32):
br bb1(%0 : $Builtin.NativeObject, %1 : $Builtin.NativeObject, %2 : $Builtin.NativeObject, %3 : $Builtin.Int32)
-bb1(%4 : @owned $Builtin.NativeObject, %5 : @unowned $Builtin.NativeObject, %6 : @guaranteed $Builtin.NativeObject, %7 : @trivial $Builtin.Int32):
+bb1(%4 : @owned $Builtin.NativeObject, %5 : @unowned $Builtin.NativeObject, %6 : @guaranteed $Builtin.NativeObject, %7 : $Builtin.Int32):
destroy_value %4 : $Builtin.NativeObject
end_borrow %6 : $Builtin.NativeObject
%9999 = tuple()
diff --git a/test/SIL/Parser/ownership_qualified_memopts.sil b/test/SIL/Parser/ownership_qualified_memopts.sil
index 305d0df..1c04d50 100644
--- a/test/SIL/Parser/ownership_qualified_memopts.sil
+++ b/test/SIL/Parser/ownership_qualified_memopts.sil
@@ -4,13 +4,13 @@
import Builtin
// CHECK-LABEL: sil @non_trivial : $@convention(thin) (@in Builtin.NativeObject, Builtin.NativeObject) -> () {
-// CHECK: bb0([[ARG1:%[0-9]+]] : @trivial $*Builtin.NativeObject, [[ARG2:%[0-9]+]] : @unowned $Builtin.NativeObject):
+// CHECK: bb0([[ARG1:%[0-9]+]] : $*Builtin.NativeObject, [[ARG2:%[0-9]+]] : @unowned $Builtin.NativeObject):
// CHECK: load [take] [[ARG1]] : $*Builtin.NativeObject
// CHECK: load [copy] [[ARG1]] : $*Builtin.NativeObject
// CHECK: store [[ARG2]] to [init] [[ARG1]] : $*Builtin.NativeObject
// CHECK: store [[ARG2]] to [assign] [[ARG1]] : $*Builtin.NativeObject
sil @non_trivial : $@convention(thin) (@in Builtin.NativeObject, Builtin.NativeObject) -> () {
-bb0(%0 : @trivial $*Builtin.NativeObject, %1 : @unowned $Builtin.NativeObject):
+bb0(%0 : $*Builtin.NativeObject, %1 : @unowned $Builtin.NativeObject):
load [take] %0 : $*Builtin.NativeObject
load [copy] %0 : $*Builtin.NativeObject
store %1 to [init] %0 : $*Builtin.NativeObject
@@ -19,14 +19,14 @@
return %2 : $()
}
-// CHECK-LABEL: sil @trivial : $@convention(thin) (@in Builtin.Int32, Builtin.Int32) -> () {
-// CHECK: bb0([[ARG1:%[0-9]+]] : @trivial $*Builtin.Int32, [[ARG2:%[0-9]+]] : @trivial $Builtin.Int32):
+// CHECK-LABEL: sil @trivial_args : $@convention(thin) (@in Builtin.Int32, Builtin.Int32) -> () {
+// CHECK: bb0([[ARG1:%[0-9]+]] : $*Builtin.Int32, [[ARG2:%[0-9]+]] : $Builtin.Int32):
// CHECK: load [trivial] [[ARG1]] : $*Builtin.Int32
// CHECK: store [[ARG2]] to [trivial] [[ARG1]] : $*Builtin.Int32
-sil @trivial : $@convention(thin) (@in Builtin.Int32, Builtin.Int32) -> () {
-bb0(%0 : @trivial $*Builtin.Int32, %1 : @trivial $Builtin.Int32):
+sil @trivial_args : $@convention(thin) (@in Builtin.Int32, Builtin.Int32) -> () {
+bb0(%0 : $*Builtin.Int32, %1 : $Builtin.Int32):
load [trivial] %0 : $*Builtin.Int32
store %1 to [trivial] %0 : $*Builtin.Int32
%2 = tuple()
return %2 : $()
-}
\ No newline at end of file
+}
diff --git a/test/SIL/Parser/typed_boxes.sil b/test/SIL/Parser/typed_boxes.sil
index 24a4ba6..22453d1 100644
--- a/test/SIL/Parser/typed_boxes.sil
+++ b/test/SIL/Parser/typed_boxes.sil
@@ -4,7 +4,7 @@
// CHECK-LABEL: sil @alloc_dealloc : $@convention(thin) (Int) -> () {
sil @alloc_dealloc : $@convention(thin) (Int) -> () {
-entry(%x : @trivial $Int):
+entry(%x : $Int):
// CHECK: [[B:%.*]] = alloc_box $<τ_0_0> { var τ_0_0 } <Int>
%b = alloc_box $<τ_0_0> { var τ_0_0 } <Int>
// CHECK: [[PB:%.*]] = project_box [[B]] : $<τ_0_0> { var τ_0_0 } <Int>, 0
diff --git a/test/SIL/Parser/unmanaged.sil b/test/SIL/Parser/unmanaged.sil
index 3ef1b5f..f182d43 100644
--- a/test/SIL/Parser/unmanaged.sil
+++ b/test/SIL/Parser/unmanaged.sil
@@ -6,7 +6,7 @@
class C {}
sil @test : $@convention(thin) <U where U : AnyObject> (@inout Optional<U>) -> () {
-bb0(%0 : @trivial $*Optional<U>):
+bb0(%0 : $*Optional<U>):
%1 = load [copy] %0 : $*Optional<U>
%2 = ref_to_unmanaged %1 : $Optional<U> to $@sil_unmanaged Optional<U>
%3 = unmanaged_to_ref %2 : $@sil_unmanaged Optional<U> to $Optional<U>
@@ -23,4 +23,4 @@
unmanaged_release_value %1 : $Optional<C>
%9999 = tuple()
return %9999 : $()
-}
\ No newline at end of file
+}
diff --git a/test/SIL/Parser/where_clause.sil b/test/SIL/Parser/where_clause.sil
index d3a5f39..5b4addb 100644
--- a/test/SIL/Parser/where_clause.sil
+++ b/test/SIL/Parser/where_clause.sil
@@ -12,6 +12,6 @@
// CHECK: sil @foo : $@convention(thin) <T where T : Runcible, T == T.Mince> () -> @out Spoon<T>
sil @foo : $@convention(thin) <T where T: Runcible, T == T.Mince> () -> @out Spoon<T> {
-entry(%0 : @trivial $*Spoon<T>):
+entry(%0 : $*Spoon<T>):
return undef : $()
}
diff --git a/test/SIL/Serialization/Inputs/function_param_convention_input.sil b/test/SIL/Serialization/Inputs/function_param_convention_input.sil
index b024853..c5897ce 100644
--- a/test/SIL/Serialization/Inputs/function_param_convention_input.sil
+++ b/test/SIL/Serialization/Inputs/function_param_convention_input.sil
@@ -4,7 +4,7 @@
// Make sure that we can deserialize an apply with various parameter calling
// conventions.
sil [serialized] @foo : $@convention(thin) (@in X, @inout X, @in_guaranteed X, @owned X, X, @guaranteed X) -> @out X {
-bb0(%0 : @trivial $*X, %1 : @trivial $*X, %2 : @trivial $*X, %3 : @trivial $*X, %4 : @owned $X, %5 : @unowned $X, %6 : @guaranteed $X):
+bb0(%0 : $*X, %1 : $*X, %2 : $*X, %3 : $*X, %4 : @owned $X, %5 : @unowned $X, %6 : @guaranteed $X):
%9999 = tuple()
return %9999 : $()
}
diff --git a/test/SIL/Serialization/Inputs/generic_shared_function_helper.sil b/test/SIL/Serialization/Inputs/generic_shared_function_helper.sil
index e9f07b8..d46c7cb 100644
--- a/test/SIL/Serialization/Inputs/generic_shared_function_helper.sil
+++ b/test/SIL/Serialization/Inputs/generic_shared_function_helper.sil
@@ -6,7 +6,7 @@
sil public_external @impl_func : $@convention(thin) <T> () -> @out Optional<T>
sil shared [serialized] @shared_func : $@convention(thin) <T> () -> @out Optional<T> {
-bb0(%0 : @trivial $*Optional<T>):
+bb0(%0 : $*Optional<T>):
%1 = function_ref @impl_func : $@convention(thin) <τ_0_0> () -> @out Optional<τ_0_0> // user: %2
%2 = apply %1<T>(%0) : $@convention(thin) <τ_0_0> () -> @out Optional<τ_0_0>
%3 = tuple () // user: %4
@@ -14,7 +14,7 @@
}
sil public [serialized] @public_func : $@convention(thin) <T> () -> @out Optional<T> {
-bb0(%0 : @trivial $*Optional<T>):
+bb0(%0 : $*Optional<T>):
%1 = function_ref @shared_func : $@convention(thin) <τ_0_0> () -> @out Optional<τ_0_0> // user: %2
%2 = apply %1<T>(%0) : $@convention(thin) <τ_0_0> () -> @out Optional<τ_0_0>
%3 = tuple () // user: %4
diff --git a/test/SIL/Serialization/borrow.sil b/test/SIL/Serialization/borrow.sil
index c1fa49d..5c37b11 100644
--- a/test/SIL/Serialization/borrow.sil
+++ b/test/SIL/Serialization/borrow.sil
@@ -10,7 +10,7 @@
// We do not verify here, but just make sure that all of the combinations parse and print correctly.
// CHECK-LABEL: sil [serialized] @borrow_test : $@convention(thin) (@in Builtin.NativeObject, Builtin.NativeObject) -> () {
-// CHECK: bb0([[ARG1:%[0-9]+]] : @trivial $*Builtin.NativeObject, [[ARG2:%[0-9]+]] : @unowned $Builtin.NativeObject):
+// CHECK: bb0([[ARG1:%[0-9]+]] : $*Builtin.NativeObject, [[ARG2:%[0-9]+]] : @unowned $Builtin.NativeObject):
// CHECK: begin_borrow [[ARG2]]
// CHECK: [[MEM:%.*]] = alloc_stack $Builtin.NativeObject
// CHECK: store_borrow [[ARG2]] to [[MEM]] : $*Builtin.NativeObject
@@ -19,7 +19,7 @@
// CHECK: end_borrow [[ARG1]] : $*Builtin.NativeObject
// CHECK: end_borrow [[ARG2]] : $Builtin.NativeObject
sil [serialized] @borrow_test : $@convention(thin) (@in Builtin.NativeObject, Builtin.NativeObject) -> () {
-bb0(%0 : @trivial $*Builtin.NativeObject, %1 : @unowned $Builtin.NativeObject):
+bb0(%0 : $*Builtin.NativeObject, %1 : @unowned $Builtin.NativeObject):
%2 = begin_borrow %1 : $Builtin.NativeObject
end_borrow %2 : $Builtin.NativeObject
diff --git a/test/SIL/Serialization/boxes.sil b/test/SIL/Serialization/boxes.sil
index 2f51af4..ee13f2a 100644
--- a/test/SIL/Serialization/boxes.sil
+++ b/test/SIL/Serialization/boxes.sil
@@ -89,8 +89,8 @@
// CHECK-LABEL: sil hidden [serialized] @address_of_box
sil hidden [serialized] @address_of_box : $@convention(thin) (@in { var Int }, @in <T> { let T } <Int>) -> () {
-// CHECK: %0 : @trivial $*{ var Int }, %1 : @trivial $*<τ_0_0> { let τ_0_0 } <Int>
-entry(%0 : @trivial $*{ var Int }, %1 : @trivial $*<T> { let T } <Int>):
+// CHECK: %0 : $*{ var Int }, %1 : $*<τ_0_0> { let τ_0_0 } <Int>
+entry(%0 : $*{ var Int }, %1 : $*<T> { let T } <Int>):
unreachable
}
diff --git a/test/SIL/Serialization/ownership_qualified_memopts.sil b/test/SIL/Serialization/ownership_qualified_memopts.sil
index a140da4..cc3a1c0 100644
--- a/test/SIL/Serialization/ownership_qualified_memopts.sil
+++ b/test/SIL/Serialization/ownership_qualified_memopts.sil
@@ -9,12 +9,12 @@
import Builtin
-// CHECK-LABEL: sil [serialized] @trivial : $@convention(thin) (@in Builtin.Int32, Builtin.Int32) -> () {
-// CHECK: bb0([[ARG1:%[0-9]+]] : @trivial $*Builtin.Int32, [[ARG2:%[0-9]+]] : @trivial $Builtin.Int32):
+// CHECK-LABEL: sil [serialized] @trivial_args : $@convention(thin) (@in Builtin.Int32, Builtin.Int32) -> () {
+// CHECK: bb0([[ARG1:%[0-9]+]] : $*Builtin.Int32, [[ARG2:%[0-9]+]] : $Builtin.Int32):
// CHECK: load [trivial] [[ARG1]] : $*Builtin.Int32
// CHECK: store [[ARG2]] to [trivial] [[ARG1]] : $*Builtin.Int32
-sil [serialized] @trivial : $@convention(thin) (@in Builtin.Int32, Builtin.Int32) -> () {
-bb0(%0 : @trivial $*Builtin.Int32, %1 : @trivial $Builtin.Int32):
+sil [serialized] @trivial_args : $@convention(thin) (@in Builtin.Int32, Builtin.Int32) -> () {
+bb0(%0 : $*Builtin.Int32, %1 : $Builtin.Int32):
load [trivial] %0 : $*Builtin.Int32
store %1 to [trivial] %0 : $*Builtin.Int32
%2 = tuple()
@@ -22,13 +22,13 @@
}
// CHECK-LABEL: sil [serialized] @non_trivial : $@convention(thin) (@in Builtin.NativeObject, Builtin.NativeObject) -> () {
-// CHECK: bb0([[ARG1:%[0-9]+]] : @trivial $*Builtin.NativeObject, [[ARG2:%[0-9]+]] : @unowned $Builtin.NativeObject):
+// CHECK: bb0([[ARG1:%[0-9]+]] : $*Builtin.NativeObject, [[ARG2:%[0-9]+]] : @unowned $Builtin.NativeObject):
// CHECK: load [take] [[ARG1]] : $*Builtin.NativeObject
// CHECK: load [copy] [[ARG1]] : $*Builtin.NativeObject
// CHECK: store [[ARG2]] to [init] [[ARG1]] : $*Builtin.NativeObject
// CHECK: store [[ARG2]] to [assign] [[ARG1]] : $*Builtin.NativeObject
sil [serialized] @non_trivial : $@convention(thin) (@in Builtin.NativeObject, Builtin.NativeObject) -> () {
-bb0(%0 : @trivial $*Builtin.NativeObject, %1 : @unowned $Builtin.NativeObject):
+bb0(%0 : $*Builtin.NativeObject, %1 : @unowned $Builtin.NativeObject):
load [take] %0 : $*Builtin.NativeObject
load [copy] %0 : $*Builtin.NativeObject
store %1 to [init] %0 : $*Builtin.NativeObject
diff --git a/test/SIL/Serialization/unmanaged.sil b/test/SIL/Serialization/unmanaged.sil
index 73ec38f..487fb1e 100644
--- a/test/SIL/Serialization/unmanaged.sil
+++ b/test/SIL/Serialization/unmanaged.sil
@@ -10,7 +10,7 @@
class C {}
// CHECK-LABEL: sil [serialized] @retain_release : $@convention(thin) (@sil_unmanaged Optional<C>) -> () {
-// CHECK: bb0([[ARG:%.*]] : @trivial $@sil_unmanaged Optional<C>):
+// CHECK: bb0([[ARG:%.*]] : $@sil_unmanaged Optional<C>):
// CHECK: [[REF:%.*]] = unmanaged_to_ref [[ARG]] : $@sil_unmanaged Optional<C> to $Optional<C>
// CHECK: unmanaged_retain_value [[REF]]
// CHECK: unmanaged_autorelease_value [[REF]]
@@ -26,13 +26,13 @@
}
// CHECK-LABEL: sil [serialized] @test : $@convention(thin) <U where U : AnyObject> (@inout Optional<U>) -> () {
-// CHECK: bb0([[ARG:%.*]] : @trivial $*Optional<U>):
+// CHECK: bb0([[ARG:%.*]] : $*Optional<U>):
// CHECK: [[LOADED_ARG:%.*]] = load [copy] [[ARG]]
// CHECK: [[UNMANAGED_LOADED_ARG:%.*]] = ref_to_unmanaged [[LOADED_ARG]] : $Optional<U> to $@sil_unmanaged Optional<U>
// CHECK: {{%.*}} = unmanaged_to_ref [[UNMANAGED_LOADED_ARG]] : $@sil_unmanaged Optional<U> to $Optional<U>
// CHECK: destroy_value [[LOADED_ARG]]
sil [serialized] @test : $@convention(thin) <U where U : AnyObject> (@inout Optional<U>) -> () {
-bb0(%0 : @trivial $*Optional<U>):
+bb0(%0 : $*Optional<U>):
%1 = load [copy] %0 : $*Optional<U>
%2 = ref_to_unmanaged %1 : $Optional<U> to $@sil_unmanaged Optional<U>
%3 = unmanaged_to_ref %2 : $@sil_unmanaged Optional<U> to $Optional<U>
diff --git a/test/SIL/ownership-verifier/definite_init.sil b/test/SIL/ownership-verifier/definite_init.sil
index 9a52669..c3c923f 100644
--- a/test/SIL/ownership-verifier/definite_init.sil
+++ b/test/SIL/ownership-verifier/definite_init.sil
@@ -31,7 +31,7 @@
// return (t, a)
//}
sil @used_by_inout : $@convention(thin) (Builtin.Int32) -> (Builtin.Int32, Builtin.Int32) {
-bb0(%0 : @trivial $Builtin.Int32):
+bb0(%0 : $Builtin.Int32):
%91 = alloc_box $<τ_0_0> { var τ_0_0 } <Builtin.Int32>
%91a = project_box %91 : $<τ_0_0> { var τ_0_0 } <Builtin.Int32>, 0
%1 = mark_uninitialized [var] %91a : $*Builtin.Int32
@@ -68,7 +68,7 @@
}
sil @copy_addr1 : $@convention(thin) <T> (@in T) -> @out T {
-bb0(%0 : @trivial $*T, %1 : @trivial $*T):
+bb0(%0 : $*T, %1 : $*T):
%3 = alloc_box $<τ_0_0> { var τ_0_0 } <T>
%3a = project_box %3 : $<τ_0_0> { var τ_0_0 } <T>, 0
%4 = mark_uninitialized [var] %3a : $*T
@@ -85,7 +85,7 @@
sil @getSomeOptionalClass : $@convention(thin) () -> Optional<SomeClass>
sil @assign_test_trivial : $@convention(thin) (Builtin.Int32) -> Builtin.Int32 {
-bb0(%0 : @trivial $Builtin.Int32):
+bb0(%0 : $Builtin.Int32):
%7 = alloc_box $<τ_0_0> { var τ_0_0 } <Builtin.Int32>
%7a = project_box %7 : $<τ_0_0> { var τ_0_0 } <Builtin.Int32>, 0
%1 = mark_uninitialized [var] %7a : $*Builtin.Int32
@@ -123,7 +123,7 @@
sil @assign_test_addressonly : $@convention(thin) <T> (@in T) -> @out T {
-bb0(%0 : @trivial $*T, %1 : @trivial $*T):
+bb0(%0 : $*T, %1 : $*T):
%b = alloc_box $<τ_0_0> { var τ_0_0 } <T>
%ba = project_box %b : $<τ_0_0> { var τ_0_0 } <T>, 0
%2 = mark_uninitialized [var] %ba : $*T
@@ -169,7 +169,7 @@
}
sil @test_struct : $@convention(thin) (@inout ContainsNativeObject) -> () {
-bb0(%0 : @trivial $*ContainsNativeObject):
+bb0(%0 : $*ContainsNativeObject):
%b = alloc_box $<τ_0_0> { var τ_0_0 } <ContainsNativeObject>
%ba = project_box %b : $<τ_0_0> { var τ_0_0 } <ContainsNativeObject>, 0
%c = mark_uninitialized [var] %ba : $*ContainsNativeObject
@@ -182,13 +182,13 @@
}
sil @non_box_assign_trivial : $@convention(thin) (@inout Bool, Bool) -> () {
-bb0(%0 : @trivial $*Bool, %1 : @trivial $Bool):
+bb0(%0 : $*Bool, %1 : $Bool):
assign %1 to %0 : $*Bool
%9 = tuple ()
return %9 : $()
}
sil @non_box_assign : $@convention(thin) (@inout SomeClass, @owned SomeClass) -> () {
-bb0(%0 : @trivial $*SomeClass, %1 : @owned $SomeClass):
+bb0(%0 : $*SomeClass, %1 : @owned $SomeClass):
assign %1 to %0 : $*SomeClass
%9 = tuple ()
return %9 : $()
@@ -245,7 +245,7 @@
}
sil @init_existential_with_class : $@convention(thin) (@inout C) -> () {
-entry(%a : @trivial $*C):
+entry(%a : $*C):
%p = alloc_stack $P
%b = mark_uninitialized [var] %p : $*P
%q = init_existential_addr %b : $*P, $C
@@ -258,7 +258,7 @@
}
sil @conditional_init : $@convention(thin) (Bool) -> () {
-bb0(%0 : @trivial $Bool):
+bb0(%0 : $Bool):
%2 = alloc_stack $SomeClass
%3 = mark_uninitialized [var] %2 : $*SomeClass
%5 = integer_literal $Builtin.Int1, 1
@@ -278,7 +278,7 @@
}
sil @conditionalInitOrAssign : $@convention(thin) (Builtin.Int1) -> () {
-bb0(%0 : @trivial $Builtin.Int1):
+bb0(%0 : $Builtin.Int1):
%5 = alloc_stack $SomeClass
%6 = mark_uninitialized [var] %5 : $*SomeClass
cond_br %0, bb1, bb2
@@ -308,7 +308,7 @@
/// Root class tests.
sil @rootclass_test1 : $@convention(method) (@owned RootClassWithIVars, Builtin.Int32) -> @owned RootClassWithIVars {
-bb0(%0 : @owned $RootClassWithIVars, %1 : @trivial $Builtin.Int32):
+bb0(%0 : @owned $RootClassWithIVars, %1 : $Builtin.Int32):
%3 = mark_uninitialized [rootself] %0 : $RootClassWithIVars
%4 = begin_borrow %3 : $RootClassWithIVars
%10 = ref_element_addr %4 : $RootClassWithIVars, #RootClassWithIVars.x
@@ -366,7 +366,7 @@
struct MyStruct : P {}
sil @self_init_assert_instruction : $@convention(thin) (Builtin.Int32, @thin MyStruct.Type) -> MyStruct {
-bb0(%0 : @trivial $Builtin.Int32, %1 : @trivial $@thin MyStruct.Type):
+bb0(%0 : $Builtin.Int32, %1 : $@thin MyStruct.Type):
%2 = alloc_stack $MyStruct, var, name "sf"
%3 = mark_uninitialized [delegatingself] %2 : $*MyStruct
%6 = function_ref @selfinit : $@convention(thin) () -> MyStruct
@@ -388,7 +388,7 @@
sil @selfinit_delegate : $@convention(thin) (@thin MyStruct2.Type) -> @out MyStruct2
sil @self_init_copyaddr : $@convention(thin) (@thin MyStruct2.Type) -> @out MyStruct2 {
-bb0(%0 : @trivial $*MyStruct2, %1 : @trivial $@thin MyStruct2.Type):
+bb0(%0 : $*MyStruct2, %1 : $@thin MyStruct2.Type):
%2 = alloc_stack $MyStruct2, var, name "sf"
%3 = mark_uninitialized [delegatingself] %2 : $*MyStruct2
%6 = metatype $@thin MyStruct2.Type
@@ -500,7 +500,7 @@
}
sil @super_init_out_of_order : $@convention(method) (@owned DerivedClassWithIVars, Builtin.Int32) -> @owned DerivedClassWithIVars {
-bb0(%0 : @owned $DerivedClassWithIVars, %i : @trivial $Builtin.Int32):
+bb0(%0 : @owned $DerivedClassWithIVars, %i : $Builtin.Int32):
%1 = alloc_box $<τ_0_0> { var τ_0_0 } <DerivedClassWithIVars>
%1a = project_box %1 : $<τ_0_0> { var τ_0_0 } <DerivedClassWithIVars>, 0
%3 = mark_uninitialized [derivedself] %1a : $*DerivedClassWithIVars
@@ -534,7 +534,7 @@
sil @selfinit_mystruct3 : $@convention(thin) () -> @owned MyStruct3
sil hidden @test_conditional_destroy_delegating_init : $@convention(thin) (Builtin.Int1) -> () {
-bb0(%0 : @trivial $Builtin.Int1):
+bb0(%0 : $Builtin.Int1):
%2 = alloc_stack $MyStruct3
%3 = mark_uninitialized [delegatingself] %2 : $*MyStruct3
cond_br %0, bb1, bb2
@@ -557,7 +557,7 @@
sil @selfinit_myclass3 : $@convention(thin) (@owned MyClass3) -> @owned MyClass3
sil hidden @test_conditional_destroy_class_delegating_init : $@convention(thin) (Builtin.Int1) -> () {
-bb0(%0 : @trivial $Builtin.Int1):
+bb0(%0 : $Builtin.Int1):
%2 = alloc_stack $MyClass3
%3 = mark_uninitialized [delegatingself] %2 : $*MyClass3
cond_br %0, bb1, bb2
diff --git a/test/SIL/ownership-verifier/false_positive_leaks.sil b/test/SIL/ownership-verifier/false_positive_leaks.sil
index 3051cdc..c7adf53 100644
--- a/test/SIL/ownership-verifier/false_positive_leaks.sil
+++ b/test/SIL/ownership-verifier/false_positive_leaks.sil
@@ -60,7 +60,7 @@
%0 = function_ref @error_func : $@convention(thin) () -> (Builtin.Int32, @error Error)
try_apply %0() : $@convention(thin) () -> (Builtin.Int32, @error Error), normal bb1, error bb2
-bb1(%2 : @trivial $Builtin.Int32):
+bb1(%2 : $Builtin.Int32):
%9999 = tuple()
return %9999 : $()
diff --git a/test/SIL/ownership-verifier/objc_use_verifier.sil b/test/SIL/ownership-verifier/objc_use_verifier.sil
index c6621af..56e2e91 100644
--- a/test/SIL/ownership-verifier/objc_use_verifier.sil
+++ b/test/SIL/ownership-verifier/objc_use_verifier.sil
@@ -23,7 +23,7 @@
}
sil hidden @test_objc_super_method : $@convention(method) (@thick Hoozit.Type) -> () {
-bb0(%0 : @trivial $@thick Hoozit.Type):
+bb0(%0 : $@thick Hoozit.Type):
%2 = upcast %0 : $@thick Hoozit.Type to $@thick Gizmo.Type
%3 = objc_super_method %0 : $@thick Hoozit.Type, #Gizmo.runce!1.foreign : (Gizmo.Type) -> () -> (), $@convention(objc_method) (@objc_metatype Gizmo.Type) -> ()
%4 = tuple()
diff --git a/test/SIL/ownership-verifier/opaque_use_verifier.sil b/test/SIL/ownership-verifier/opaque_use_verifier.sil
index 273ec38..41a62d0 100644
--- a/test/SIL/ownership-verifier/opaque_use_verifier.sil
+++ b/test/SIL/ownership-verifier/opaque_use_verifier.sil
@@ -10,7 +10,7 @@
import Builtin
sil @unconditional_checked_cast_value_test : $@convention(thin) <T> (Builtin.Int32) -> @out T {
-bb0(%0 : @trivial $Builtin.Int32):
+bb0(%0 : $Builtin.Int32):
%1 = unconditional_checked_cast_value %0 : $Builtin.Int32 to $T
return %1 : $T
}
@@ -61,7 +61,7 @@
typealias AnyObject = Builtin.AnyObject
sil @takeType : $@convention(thin) (@thick AnyObject.Type) -> () {
-bb0(%0 : @trivial $@thick AnyObject.Type):
+bb0(%0 : $@thick AnyObject.Type):
%18 = tuple ()
return %18 : $()
}
@@ -81,7 +81,7 @@
}
sil @passTrivialAsOpaqueValue : $@convention(thin) (Builtin.Int64) -> () {
-bb0(%0 : @trivial $Builtin.Int64):
+bb0(%0 : $Builtin.Int64):
%1 = function_ref @opaque_copy : $@convention(thin) <T> (@in_guaranteed T) -> @out T
%2 = apply %1<Builtin.Int64>(%0) : $@convention(thin) <T> (@in_guaranteed T) -> @out T
%3 = function_ref @opaque_arg_copy : $@convention(thin) <T> (@in T) -> @out T
diff --git a/test/SIL/ownership-verifier/over_consume.sil b/test/SIL/ownership-verifier/over_consume.sil
index be04631..6a5406e 100644
--- a/test/SIL/ownership-verifier/over_consume.sil
+++ b/test/SIL/ownership-verifier/over_consume.sil
@@ -186,7 +186,6 @@
// CHECK: Conv: guaranteed
// CHECK: OwnershipMap:
// CHECK: -- OperandOwnershipKindMap --
-// CHECK: trivial: Yes. Liveness: MustBeLive
// CHECK: unowned: No.
// CHECK: owned: Yes. Liveness: MustBeInvalidated
// CHECK: guaranteed: No.
@@ -214,7 +213,6 @@
// CHECK: Conv: owned
// CHECK: OwnershipMap:
// CHECK: -- OperandOwnershipKindMap --
-// CHECK: trivial: Yes. Liveness: MustBeLive
// CHECK: unowned: No.
// CHECK: owned: No.
// CHECK: guaranteed: Yes. Liveness: MustBeLive
@@ -269,7 +267,6 @@
// CHECK: Conv: guaranteed
// CHECK: OwnershipMap:
// CHECK: -- OperandOwnershipKindMap --
-// CHECK: trivial: No.
// CHECK: unowned: No.
// CHECK: owned: Yes. Liveness: MustBeInvalidated
// CHECK: guaranteed: No.
@@ -344,7 +341,6 @@
// CHECK: Conv: owned
// CHECK: OwnershipMap:
// CHECK: -- OperandOwnershipKindMap --
-// CHECK: trivial: No.
// CHECK: unowned: No.
// CHECK: owned: No.
// CHECK: guaranteed: Yes. Liveness: MustBeLive
diff --git a/test/SIL/ownership-verifier/use_verifier.sil b/test/SIL/ownership-verifier/use_verifier.sil
index b398493..6b5fed2 100644
--- a/test/SIL/ownership-verifier/use_verifier.sil
+++ b/test/SIL/ownership-verifier/use_verifier.sil
@@ -142,14 +142,14 @@
}
sil @trivial_struct_extract_from_trivial : $@convention(thin) (TrivialStruct) -> () {
-bb0(%0 : @trivial $TrivialStruct):
+bb0(%0 : $TrivialStruct):
%1 = struct_extract %0 : $TrivialStruct, #TrivialStruct.f1
%9999 = tuple()
return %9999 : $()
}
sil @in_address_arg : $@convention(thin) (@in Builtin.NativeObject) -> () {
-bb0(%0 : @trivial $*Builtin.NativeObject):
+bb0(%0 : $*Builtin.NativeObject):
destroy_addr %0 : $*Builtin.NativeObject
%9999 = tuple()
return %9999 : $()
@@ -194,7 +194,7 @@
}
sil @alloc_value_buffer_dealloc_value_buffer : $@convention(thin) (@inout Builtin.UnsafeValueBuffer, Builtin.Int32) -> () {
-bb0(%0 : @trivial $*Builtin.UnsafeValueBuffer, %1 : @trivial $Builtin.Int32):
+bb0(%0 : $*Builtin.UnsafeValueBuffer, %1 : $Builtin.Int32):
%2 = alloc_value_buffer $Builtin.Int32 in %0 : $*Builtin.UnsafeValueBuffer
store %1 to [trivial] %2 : $*Builtin.Int32
dealloc_value_buffer $Builtin.Int32 in %0 : $*Builtin.UnsafeValueBuffer
@@ -203,7 +203,7 @@
}
sil @builtins_test : $@convention(thin) (@owned Error, Builtin.Int1, Builtin.RawPointer, Builtin.Word) -> ((), @error Error) {
-bb0(%0 : @owned $Error, %1 : @trivial $Builtin.Int1, %2 : @trivial $Builtin.RawPointer, %3 : @trivial $Builtin.Word):
+bb0(%0 : @owned $Error, %1 : $Builtin.Int1, %2 : $Builtin.RawPointer, %3 : $Builtin.Word):
%4 = metatype $@thick Builtin.Int32.Type
builtin "willThrow"(%0 : $Error) : $()
builtin "onFastPath"() : $()
@@ -238,7 +238,7 @@
}
sil @tail_allocated_alloc_ref : $@convention(thin) (Builtin.Word, Builtin.Word, @thick SuperKlass.Type) -> () {
-bb0(%0 : @trivial $Builtin.Word, %1 : @trivial $Builtin.Word, %2 : @trivial $@thick SuperKlass.Type):
+bb0(%0 : $Builtin.Word, %1 : $Builtin.Word, %2 : $@thick SuperKlass.Type):
%3 = alloc_ref [tail_elems $Val * %0 : $Builtin.Word] [tail_elems $Aleph * %1 : $Builtin.Word] $SuperKlass
dealloc_ref %3 : $SuperKlass
@@ -252,7 +252,7 @@
// All of these uses should not be consuming except for the destroy.
sil @select_enum_test : $@convention(thin) (@owned ThreeDifferingPayloadEnum, @owned Builtin.NativeObject, Optional<Builtin.Int32>, @owned Builtin.NativeObject) -> () {
-bb0(%0 : @owned $ThreeDifferingPayloadEnum, %1 : @owned $Builtin.NativeObject, %2 : @trivial $Optional<Builtin.Int32>, %3 : @owned $Builtin.NativeObject):
+bb0(%0 : @owned $ThreeDifferingPayloadEnum, %1 : @owned $Builtin.NativeObject, %2 : $Optional<Builtin.Int32>, %3 : @owned $Builtin.NativeObject):
%4 = integer_literal $Builtin.Int32, 2
select_enum %0 : $ThreeDifferingPayloadEnum, case #ThreeDifferingPayloadEnum.nopayload!enumelt: %4, case #ThreeDifferingPayloadEnum.trivial_payload!enumelt.1: %4, case #ThreeDifferingPayloadEnum.nontrivial_payload!enumelt.1: %4 : $Builtin.Int32
%5 = select_enum %2 : $Optional<Builtin.Int32>, case #Optional.none!enumelt: %1, case #Optional.some!enumelt.1: %3 : $Builtin.NativeObject
@@ -272,7 +272,7 @@
}
sil @existential_metatype_test : $@convention(thin) (@owned SwiftKlassP, @in SwiftKlassP) -> () {
-bb0(%0 : @owned $SwiftKlassP, %1 : @trivial $*SwiftKlassP):
+bb0(%0 : @owned $SwiftKlassP, %1 : $*SwiftKlassP):
%2 = existential_metatype $@thick SwiftKlassP.Type, %0 : $SwiftKlassP
%3 = existential_metatype $@thick SwiftKlassP.Type, %1 : $*SwiftKlassP
destroy_value %0 : $SwiftKlassP
@@ -282,7 +282,7 @@
}
sil @value_metatype_test : $@convention(thin) (@owned Ref, @in Ref) -> () {
-bb0(%0 : @owned $Ref, %1 : @trivial $*Ref):
+bb0(%0 : @owned $Ref, %1 : $*Ref):
%2 = value_metatype $@thick Ref.Type, %0 : $Ref
%3 = value_metatype $@thick Ref.Type, %1 : $*Ref
destroy_value %0 : $Ref
@@ -367,7 +367,7 @@
}
sil @class_method_metatype_test : $@convention(thin) (@thick SuperKlass.Type) -> () {
-bb0(%0 : @trivial $@thick SuperKlass.Type):
+bb0(%0 : $@thick SuperKlass.Type):
%1 = class_method %0 : $@thick SuperKlass.Type, #SuperKlass.d!1 : (SuperKlass) -> () -> (), $@convention(method) (@guaranteed SuperKlass) -> ()
%9999 = tuple()
return %9999 : $()
@@ -393,7 +393,7 @@
}
sil @test_store_weak : $@convention(thin) (@owned Optional<SuperKlass>, @in @sil_weak Optional<SuperKlass>, @guaranteed Optional<SuperKlass>) -> () {
-bb0(%0 : @owned $Optional<SuperKlass>, %1 : @trivial $*@sil_weak Optional<SuperKlass>, %2 : @guaranteed $Optional<SuperKlass>):
+bb0(%0 : @owned $Optional<SuperKlass>, %1 : $*@sil_weak Optional<SuperKlass>, %2 : @guaranteed $Optional<SuperKlass>):
store_weak %0 to %1 : $*@sil_weak Optional<SuperKlass>
store_weak %2 to %1 : $*@sil_weak Optional<SuperKlass>
destroy_value %0 : $Optional<SuperKlass>
@@ -423,11 +423,11 @@
%1 = integer_literal $Builtin.Int32, 0
br bb2(%1 : $Builtin.Int32, %1 : $Builtin.Int32)
-bb2(%2 : @trivial $Builtin.Int32, %3 : @trivial $Builtin.Int32):
+bb2(%2 : $Builtin.Int32, %3 : $Builtin.Int32):
// Branch with mixed trivial and owned argument
br bb3(%1 : $Builtin.Int32, %0 : $Builtin.NativeObject, %2 : $Builtin.Int32)
-bb3(%4 : @trivial $Builtin.Int32, %5 : @owned $Builtin.NativeObject, %6 : @trivial $Builtin.Int32):
+bb3(%4 : $Builtin.Int32, %5 : @owned $Builtin.NativeObject, %6 : $Builtin.Int32):
destroy_value %5 : $Builtin.NativeObject
%9999 = tuple()
return %9999 : $()
@@ -613,7 +613,7 @@
//
// The reason why this is interesting is that we do a loop over enum cases to
// determine if we have all trivial cases. If we do, then we only accept a
-// @trivial ownership kind to the switch enum. Otherwise, we only accept an
+// ownership kind to the switch enum. Otherwise, we only accept an
// @owned trivial ownership kind. When we do the loop, we first skip over all
// trivial enums and then process only the non-trivial enums. That is why we
// need to make sure we handle all 3 cases.
@@ -632,7 +632,7 @@
destroy_value %10 : $Builtin.NativeObject
br bb5
-bb3(%11 : @trivial $Builtin.Int32):
+bb3(%11 : $Builtin.Int32):
br bb5
bb4:
@@ -647,7 +647,7 @@
destroy_value %12 : $Builtin.NativeObject
br bb9
-bb7(%13 : @trivial $Builtin.Int32):
+bb7(%13 : $Builtin.Int32):
br bb9
bb8:
@@ -662,7 +662,7 @@
destroy_value %14 : $Builtin.NativeObject
br bb13
-bb11(%15 : @trivial $Builtin.Int32):
+bb11(%15 : $Builtin.Int32):
br bb13
bb12:
@@ -676,7 +676,7 @@
destroy_value %17 : $Builtin.NativeObject
br bb21
-bb18(%19 : @trivial $Builtin.Int32):
+bb18(%19 : $Builtin.Int32):
br bb21
bb20:
@@ -689,7 +689,7 @@
destroy_value %23 : $Builtin.NativeObject
br bb27
-bb24(%25 : @trivial $Builtin.Int32):
+bb24(%25 : $Builtin.Int32):
br bb27
bb26:
@@ -702,7 +702,7 @@
destroy_value %29 : $Builtin.NativeObject
br bb33
-bb30(%31 : @trivial $Builtin.Int32):
+bb30(%31 : $Builtin.Int32):
br bb33
bb32:
@@ -716,7 +716,7 @@
destroy_value %35 : $Builtin.NativeObject
br bb39
-bb36(%37 : @trivial $Builtin.Int32):
+bb36(%37 : $Builtin.Int32):
br bb39
bb38:
@@ -729,7 +729,7 @@
destroy_value %41 : $Builtin.NativeObject
br bb45
-bb42(%43 : @trivial $Builtin.Int32):
+bb42(%43 : $Builtin.Int32):
br bb45
bb44:
@@ -742,7 +742,7 @@
destroy_value %47 : $Builtin.NativeObject
br bb51
-bb48(%49 : @trivial $Builtin.Int32):
+bb48(%49 : $Builtin.Int32):
br bb51
bb50:
@@ -770,10 +770,10 @@
%3 = metatype $@thick SuperKlass.Type
checked_cast_br %3 : $@thick SuperKlass.Type to $@thick SubKlass.Type, bb4, bb5
-bb4(%4 : @trivial $@thick SubKlass.Type):
+bb4(%4 : $@thick SubKlass.Type):
br bb6
-bb5(%5 : @trivial $@thick SuperKlass.Type):
+bb5(%5 : $@thick SuperKlass.Type):
br bb6
bb6:
@@ -793,12 +793,12 @@
}
sil @dynamic_method_br_test : $@convention(thin) (@owned AnyObject, @thick AnyObject.Type) -> () {
-bb0(%0 : @owned $AnyObject, %1 : @trivial $@thick AnyObject.Type):
+bb0(%0 : @owned $AnyObject, %1 : $@thick AnyObject.Type):
%2 = open_existential_ref %0 : $AnyObject to $@opened("01234567-89ab-cdef-0123-000000000000") AnyObject
%3 = unchecked_ref_cast %2 : $@opened("01234567-89ab-cdef-0123-000000000000") AnyObject to $Builtin.UnknownObject
dynamic_method_br %3 : $Builtin.UnknownObject, #X.f!1.foreign, bb1, bb2
-bb1(%4 : @trivial $@convention(objc_method) (Builtin.UnknownObject) -> ()):
+bb1(%4 : $@convention(objc_method) (Builtin.UnknownObject) -> ()):
br bb3
bb2:
@@ -809,7 +809,7 @@
%5 = open_existential_metatype %1 : $@thick AnyObject.Type to $@thick (@opened("01234567-89ab-cdef-0123-000000000001") AnyObject).Type
dynamic_method_br %5 : $@thick (@opened("01234567-89ab-cdef-0123-000000000001") AnyObject).Type, #X.g!1.foreign, bb4, bb5
-bb4(%6 : @trivial $@convention(objc_method) (@thick (@opened("01234567-89ab-cdef-0123-000000000001") AnyObject).Type) -> ()):
+bb4(%6 : $@convention(objc_method) (@thick (@opened("01234567-89ab-cdef-0123-000000000001") AnyObject).Type) -> ()):
br bb6
bb5:
@@ -1083,7 +1083,7 @@
}
sil @super_method_metatype_test : $@convention(thin) (@thick SubKlass.Type) -> () {
-bb0(%0 : @trivial $@thick SubKlass.Type):
+bb0(%0 : $@thick SubKlass.Type):
%1 = upcast %0 : $@thick SubKlass.Type to $@thick SuperKlass.Type
%2 = class_method %1 : $@thick SuperKlass.Type, #SuperKlass.f!1 : (SuperKlass.Type) -> () -> (), $@convention(method) (@thick SuperKlass.Type) -> ()
apply %2(%1) : $@convention(method) (@thick SuperKlass.Type) -> ()
diff --git a/test/SILGen/address_only_types.swift b/test/SILGen/address_only_types.swift
index c2d81c3..3d08f59 100644
--- a/test/SILGen/address_only_types.swift
+++ b/test/SILGen/address_only_types.swift
@@ -15,7 +15,7 @@
// CHECK-LABEL: sil hidden @$s18address_only_types0a1_B9_argument{{[_0-9a-zA-Z]*}}F
func address_only_argument(_ x: Unloadable) {
- // CHECK: bb0([[XARG:%[0-9]+]] : @trivial $*Unloadable):
+ // CHECK: bb0([[XARG:%[0-9]+]] : $*Unloadable):
// CHECK: debug_value_addr [[XARG]]
// CHECK-NEXT: tuple
// CHECK-NEXT: return
@@ -23,14 +23,14 @@
// CHECK-LABEL: sil hidden @$s18address_only_types0a1_B17_ignored_argument{{[_0-9a-zA-Z]*}}F
func address_only_ignored_argument(_: Unloadable) {
- // CHECK: bb0([[XARG:%[0-9]+]] : @trivial $*Unloadable):
+ // CHECK: bb0([[XARG:%[0-9]+]] : $*Unloadable):
// CHECK-NOT: dealloc_stack {{.*}} [[XARG]]
// CHECK: return
}
// CHECK-LABEL: sil hidden @$s18address_only_types0a1_B7_return{{[_0-9a-zA-Z]*}}F
func address_only_return(_ x: Unloadable, y: Int) -> Unloadable {
- // CHECK: bb0([[RET:%[0-9]+]] : @trivial $*Unloadable, [[XARG:%[0-9]+]] : @trivial $*Unloadable, [[YARG:%[0-9]+]] : @trivial $Builtin.Int64):
+ // CHECK: bb0([[RET:%[0-9]+]] : $*Unloadable, [[XARG:%[0-9]+]] : $*Unloadable, [[YARG:%[0-9]+]] : $Builtin.Int64):
// CHECK-NEXT: debug_value_addr [[XARG]] : $*Unloadable, let, name "x"
// CHECK-NEXT: debug_value [[YARG]] : $Builtin.Int64, let, name "y"
// CHECK-NEXT: copy_addr [[XARG]] to [initialization] [[RET]]
@@ -46,7 +46,7 @@
// CHECK-LABEL: sil hidden @$s18address_only_types0a1_B27_conditional_missing_return{{[_0-9a-zA-Z]*}}F
func address_only_conditional_missing_return(_ x: Unloadable) -> Unloadable {
- // CHECK: bb0({{%.*}} : @trivial $*Unloadable, {{%.*}} : @trivial $*Unloadable):
+ // CHECK: bb0({{%.*}} : $*Unloadable, {{%.*}} : $*Unloadable):
// CHECK: switch_enum {{%.*}}, case #Bool.true_!enumelt: [[TRUE:bb[0-9]+]], case #Bool.false_!enumelt: [[FALSE:bb[0-9]+]]
switch Bool.true_ {
case .true_:
@@ -63,7 +63,7 @@
// CHECK-LABEL: sil hidden @$s18address_only_types0a1_B29_conditional_missing_return_2
func address_only_conditional_missing_return_2(_ x: Unloadable) -> Unloadable {
- // CHECK: bb0({{%.*}} : @trivial $*Unloadable, {{%.*}} : @trivial $*Unloadable):
+ // CHECK: bb0({{%.*}} : $*Unloadable, {{%.*}} : $*Unloadable):
// CHECK: switch_enum {{%.*}}, case #Bool.true_!enumelt: [[TRUE1:bb[0-9]+]], case #Bool.false_!enumelt: [[FALSE1:bb[0-9]+]]
switch Bool.true_ {
case .true_:
@@ -92,7 +92,7 @@
// CHECK-LABEL: sil hidden @$s18address_only_types0a1_B7_call_1
func address_only_call_1() -> Unloadable {
- // CHECK: bb0([[RET:%[0-9]+]] : @trivial $*Unloadable):
+ // CHECK: bb0([[RET:%[0-9]+]] : $*Unloadable):
return some_address_only_function_1()
// FIXME emit into
// CHECK: [[FUNC:%[0-9]+]] = function_ref @$s18address_only_types05some_a1_B11_function_1AA10Unloadable_pyF
@@ -114,7 +114,7 @@
// CHECK-LABEL: sil hidden @$s18address_only_types0a1_B7_call_2{{[_0-9a-zA-Z]*}}F
func address_only_call_2(_ x: Unloadable) {
- // CHECK: bb0([[XARG:%[0-9]+]] : @trivial $*Unloadable):
+ // CHECK: bb0([[XARG:%[0-9]+]] : $*Unloadable):
// CHECK: debug_value_addr [[XARG]] : $*Unloadable
some_address_only_function_2(x)
// CHECK: [[FUNC:%[0-9]+]] = function_ref @$s18address_only_types05some_a1_B11_function_2{{[_0-9a-zA-Z]*}}F
@@ -152,7 +152,7 @@
// CHECK-LABEL: sil hidden @$s18address_only_types0a1_B21_assignment_from_temp{{[_0-9a-zA-Z]*}}F
func address_only_assignment_from_temp(_ dest: inout Unloadable) {
- // CHECK: bb0([[DEST:%[0-9]+]] : @trivial $*Unloadable):
+ // CHECK: bb0([[DEST:%[0-9]+]] : $*Unloadable):
dest = some_address_only_function_1()
// CHECK: [[TEMP:%[0-9]+]] = alloc_stack $Unloadable
// CHECK: %[[ACCESS:.*]] = begin_access [modify] [unknown] %0 :
@@ -164,7 +164,7 @@
// CHECK-LABEL: sil hidden @$s18address_only_types0a1_B19_assignment_from_lv{{[_0-9a-zA-Z]*}}F
func address_only_assignment_from_lv(_ dest: inout Unloadable, v: Unloadable) {
var v = v
- // CHECK: bb0([[DEST:%[0-9]+]] : @trivial $*Unloadable, [[VARG:%[0-9]+]] : @trivial $*Unloadable):
+ // CHECK: bb0([[DEST:%[0-9]+]] : $*Unloadable, [[VARG:%[0-9]+]] : $*Unloadable):
// CHECK: [[VBOX:%.*]] = alloc_box ${ var Unloadable }
// CHECK: [[PBOX:%[0-9]+]] = project_box [[VBOX]]
// CHECK: copy_addr [[VARG]] to [initialization] [[PBOX]] : $*Unloadable
@@ -196,7 +196,7 @@
// CHECK-LABEL: sil hidden @$s18address_only_types0a1_B31_assignment_from_lv_to_property{{[_0-9a-zA-Z]*}}F
func address_only_assignment_from_lv_to_property(_ v: Unloadable) {
- // CHECK: bb0([[VARG:%[0-9]+]] : @trivial $*Unloadable):
+ // CHECK: bb0([[VARG:%[0-9]+]] : $*Unloadable):
// CHECK: debug_value_addr [[VARG]] : $*Unloadable
// CHECK: [[TEMP:%[0-9]+]] = alloc_stack $Unloadable
// CHECK: copy_addr [[VARG]] to [initialization] [[TEMP]]
@@ -208,7 +208,7 @@
// CHECK-LABEL: sil hidden @$s18address_only_types0a1_B4_varAA10Unloadable_pyF
func address_only_var() -> Unloadable {
- // CHECK: bb0([[RET:%[0-9]+]] : @trivial $*Unloadable):
+ // CHECK: bb0([[RET:%[0-9]+]] : $*Unloadable):
var x = some_address_only_function_1()
// CHECK: [[XBOX:%[0-9]+]] = alloc_box ${ var Unloadable }
// CHECK: [[XPB:%.*]] = project_box [[XBOX]]
diff --git a/test/SILGen/addressors.swift b/test/SILGen/addressors.swift
index 1fdcdaa..863b460 100644
--- a/test/SILGen/addressors.swift
+++ b/test/SILGen/addressors.swift
@@ -200,7 +200,7 @@
}
// Setter.
// SILGEN-LABEL: sil hidden [transparent] @$s10addressors1DVys5Int32VAEcis
-// SILGEN: bb0([[VALUE:%.*]] : @trivial $Int32, [[I:%.*]] : @trivial $Int32, [[SELF:%.*]] : @trivial $*D):
+// SILGEN: bb0([[VALUE:%.*]] : $Int32, [[I:%.*]] : $Int32, [[SELF:%.*]] : $*D):
// SILGEN: debug_value [[VALUE]] : $Int32
// SILGEN: debug_value [[I]] : $Int32
// SILGEN: debug_value_addr [[SELF]]
@@ -213,7 +213,7 @@
// SILGEN: assign [[VALUE]] to [[ACCESS]] : $*Int32
// SILGEN-LABEL: sil hidden [transparent] @$s10addressors1DVys5Int32VAEciM
-// SILGEN: bb0([[I:%.*]] : @trivial $Int32, [[SELF:%.*]] : @trivial $*D):
+// SILGEN: bb0([[I:%.*]] : $Int32, [[SELF:%.*]] : $*D):
// SILGEN: [[SELF_ACCESS:%.*]] = begin_access [modify] [unknown] [[SELF]]
// SILGEN: [[T0:%.*]] = function_ref @$s10addressors1DVys5Int32VAEciau
// SILGEN: [[PTR:%.*]] = apply [[T0]]([[I]], [[SELF_ACCESS]])
diff --git a/test/SILGen/arguments.swift b/test/SILGen/arguments.swift
index 4ea567f..5a50f4a 100644
--- a/test/SILGen/arguments.swift
+++ b/test/SILGen/arguments.swift
@@ -20,13 +20,13 @@
func arg_tuple(x: Int, y: Float) {}
// CHECK-LABEL: sil hidden @$ss9arg_tuple1x1yySi_SftF
-// CHECK: bb0([[X:%[0-9]+]] : @trivial $Int, [[Y:%[0-9]+]] : @trivial $Float):
+// CHECK: bb0([[X:%[0-9]+]] : $Int, [[Y:%[0-9]+]] : $Float):
arg_tuple(x: i, y: f)
func arg_deep_tuples(x: Int, y: (Float, UnicodeScalar)) {}
// CHECK-LABEL: sil hidden @$ss15arg_deep_tuples1x1yySi_Sf_ScttF
-// CHECK: bb0([[X:%[0-9]+]] : @trivial $Int, [[Y_0:%[0-9]+]] : @trivial $Float, [[Y_1:%[0-9]+]] : @trivial $UnicodeScalar):
+// CHECK: bb0([[X:%[0-9]+]] : $Int, [[Y_0:%[0-9]+]] : $Float, [[Y_1:%[0-9]+]] : $UnicodeScalar):
arg_deep_tuples(x:i, y:(f, c))
var unnamed_subtuple = (f, c)
@@ -38,7 +38,7 @@
func arg_deep_tuples_2(x: Int, _: (y: Float, z: UnicodeScalar)) {}
// CHECK-LABEL: sil hidden @$ss17arg_deep_tuples_21x_ySi_Sf1y_Sc1zttF
-// CHECK: bb0([[X:%[0-9]+]] : @trivial $Int, [[Y:%[0-9]+]] : @trivial $Float, [[Z:%[0-9]+]] : @trivial $UnicodeScalar):
+// CHECK: bb0([[X:%[0-9]+]] : $Int, [[Y:%[0-9]+]] : $Float, [[Z:%[0-9]+]] : $UnicodeScalar):
arg_deep_tuples_2(x: i, (f, c))
arg_deep_tuples_2(x: i, unnamed_subtuple)
@@ -49,7 +49,7 @@
func arg_default_tuple(x x: Int = i, y: Float = f) {}
// CHECK-LABEL: sil hidden @$ss17arg_default_tuple1x1yySi_SftF
-// CHECK: bb0([[X:%[0-9]+]] : @trivial $Int, [[Y:%[0-9]+]] : @trivial $Float):
+// CHECK: bb0([[X:%[0-9]+]] : $Int, [[Y:%[0-9]+]] : $Float):
arg_default_tuple()
arg_default_tuple(x:i)
@@ -59,7 +59,7 @@
func variadic_arg_1(_ x: Int...) {}
// CHECK-LABEL: sil hidden @$ss14variadic_arg_1{{[_0-9a-zA-Z]*}}F
-// CHECK: bb0([[X:%[0-9]+]] : @trivial $Array<Int>):
+// CHECK: bb0([[X:%[0-9]+]] : $Array<Int>):
variadic_arg_1()
variadic_arg_1(i)
@@ -68,7 +68,7 @@
func variadic_arg_2(_ x: Int, _ y: Float...) {}
// CHECK-LABEL: sil hidden @$ss14variadic_arg_2{{[_0-9a-zA-Z]*}}F
-// CHECK: bb0([[X:%[0-9]+]] : @trivial $Int, [[Y:%[0-9]+]] : @trivial $Array<Float>):
+// CHECK: bb0([[X:%[0-9]+]] : $Int, [[Y:%[0-9]+]] : $Array<Float>):
variadic_arg_2(i)
variadic_arg_2(i, f)
@@ -76,7 +76,7 @@
func variadic_arg_3(_ y: Float..., x: Int) {}
// CHECK-LABEL: sil hidden @$ss14variadic_arg_3{{[_0-9a-zA-Z]*}}F
-// CHECK: bb0([[Y:%[0-9]+]] : @trivial $Array<Float>, [[X:%[0-9]+]] : @trivial $Int):
+// CHECK: bb0([[Y:%[0-9]+]] : $Array<Float>, [[X:%[0-9]+]] : $Int):
variadic_arg_3(x: i)
variadic_arg_3(f, x: i)
diff --git a/test/SILGen/assignment.swift b/test/SILGen/assignment.swift
index 1d537af..e705c5d 100644
--- a/test/SILGen/assignment.swift
+++ b/test/SILGen/assignment.swift
@@ -40,7 +40,7 @@
// RHS is formally evaluated.
// CHECK-LABEL: sil hidden @$s10assignment15copyRightToLeft1pyAA1P_pz_tF : $@convention(thin) (@inout P) -> () {
func copyRightToLeft(p: inout P) {
- // CHECK: bb0(%0 : @trivial $*P):
+ // CHECK: bb0(%0 : $*P):
// CHECK: [[READ:%.*]] = begin_access [read] [unknown] %0 : $*P
// CHECK: [[READ_OPEN:%.*]] = open_existential_addr immutable_access [[READ]]
// CHECK: end_access [[READ]] : $*P
diff --git a/test/SILGen/auto_closures.swift b/test/SILGen/auto_closures.swift
index dc6977b..faa8c81 100644
--- a/test/SILGen/auto_closures.swift
+++ b/test/SILGen/auto_closures.swift
@@ -1,12 +1,12 @@
-// RUN: %target-swift-emit-silgen -module-name auto_closures -enable-sil-ownership -parse-stdlib %s | %FileCheck %s
+// RUN: %target-swift-emit-silgen -module-name auto_closures -enable-sil-ownership -parse-stdlib -swift-version 5 %s | %FileCheck %s
struct Bool {}
var false_ = Bool()
// CHECK-LABEL: sil hidden @$s13auto_closures05call_A8_closureyAA4BoolVADyXKF : $@convention(thin) (@noescape @callee_guaranteed () -> Bool) -> Bool
func call_auto_closure(_ x: @autoclosure () -> Bool) -> Bool {
- // CHECK: bb0([[CLOSURE:%.*]] : @trivial $@noescape @callee_guaranteed () -> Bool):
+ // CHECK: bb0([[CLOSURE:%.*]] : $@noescape @callee_guaranteed () -> Bool):
// CHECK: [[RET:%.*]] = apply [[CLOSURE]]()
// CHECK: return [[RET]]
return x()
diff --git a/test/SILGen/auto_closures_swift4.swift b/test/SILGen/auto_closures_swift4.swift
new file mode 100644
index 0000000..3dbb717
--- /dev/null
+++ b/test/SILGen/auto_closures_swift4.swift
@@ -0,0 +1,16 @@
+
+// RUN: %target-swift-emit-silgen -module-name auto_closures -enable-sil-ownership -parse-stdlib -swift-version 4 %s
+
+// Swift 4-style autoclosure forwarding should not crash - rdar://problem/44657505
+
+public struct Empty {}
+
+public func x(_: @autoclosure () -> Empty) {}
+
+public func y1(_ message: @autoclosure () -> Empty) {
+ x(message)
+}
+
+public func y2(_ message: @autoclosure @escaping () -> Empty) {
+ x(message)
+}
diff --git a/test/SILGen/boxed_existentials.swift b/test/SILGen/boxed_existentials.swift
index b7e7f04..c4f1ffa 100644
--- a/test/SILGen/boxed_existentials.swift
+++ b/test/SILGen/boxed_existentials.swift
@@ -192,7 +192,7 @@
}
// CHECK-LABEL: sil hidden @$s18boxed_existentials14erasure_to_anyyyps5Error_p_sAC_ptF
-// CHECK: bb0([[OUT:%.*]] : @trivial $*Any, [[GUAR:%.*]] : @guaranteed $Error,
+// CHECK: bb0([[OUT:%.*]] : $*Any, [[GUAR:%.*]] : @guaranteed $Error,
func erasure_to_any(_ guaranteed: Error, _ immediate: Error) -> Any {
var immediate = immediate
// CHECK: [[IMMEDIATE_BOX:%.*]] = alloc_box ${ var Error }
diff --git a/test/SILGen/builtins.swift b/test/SILGen/builtins.swift
index 11b7d36..8e49c95 100644
--- a/test/SILGen/builtins.swift
+++ b/test/SILGen/builtins.swift
@@ -507,7 +507,7 @@
}
// CHECK-LABEL: sil hidden @$s8builtins15reinterpretCast_1xBw_AA1DCAA1CCSgAGtAG_BwtF : $@convention(thin) (@guaranteed C, Builtin.Word) -> (Builtin.Word, @owned D, @owned Optional<C>, @owned C)
-// CHECK: bb0([[ARG1:%.*]] : @guaranteed $C, [[ARG2:%.*]] : @trivial $Builtin.Word):
+// CHECK: bb0([[ARG1:%.*]] : @guaranteed $C, [[ARG2:%.*]] : $Builtin.Word):
// CHECK-NEXT: debug_value
// CHECK-NEXT: debug_value
// CHECK-NEXT: [[ARG1_COPY1:%.*]] = copy_value [[ARG1]]
@@ -583,7 +583,7 @@
// NativeObject
// CHECK-LABEL: sil hidden @$s8builtins8isUnique{{[_0-9a-zA-Z]*}}F
-// CHECK: bb0(%0 : @trivial $*Optional<Builtin.NativeObject>):
+// CHECK: bb0(%0 : $*Optional<Builtin.NativeObject>):
// CHECK: [[WRITE:%.*]] = begin_access [modify] [unknown] %0 : $*Optional<Builtin.NativeObject>
// CHECK: [[BUILTIN:%.*]] = is_unique [[WRITE]] : $*Optional<Builtin.NativeObject>
// CHECK: return
@@ -593,7 +593,7 @@
// NativeObject nonNull
// CHECK-LABEL: sil hidden @$s8builtins8isUnique{{[_0-9a-zA-Z]*}}F
-// CHECK: bb0(%0 : @trivial $*Builtin.NativeObject):
+// CHECK: bb0(%0 : $*Builtin.NativeObject):
// CHECK: [[WRITE:%.*]] = begin_access [modify] [unknown] %0
// CHECK: [[BUILTIN:%.*]] = is_unique [[WRITE]] : $*Builtin.NativeObject
// CHECK: return
@@ -603,7 +603,7 @@
// UnknownObject (ObjC)
// CHECK-LABEL: sil hidden @$s8builtins8isUnique{{[_0-9a-zA-Z]*}}F
-// CHECK: bb0(%0 : @trivial $*Optional<Builtin.UnknownObject>):
+// CHECK: bb0(%0 : $*Optional<Builtin.UnknownObject>):
// CHECK: [[WRITE:%.*]] = begin_access [modify] [unknown] %0
// CHECK: [[BUILTIN:%.*]] = is_unique [[WRITE]] : $*Optional<Builtin.UnknownObject>
// CHECK: return
@@ -613,7 +613,7 @@
// UnknownObject (ObjC) nonNull
// CHECK-LABEL: sil hidden @$s8builtins8isUnique{{[_0-9a-zA-Z]*}}F
-// CHECK: bb0(%0 : @trivial $*Builtin.UnknownObject):
+// CHECK: bb0(%0 : $*Builtin.UnknownObject):
// CHECK: [[WRITE:%.*]] = begin_access [modify] [unknown] %0
// CHECK: [[BUILTIN:%.*]] = is_unique [[WRITE]] : $*Builtin.UnknownObject
// CHECK: return
@@ -623,7 +623,7 @@
// BridgeObject nonNull
// CHECK-LABEL: sil hidden @$s8builtins8isUnique{{[_0-9a-zA-Z]*}}F
-// CHECK: bb0(%0 : @trivial $*Builtin.BridgeObject):
+// CHECK: bb0(%0 : $*Builtin.BridgeObject):
// CHECK: [[WRITE:%.*]] = begin_access [modify] [unknown] %0
// CHECK: [[BUILTIN:%.*]] = is_unique [[WRITE]] : $*Builtin.BridgeObject
// CHECK: return
@@ -633,7 +633,7 @@
// BridgeObject nonNull native
// CHECK-LABEL: sil hidden @$s8builtins15isUnique_native{{[_0-9a-zA-Z]*}}F
-// CHECK: bb0(%0 : @trivial $*Builtin.BridgeObject):
+// CHECK: bb0(%0 : $*Builtin.BridgeObject):
// CHECK: [[WRITE:%.*]] = begin_access [modify] [unknown] %0
// CHECK: [[CAST:%.*]] = unchecked_addr_cast [[WRITE]] : $*Builtin.BridgeObject to $*Builtin.NativeObject
// CHECK: return
@@ -731,7 +731,7 @@
}
// CHECK-LABEL: sil hidden @$s8builtins19unsafeGuaranteedEnd{{[_0-9a-zA-Z]*}}F
-// CHECK: bb0([[P:%.*]] : @trivial $Builtin.Int8):
+// CHECK: bb0([[P:%.*]] : $Builtin.Int8):
// CHECK: builtin "unsafeGuaranteedEnd"([[P]] : $Builtin.Int8)
// CHECK: [[S:%.*]] = tuple ()
// CHECK: return [[S]] : $()
@@ -741,7 +741,7 @@
}
// CHECK-LABEL: sil hidden @$s8builtins10bindMemory{{[_0-9a-zA-Z]*}}F
-// CHECK: bb0([[P:%.*]] : @trivial $Builtin.RawPointer, [[I:%.*]] : @trivial $Builtin.Word, [[T:%.*]] : @trivial $@thick T.Type):
+// CHECK: bb0([[P:%.*]] : $Builtin.RawPointer, [[I:%.*]] : $Builtin.Word, [[T:%.*]] : $@thick T.Type):
// CHECK: bind_memory [[P]] : $Builtin.RawPointer, [[I]] : $Builtin.Word to $*T
// CHECK: return {{%.*}} : $()
// CHECK: }
@@ -808,7 +808,7 @@
// CHECK-LABEL: sil hidden @$s8builtins19valueToBridgeObjectyBbSuF : $@convention(thin) (UInt) -> @owned Builtin.BridgeObject {
-// CHECK: bb0([[UINT:%.*]] : @trivial $UInt):
+// CHECK: bb0([[UINT:%.*]] : $UInt):
// CHECK: [[BI:%.*]] = struct_extract [[UINT]] : $UInt, #UInt._value
// CHECK: [[CAST:%.*]] = value_to_bridge_object [[BI]]
// CHECK: [[RET:%.*]] = copy_value [[CAST]] : $Builtin.BridgeObject
diff --git a/test/SILGen/c_function_pointers.swift b/test/SILGen/c_function_pointers.swift
index d3b1171..721e47d 100644
--- a/test/SILGen/c_function_pointers.swift
+++ b/test/SILGen/c_function_pointers.swift
@@ -4,7 +4,7 @@
return arg
}
// CHECK-LABEL: sil hidden @$s19c_function_pointers6valuesyS2iXCS2iXCF
-// CHECK: bb0(%0 : @trivial $@convention(c) (Int) -> Int):
+// CHECK: bb0(%0 : $@convention(c) (Int) -> Int):
// CHECK: return %0 : $@convention(c) (Int) -> Int
@discardableResult
@@ -12,7 +12,7 @@
return arg(x)
}
// CHECK-LABEL: sil hidden @$s19c_function_pointers5callsyS3iXC_SitF
-// CHECK: bb0(%0 : @trivial $@convention(c) @noescape (Int) -> Int, %1 : @trivial $Int):
+// CHECK: bb0(%0 : $@convention(c) @noescape (Int) -> Int, %1 : $Int):
// CHECK: [[RESULT:%.*]] = apply %0(%1)
// CHECK: return [[RESULT]]
@@ -27,7 +27,7 @@
// CHECK-LABEL: sil hidden @$s19c_function_pointers0B19_to_swift_functionsyySiF
func pointers_to_swift_functions(_ x: Int) {
-// CHECK: bb0([[X:%.*]] : @trivial $Int):
+// CHECK: bb0([[X:%.*]] : $Int):
func local(_ y: Int) -> Int { return y }
diff --git a/test/SILGen/capture_inout.swift b/test/SILGen/capture_inout.swift
index afdbefc..07158de 100644
--- a/test/SILGen/capture_inout.swift
+++ b/test/SILGen/capture_inout.swift
@@ -3,7 +3,7 @@
typealias Int = Builtin.Int64
// CHECK: sil hidden @$s13capture_inout8localFoo1xyBi64_z_tF
-// CHECK: bb0([[X_INOUT:%.*]] : @trivial $*Builtin.Int64):
+// CHECK: bb0([[X_INOUT:%.*]] : $*Builtin.Int64):
// CHECK-NOT: alloc_box
// CHECK: [[FUNC:%.*]] = function_ref [[CLOSURE:@.*]] : $@convention(thin) (@inout_aliasable Builtin.Int64) -> Builtin.Int64
// CHECK: apply [[FUNC]]([[X_INOUT]])
@@ -17,7 +17,7 @@
}
// CHECK: sil hidden @$s13capture_inout7anonFoo1xyBi64_z_tF
-// CHECK: bb0([[X_INOUT:%.*]] : @trivial $*Builtin.Int64):
+// CHECK: bb0([[X_INOUT:%.*]] : $*Builtin.Int64):
// CHECK-NOT: alloc_box
// CHECK: [[FUNC:%.*]] = function_ref [[CLOSURE:@.*]] : $@convention(thin) (@inout_aliasable Builtin.Int64) -> Builtin.Int64
// CHECK: apply [[FUNC]]([[X_INOUT]])
diff --git a/test/SILGen/capture_typed_boxes.swift b/test/SILGen/capture_typed_boxes.swift
index 117be0e..d01e694 100644
--- a/test/SILGen/capture_typed_boxes.swift
+++ b/test/SILGen/capture_typed_boxes.swift
@@ -17,7 +17,7 @@
return bar(0)
}
// CHECK-LABEL: sil private @$s19capture_typed_boxes7closureyS3icF3barL_yS2iF : $@convention(thin) (Int, @guaranteed { var @callee_guaranteed (Int) -> Int }) -> Int {
-// CHECK: bb0(%0 : @trivial $Int, %1 : @guaranteed ${ var @callee_guaranteed (Int) -> Int }):
+// CHECK: bb0(%0 : $Int, %1 : @guaranteed ${ var @callee_guaranteed (Int) -> Int }):
func closure_generic<T>(_ f: @escaping (T) -> T, x: T) -> T {
var f = f
@@ -28,5 +28,5 @@
return bar(x)
}
// CHECK-LABEL: sil private @$s19capture_typed_boxes15closure_generic{{.*}} : $@convention(thin) <T> (@in_guaranteed T, @guaranteed <τ_0_0> { var @callee_guaranteed (@in_guaranteed τ_0_0) -> @out τ_0_0 } <T>) -> @out T {
-// CHECK-LABEL: bb0(%0 : @trivial $*T, %1 : @trivial $*T, %2 : @guaranteed $<τ_0_0> { var @callee_guaranteed (@in_guaranteed τ_0_0) -> @out τ_0_0 } <T>):
+// CHECK-LABEL: bb0(%0 : $*T, %1 : $*T, %2 : @guaranteed $<τ_0_0> { var @callee_guaranteed (@in_guaranteed τ_0_0) -> @out τ_0_0 } <T>):
diff --git a/test/SILGen/casts.swift b/test/SILGen/casts.swift
index 401cd79..4a7278d 100644
--- a/test/SILGen/casts.swift
+++ b/test/SILGen/casts.swift
@@ -77,7 +77,7 @@
struct S : P {}
// CHECK: sil hidden @$s5casts32downcast_existential_conditional{{[_0-9a-zA-Z]*}}F
-// CHECK: bb0([[IN:%.*]] : @trivial $*P):
+// CHECK: bb0([[IN:%.*]] : $*P):
// CHECK: [[COPY:%.*]] = alloc_stack $P
// CHECK: copy_addr [[IN]] to [initialization] [[COPY]]
// CHECK: [[TMP:%.*]] = alloc_stack $S
@@ -94,7 +94,7 @@
// CHECK: dealloc_stack [[TMP]]
// CHECK: br bb3([[T0]] : $Optional<S>)
// Continuation block.
-// CHECK: bb3([[RESULT:%.*]] : @trivial $Optional<S>):
+// CHECK: bb3([[RESULT:%.*]] : $Optional<S>):
// CHECK: dealloc_stack [[COPY]]
// CHECK: return [[RESULT]]
func downcast_existential_conditional(p: P) -> S? {
diff --git a/test/SILGen/cf_members.swift b/test/SILGen/cf_members.swift
index 380aa65..5926ace 100644
--- a/test/SILGen/cf_members.swift
+++ b/test/SILGen/cf_members.swift
@@ -14,7 +14,7 @@
// CHECK-LABEL: sil @$s10cf_members3foo{{[_0-9a-zA-Z]*}}F
public func foo(_ x: Double) {
-// CHECK: bb0([[X:%.*]] : @trivial $Double):
+// CHECK: bb0([[X:%.*]] : $Double):
// CHECK: [[GLOBALVAR:%.*]] = global_addr @IAMStruct1GlobalVar
// CHECK: [[READ:%.*]] = begin_access [read] [dynamic] [[GLOBALVAR]] : $*Double
// CHECK: [[ZZ:%.*]] = load [trivial] [[READ]]
@@ -237,37 +237,37 @@
// CHECK: } // end sil function '$s10cf_members3foo{{[_0-9a-zA-Z]*}}F'
// CHECK-LABEL: sil shared [serializable] [thunk] @$sSo10IAMStruct1V5valueABSd_tcfCTO
-// CHECK: bb0([[X:%.*]] : @trivial $Double, [[SELF:%.*]] : @trivial $@thin Struct1.Type):
+// CHECK: bb0([[X:%.*]] : $Double, [[SELF:%.*]] : $@thin Struct1.Type):
// CHECK: [[CFUNC:%.*]] = function_ref @IAMStruct1CreateSimple
// CHECK: [[RET:%.*]] = apply [[CFUNC]]([[X]])
// CHECK: return [[RET]]
// CHECK-LABEL: sil shared [serializable] [thunk] @$sSo10IAMStruct1V9translate7radiansABSd_tFTO
-// CHECK: bb0([[X:%.*]] : @trivial $Double, [[SELF:%.*]] : @trivial $Struct1):
+// CHECK: bb0([[X:%.*]] : $Double, [[SELF:%.*]] : $Struct1):
// CHECK: store [[SELF]] to [trivial] [[TMP:%.*]] :
// CHECK: [[CFUNC:%.*]] = function_ref @IAMStruct1Rotate
// CHECK: [[RET:%.*]] = apply [[CFUNC]]([[TMP]], [[X]])
// CHECK: return [[RET]]
// CHECK-LABEL: sil shared [serializable] [thunk] @$sSo10IAMStruct1V5scaleyABSdFTO
-// CHECK: bb0([[X:%.*]] : @trivial $Double, [[SELF:%.*]] : @trivial $Struct1):
+// CHECK: bb0([[X:%.*]] : $Double, [[SELF:%.*]] : $Struct1):
// CHECK: [[CFUNC:%.*]] = function_ref @IAMStruct1Scale
// CHECK: [[RET:%.*]] = apply [[CFUNC]]([[SELF]], [[X]])
// CHECK: return [[RET]]
// CHECK-LABEL: sil shared [serializable] [thunk] @$sSo10IAMStruct1V12staticMethods5Int32VyFZTO
-// CHECK: bb0([[SELF:%.*]] : @trivial $@thin Struct1.Type):
+// CHECK: bb0([[SELF:%.*]] : $@thin Struct1.Type):
// CHECK: [[CFUNC:%.*]] = function_ref @IAMStruct1StaticMethod
// CHECK: [[RET:%.*]] = apply [[CFUNC]]()
// CHECK: return [[RET]]
// CHECK-LABEL: sil shared [serializable] [thunk] @$sSo10IAMStruct1V13selfComesLast1xySd_tFTO
-// CHECK: bb0([[X:%.*]] : @trivial $Double, [[SELF:%.*]] : @trivial $Struct1):
+// CHECK: bb0([[X:%.*]] : $Double, [[SELF:%.*]] : $Struct1):
// CHECK: [[CFUNC:%.*]] = function_ref @IAMStruct1SelfComesLast
// CHECK: apply [[CFUNC]]([[X]], [[SELF]])
// CHECK-LABEL: sil shared [serializable] [thunk] @$sSo10IAMStruct1V14selfComesThird1a1b1xys5Int32V_SfSdtFTO
-// CHECK: bb0([[X:%.*]] : @trivial $Int32, [[Y:%.*]] : @trivial $Float, [[Z:%.*]] : @trivial $Double, [[SELF:%.*]] : @trivial $Struct1):
+// CHECK: bb0([[X:%.*]] : $Int32, [[Y:%.*]] : $Float, [[Z:%.*]] : $Double, [[SELF:%.*]] : $Struct1):
// CHECK: [[CFUNC:%.*]] = function_ref @IAMStruct1SelfComesThird
// CHECK: apply [[CFUNC]]([[X]], [[Y]], [[SELF]], [[Z]])
diff --git a/test/SILGen/class_bound_protocols.swift b/test/SILGen/class_bound_protocols.swift
index e8bcf0f..e2376cc 100644
--- a/test/SILGen/class_bound_protocols.swift
+++ b/test/SILGen/class_bound_protocols.swift
@@ -110,7 +110,7 @@
// CHECK: } // end sil function '$ss30class_bound_existential_upcast1xs10ClassBound_psAC_s0E6Bound2p_tF'
// CHECK-LABEL: sil hidden @$ss41class_bound_to_unbound_existential_upcast1xs13NotClassBound_ps0hI0_sACp_tF :
-// CHECK: bb0([[ARG0:%.*]] : @trivial $*NotClassBound, [[ARG1:%.*]] : @guaranteed $ClassBound & NotClassBound):
+// CHECK: bb0([[ARG0:%.*]] : $*NotClassBound, [[ARG1:%.*]] : @guaranteed $ClassBound & NotClassBound):
// CHECK: [[X_OPENED:%.*]] = open_existential_ref [[ARG1]] : $ClassBound & NotClassBound to [[OPENED_TYPE:\$@opened(.*) ClassBound & NotClassBound]]
// CHECK: [[PAYLOAD_ADDR:%.*]] = init_existential_addr [[ARG0]] : $*NotClassBound, [[OPENED_TYPE]]
// CHECK: [[X_OPENED_COPY:%.*]] = copy_value [[X_OPENED]]
diff --git a/test/SILGen/closures.swift b/test/SILGen/closures.swift
index 28e1978..28a6b3f 100644
--- a/test/SILGen/closures.swift
+++ b/test/SILGen/closures.swift
@@ -29,7 +29,7 @@
// CHECK-LABEL: sil hidden @$s8closures17read_only_captureyS2iF : $@convention(thin) (Int) -> Int {
func read_only_capture(_ x: Int) -> Int {
var x = x
- // CHECK: bb0([[X:%[0-9]+]] : @trivial $Int):
+ // CHECK: bb0([[X:%[0-9]+]] : $Int):
// CHECK: [[XBOX:%[0-9]+]] = alloc_box ${ var Int }
// SEMANTIC ARC TODO: This is incorrect. We need to do the project_box on the copy.
// CHECK: [[PROJECT:%.*]] = project_box [[XBOX]]
@@ -63,7 +63,7 @@
// CHECK-LABEL: sil hidden @$s8closures16write_to_captureyS2iF : $@convention(thin) (Int) -> Int {
func write_to_capture(_ x: Int) -> Int {
var x = x
- // CHECK: bb0([[X:%[0-9]+]] : @trivial $Int):
+ // CHECK: bb0([[X:%[0-9]+]] : $Int):
// CHECK: [[XBOX:%[0-9]+]] = alloc_box ${ var Int }
// CHECK: [[XBOX_PB:%.*]] = project_box [[XBOX]]
// CHECK: store [[X]] to [trivial] [[XBOX_PB]]
@@ -121,7 +121,7 @@
// CHECK-LABEL: sil hidden @$s8closures18capture_local_funcySiycycSiF : $@convention(thin) (Int) -> @owned @callee_guaranteed () -> @owned @callee_guaranteed () -> Int {
func capture_local_func(_ x: Int) -> () -> () -> Int {
- // CHECK: bb0([[ARG:%.*]] : @trivial $Int):
+ // CHECK: bb0([[ARG:%.*]] : $Int):
var x = x
// CHECK: [[XBOX:%[0-9]+]] = alloc_box ${ var Int }
// CHECK: [[XBOX_PB:%.*]] = project_box [[XBOX]]
@@ -159,7 +159,7 @@
// CHECK-LABEL: sil hidden @$s8closures22anon_read_only_capture{{[_0-9a-zA-Z]*}}F
func anon_read_only_capture(_ x: Int) -> Int {
var x = x
- // CHECK: bb0([[X:%[0-9]+]] : @trivial $Int):
+ // CHECK: bb0([[X:%[0-9]+]] : $Int):
// CHECK: [[XBOX:%[0-9]+]] = alloc_box ${ var Int }
// CHECK: [[PB:%.*]] = project_box [[XBOX]]
@@ -173,7 +173,7 @@
// CHECK: return [[RET]]
}
// CHECK: sil private @[[CLOSURE_NAME]]
-// CHECK: bb0([[XADDR:%[0-9]+]] : @trivial $*Int):
+// CHECK: bb0([[XADDR:%[0-9]+]] : $*Int):
// CHECK: [[ACCESS:%.*]] = begin_access [read] [unknown] [[XADDR]] : $*Int
// CHECK: [[X:%[0-9]+]] = load [trivial] [[ACCESS]]
// CHECK: return [[X]]
@@ -181,7 +181,7 @@
// CHECK-LABEL: sil hidden @$s8closures21small_closure_capture{{[_0-9a-zA-Z]*}}F
func small_closure_capture(_ x: Int) -> Int {
var x = x
- // CHECK: bb0([[X:%[0-9]+]] : @trivial $Int):
+ // CHECK: bb0([[X:%[0-9]+]] : $Int):
// CHECK: [[XBOX:%[0-9]+]] = alloc_box ${ var Int }
// CHECK: [[PB:%.*]] = project_box [[XBOX]]
@@ -195,7 +195,7 @@
// CHECK: return [[RET]]
}
// CHECK: sil private @[[CLOSURE_NAME]]
-// CHECK: bb0([[XADDR:%[0-9]+]] : @trivial $*Int):
+// CHECK: bb0([[XADDR:%[0-9]+]] : $*Int):
// CHECK: [[ACCESS:%.*]] = begin_access [read] [unknown] [[XADDR]] : $*Int
// CHECK: [[X:%[0-9]+]] = load [trivial] [[ACCESS]]
// CHECK: return [[X]]
@@ -216,7 +216,7 @@
// CHECK: return [[ANON_CLOSURE_APP]]
}
// CHECK: sil private @[[CLOSURE_NAME]] : $@convention(thin) (Int, @guaranteed { var Int }) -> Int
-// CHECK: bb0([[DOLLAR0:%[0-9]+]] : @trivial $Int, [[XBOX:%[0-9]+]] : @guaranteed ${ var Int }):
+// CHECK: bb0([[DOLLAR0:%[0-9]+]] : $Int, [[XBOX:%[0-9]+]] : @guaranteed ${ var Int }):
// CHECK: [[XADDR:%[0-9]+]] = project_box [[XBOX]]
// CHECK: [[INTTYPE:%[0-9]+]] = metatype $@thin Int.Type
// CHECK: [[XACCESS:%[0-9]+]] = begin_access [read] [unknown] [[XADDR]] : $*Int
@@ -234,13 +234,13 @@
return { $0 }
}
// CHECK: sil private @[[CLOSURE_NAME]] : $@convention(thin) (Int) -> Int
-// CHECK: bb0([[YARG:%[0-9]+]] : @trivial $Int):
+// CHECK: bb0([[YARG:%[0-9]+]] : $Int):
// CHECK-LABEL: sil hidden @$s8closures17uncaptured_locals{{[_0-9a-zA-Z]*}}F :
func uncaptured_locals(_ x: Int) -> (Int, Int) {
var x = x
// -- locals without captures are stack-allocated
- // CHECK: bb0([[XARG:%[0-9]+]] : @trivial $Int):
+ // CHECK: bb0([[XARG:%[0-9]+]] : $Int):
// CHECK: [[XADDR:%[0-9]+]] = alloc_box ${ var Int }
// CHECK: [[PB:%.*]] = project_box [[XADDR]]
// CHECK: store [[XARG]] to [trivial] [[PB]]
@@ -417,13 +417,13 @@
// Check that the address of self is passed in, but not the refcount pointer.
// CHECK-LABEL: sil hidden @$s8closures24StructWithMutatingMethodV08mutatingE0{{[_0-9a-zA-Z]*}}F
-// CHECK: bb0(%0 : @trivial $*StructWithMutatingMethod):
+// CHECK: bb0(%0 : $*StructWithMutatingMethod):
// CHECK: [[CLOSURE:%[0-9]+]] = function_ref @$s8closures24StructWithMutatingMethodV08mutatingE0{{.*}} : $@convention(thin) (@inout_aliasable StructWithMutatingMethod) -> Int
// CHECK: partial_apply [callee_guaranteed] [[CLOSURE]](%0) : $@convention(thin) (@inout_aliasable StructWithMutatingMethod) -> Int
// Check that the closure body only takes the pointer.
// CHECK-LABEL: sil private @$s8closures24StructWithMutatingMethodV08mutatingE0{{.*}} : $@convention(thin) (@inout_aliasable StructWithMutatingMethod) -> Int {
-// CHECK: bb0(%0 : @trivial $*StructWithMutatingMethod):
+// CHECK: bb0(%0 : $*StructWithMutatingMethod):
class SuperBase {
func boom() {}
diff --git a/test/SILGen/closures_callee_guaranteed.swift b/test/SILGen/closures_callee_guaranteed.swift
index 463c4c8..0de6809 100644
--- a/test/SILGen/closures_callee_guaranteed.swift
+++ b/test/SILGen/closures_callee_guaranteed.swift
@@ -2,7 +2,7 @@
import Swift
// CHECK-LABEL: sil @{{.*}}apply{{.*}} : $@convention(thin) (@noescape @callee_guaranteed () -> Int)
-// bb0(%0 : @trivial $@noescape @callee_guaranteed () -> Int):
+// bb0(%0 : $@noescape @callee_guaranteed () -> Int):
// [[B1:%.*]] = begin_borrow %0 : $@noescape @callee_guaranteed () -> Int
// [[C1:%.*]] = copy_value %2 : $@noescape @callee_guaranteed () -> Int
//
diff --git a/test/SILGen/codable/struct_codable_member_type_lookup.swift b/test/SILGen/codable/struct_codable_member_type_lookup.swift
index c8d4d38..27bc423 100644
--- a/test/SILGen/codable/struct_codable_member_type_lookup.swift
+++ b/test/SILGen/codable/struct_codable_member_type_lookup.swift
@@ -3,7 +3,7 @@
// Make sure we have an int, not a float.
//
// CHECK-LABEL: sil hidden @$s33struct_codable_member_type_lookup32StaticInstanceNameDisambiguationV6encode2to{{.*}}F : $@convention(method) (@in_guaranteed Encoder, StaticInstanceNameDisambiguation) -> @error Error {
-// CHECK: bb0([[ENCODER:%.*]] : @trivial $*Encoder, [[INPUT:%.*]] : @trivial $StaticInstanceNameDisambiguation):
+// CHECK: bb0([[ENCODER:%.*]] : $*Encoder, [[INPUT:%.*]] : $StaticInstanceNameDisambiguation):
// CHECK: [[INT_VALUE:%.*]] = struct_extract [[INPUT]]
// CHECK: [[FUNC:%.*]] = function_ref @$ss22KeyedEncodingContainerV6encode_6forKeyySi_xtKF : $@convention(method) <τ_0_0 where τ_0_0 : CodingKey> (Int, @in_guaranteed τ_0_0, @inout KeyedEncodingContainer<τ_0_0>) -> @error Error
// CHECK: try_apply [[FUNC]]<StaticInstanceNameDisambiguation.CodingKeys>([[INT_VALUE]],
diff --git a/test/SILGen/complete_object_init.swift b/test/SILGen/complete_object_init.swift
index 4bcacd8..d50ef19 100644
--- a/test/SILGen/complete_object_init.swift
+++ b/test/SILGen/complete_object_init.swift
@@ -4,7 +4,7 @@
class A {
// CHECK-LABEL: sil hidden @$s20complete_object_init1AC{{[_0-9a-zA-Z]*}}fC : $@convention(method) (@thick A.Type) -> @owned A
-// CHECK: bb0([[SELF_META:%[0-9]+]] : @trivial $@thick A.Type):
+// CHECK: bb0([[SELF_META:%[0-9]+]] : $@thick A.Type):
// CHECK: [[SELF_BOX:%[0-9]+]] = alloc_box ${ var A }
// CHECK: [[UNINIT_SELF:%[0-9]+]] = mark_uninitialized [delegatingself] [[SELF_BOX]] : ${ var A }
// CHECK: [[PB:%.*]] = project_box [[UNINIT_SELF]]
diff --git a/test/SILGen/decls.swift b/test/SILGen/decls.swift
index 7b6299e..9fa4494 100644
--- a/test/SILGen/decls.swift
+++ b/test/SILGen/decls.swift
@@ -83,7 +83,7 @@
}
// CHECK-LABEL: sil hidden @$s5decls16simple_arguments{{[_0-9a-zA-Z]*}}F
-// CHECK: bb0(%0 : @trivial $Int, %1 : @trivial $Int):
+// CHECK: bb0(%0 : $Int, %1 : $Int):
// CHECK: [[X:%[0-9]+]] = alloc_box ${ var Int }
// CHECK-NEXT: [[PBX:%.*]] = project_box [[X]]
// CHECK-NEXT: store %0 to [trivial] [[PBX]]
@@ -97,14 +97,14 @@
}
// CHECK-LABEL: sil hidden @$s5decls14tuple_argument{{[_0-9a-zA-Z]*}}F
-// CHECK: bb0(%0 : @trivial $Int, %1 : @trivial $Float):
+// CHECK: bb0(%0 : $Int, %1 : $Float):
// CHECK: [[UNIT:%[0-9]+]] = tuple ()
// CHECK: [[TUPLE:%[0-9]+]] = tuple (%0 : $Int, %1 : $Float, [[UNIT]] : $())
func tuple_argument(x: (Int, Float, ())) {
}
// CHECK-LABEL: sil hidden @$s5decls14inout_argument{{[_0-9a-zA-Z]*}}F
-// CHECK: bb0(%0 : @trivial $*Int, %1 : @trivial $Int):
+// CHECK: bb0(%0 : $*Int, %1 : $Int):
// CHECK: [[X_LOCAL:%[0-9]+]] = alloc_box ${ var Int }
// CHECK: [[PBX:%.*]] = project_box [[X_LOCAL]]
func inout_argument(x: inout Int, y: Int) {
diff --git a/test/SILGen/default_arguments.swift b/test/SILGen/default_arguments.swift
index 4731051..91b650d 100644
--- a/test/SILGen/default_arguments.swift
+++ b/test/SILGen/default_arguments.swift
@@ -189,7 +189,7 @@
// CHECK-LABEL: sil hidden @$s17default_arguments25testTakeDefaultArgUnnamed{{[_0-9a-zA-Z]*}}F
func testTakeDefaultArgUnnamed(_ i: Int) {
- // CHECK: bb0([[I:%[0-9]+]] : @trivial $Int):
+ // CHECK: bb0([[I:%[0-9]+]] : $Int):
// CHECK: [[FN:%[0-9]+]] = function_ref @$s17default_arguments21takeDefaultArgUnnamedyySiF : $@convention(thin) (Int) -> ()
// CHECK: apply [[FN]]([[I]]) : $@convention(thin) (Int) -> ()
takeDefaultArgUnnamed(i)
diff --git a/test/SILGen/dependent_member_lowering.swift b/test/SILGen/dependent_member_lowering.swift
index f9dcdfe..a883385 100644
--- a/test/SILGen/dependent_member_lowering.swift
+++ b/test/SILGen/dependent_member_lowering.swift
@@ -11,12 +11,12 @@
func f(_ t: T.Type) {}
// CHECK-LABEL: sil private [transparent] [thunk] @$s25dependent_member_lowering3FooVyxGAA1PA2aEP1fyy1AQzFTW : $@convention(witness_method: P) <τ_0_0> (@in_guaranteed @thick τ_0_0.Type, @in_guaranteed Foo<τ_0_0>) -> ()
- // CHECK: bb0(%0 : @trivial $*@thick τ_0_0.Type, %1 : @trivial $*Foo<τ_0_0>):
+ // CHECK: bb0(%0 : $*@thick τ_0_0.Type, %1 : $*Foo<τ_0_0>):
}
struct Bar<T>: P {
typealias A = (Int) -> T
func f(_ t: @escaping (Int) -> T) {}
// CHECK-LABEL: sil private [transparent] [thunk] @$s25dependent_member_lowering3BarVyxGAA1PA2aEP1fyy1AQzFTW : $@convention(witness_method: P) <τ_0_0> (@in_guaranteed @callee_guaranteed (@in_guaranteed Int) -> @out τ_0_0, @in_guaranteed Bar<τ_0_0>) -> ()
- // CHECK: bb0(%0 : @trivial $*@callee_guaranteed (@in_guaranteed Int) -> @out τ_0_0, %1 : @trivial $*Bar<τ_0_0>):
+ // CHECK: bb0(%0 : $*@callee_guaranteed (@in_guaranteed Int) -> @out τ_0_0, %1 : $*Bar<τ_0_0>):
}
diff --git a/test/SILGen/dynamic.swift b/test/SILGen/dynamic.swift
index 091ec68..1db1cf0 100644
--- a/test/SILGen/dynamic.swift
+++ b/test/SILGen/dynamic.swift
@@ -491,7 +491,7 @@
// thunk.
// CHECK-LABEL: sil private @$s7dynamic15ConcreteDerivedC6methodyySiFAA11GenericBaseCADyyxFTV : $@convention(method) (@in_guaranteed Int, @guaranteed ConcreteDerived) -> ()
-// CHECK: bb0(%0 : @trivial $*Int, %1 : @guaranteed $ConcreteDerived):
+// CHECK: bb0(%0 : $*Int, %1 : @guaranteed $ConcreteDerived):
// CHECK-NEXT: [[VALUE:%.*]] = load [trivial] %0 : $*Int
// CHECK: [[DYNAMIC_THUNK:%.*]] = function_ref @$s7dynamic15ConcreteDerivedC6methodyySiFTD : $@convention(method) (Int, @guaranteed ConcreteDerived) -> ()
// CHECK-NEXT: apply [[DYNAMIC_THUNK]]([[VALUE]], %1) : $@convention(method) (Int, @guaranteed ConcreteDerived) -> ()
diff --git a/test/SILGen/dynamic_callable_attribute.swift b/test/SILGen/dynamic_callable_attribute.swift
index 9bf9ae9..30e6f96 100644
--- a/test/SILGen/dynamic_callable_attribute.swift
+++ b/test/SILGen/dynamic_callable_attribute.swift
@@ -18,7 +18,7 @@
}
// CHECK-LABEL: sil @foo
-// CHECK: bb0(%0 : @trivial $Callable):
+// CHECK: bb0(%0 : $Callable):
// CHECK: [[DYN_CALL_1:%.*]] = function_ref @$s26dynamic_callable_attribute8CallableV15dynamicallyCall13withArgumentsySaySiG_tF
// CHECK-NEXT: apply [[DYN_CALL_1]]
// CHECK: [[DYN_CALL_2:%.*]] = function_ref @$s26dynamic_callable_attribute8CallableV15dynamicallyCall13withArgumentsySaySiG_tF
diff --git a/test/SILGen/dynamic_init.swift b/test/SILGen/dynamic_init.swift
index 7014048..0058e52 100644
--- a/test/SILGen/dynamic_init.swift
+++ b/test/SILGen/dynamic_init.swift
@@ -6,7 +6,7 @@
// CHECK-LABEL: sil hidden @$s12dynamic_init15testDynamicInit{{[_0-9a-zA-Z]*}}F
func testDynamicInit(cm: C.Type) {
- // CHECK: bb0([[CM:%[0-9]+]] : @trivial $@thick C.Type):
+ // CHECK: bb0([[CM:%[0-9]+]] : $@thick C.Type):
// CHECK: [[METHOD:%[0-9]+]] = class_method [[CM]] : $@thick C.Type, #C.init!allocator.1 : (C.Type) -> () -> C, $@convention(method) (@thick C.Type) -> @owned C
// CHECK: [[C_OBJ:%[0-9]+]] = apply [[METHOD]]([[CM]]) : $@convention(method) (@thick C.Type) -> @owned C
// CHECK: destroy_value [[C_OBJ]] : $C
diff --git a/test/SILGen/dynamic_lookup.swift b/test/SILGen/dynamic_lookup.swift
index ff7b604..d20c387 100644
--- a/test/SILGen/dynamic_lookup.swift
+++ b/test/SILGen/dynamic_lookup.swift
@@ -81,7 +81,7 @@
// CHECK: dynamic_method_br [[OBJ_SELF]] : $@opened({{.*}}) AnyObject, #X.f!1.foreign, [[HASBB:[a-zA-z0-9]+]], [[NOBB:[a-zA-z0-9]+]]
// Has method BB:
- // CHECK: [[HASBB]]([[UNCURRIED:%[0-9]+]] : @trivial $@convention(objc_method) (@opened({{.*}}) AnyObject) -> ()):
+ // CHECK: [[HASBB]]([[UNCURRIED:%[0-9]+]] : $@convention(objc_method) (@opened({{.*}}) AnyObject) -> ()):
// CHECK: [[OBJ_SELF_COPY:%.*]] = copy_value [[OBJ_SELF]]
// CHECK: [[PARTIAL:%[0-9]+]] = partial_apply [callee_guaranteed] [[UNCURRIED]]([[OBJ_SELF_COPY]]) : $@convention(objc_method) (@opened({{.*}}) AnyObject) -> ()
// CHECK: [[THUNK_PAYLOAD:%.*]] = init_enum_data_addr [[OPT_TMP]]
@@ -151,7 +151,7 @@
// CHECK: [[OPTTEMP:%.*]] = alloc_stack $Optional<Int>
// CHECK: dynamic_method_br [[RAWOBJ_SELF]] : $@opened({{.*}}) AnyObject, #X.value!getter.1.foreign, bb1, bb2
- // CHECK: bb1([[METHOD:%[0-9]+]] : @trivial $@convention(objc_method) (@opened({{.*}}) AnyObject) -> Int):
+ // CHECK: bb1([[METHOD:%[0-9]+]] : $@convention(objc_method) (@opened({{.*}}) AnyObject) -> Int):
// CHECK: [[RAWOBJ_SELF_COPY:%.*]] = copy_value [[RAWOBJ_SELF]]
// CHECK: [[BOUND_METHOD:%[0-9]+]] = partial_apply [callee_guaranteed] [[METHOD]]([[RAWOBJ_SELF_COPY]]) : $@convention(objc_method) (@opened({{.*}}) AnyObject) -> Int
// CHECK: [[B:%.*]] = begin_borrow [[BOUND_METHOD]]
@@ -180,7 +180,7 @@
// GUARANTEED: [[OPTTEMP:%.*]] = alloc_stack $Optional<Int>
// GUARANTEED: dynamic_method_br [[RAWOBJ_SELF]] : $@opened({{.*}}) AnyObject, #X.value!getter.1.foreign, bb1, bb2
- // GUARANTEED: bb1([[METHOD:%[0-9]+]] : @trivial $@convention(objc_method) (@opened({{.*}}) AnyObject) -> Int):
+ // GUARANTEED: bb1([[METHOD:%[0-9]+]] : $@convention(objc_method) (@opened({{.*}}) AnyObject) -> Int):
// GUARANTEED: [[RAWOBJ_SELF_COPY:%.*]] = copy_value [[RAWOBJ_SELF]]
// GUARANTEED: [[BOUND_METHOD:%[0-9]+]] = partial_apply [callee_guaranteed] [[METHOD]]([[RAWOBJ_SELF_COPY]])
// GUARANTEED: [[BEGIN_BORROW:%.*]] = begin_borrow [[BOUND_METHOD]]
@@ -196,7 +196,7 @@
func direct_to_subscript(_ obj: AnyObject, i: Int) {
var obj = obj
var i = i
- // CHECK: bb0([[OBJ:%[0-9]+]] : @guaranteed $AnyObject, [[I:%[0-9]+]] : @trivial $Int):
+ // CHECK: bb0([[OBJ:%[0-9]+]] : @guaranteed $AnyObject, [[I:%[0-9]+]] : $Int):
// CHECK: [[OBJ_BOX:%[0-9]+]] = alloc_box ${ var AnyObject }
// CHECK: [[PBOBJ:%[0-9]+]] = project_box [[OBJ_BOX]]
// CHECK: [[OBJ_COPY:%.*]] = copy_value [[OBJ]]
@@ -214,7 +214,7 @@
// CHECK: [[OPTTEMP:%.*]] = alloc_stack $Optional<Int>
// CHECK: dynamic_method_br [[OBJ_REF]] : $@opened({{.*}}) AnyObject, #X.subscript!getter.1.foreign, bb1, bb2
- // CHECK: bb1([[GETTER:%[0-9]+]] : @trivial $@convention(objc_method) (Int, @opened({{.*}}) AnyObject) -> Int):
+ // CHECK: bb1([[GETTER:%[0-9]+]] : $@convention(objc_method) (Int, @opened({{.*}}) AnyObject) -> Int):
// CHECK: [[OBJ_REF_COPY:%.*]] = copy_value [[OBJ_REF]]
// CHECK: [[GETTER_WITH_SELF:%[0-9]+]] = partial_apply [callee_guaranteed] [[GETTER]]([[OBJ_REF_COPY]]) : $@convention(objc_method) (Int, @opened({{.*}}) AnyObject) -> Int
// CHECK: [[B:%.*]] = begin_borrow [[GETTER_WITH_SELF]]
@@ -230,7 +230,7 @@
// CHECK: } // end sil function '$s14dynamic_lookup19direct_to_subscript{{[_0-9a-zA-Z]*}}F'
// GUARANTEED-LABEL: sil hidden @$s14dynamic_lookup19direct_to_subscript{{[_0-9a-zA-Z]*}}F
- // GUARANTEED: bb0([[OBJ:%[0-9]+]] : @guaranteed $AnyObject, [[I:%[0-9]+]] : @trivial $Int):
+ // GUARANTEED: bb0([[OBJ:%[0-9]+]] : @guaranteed $AnyObject, [[I:%[0-9]+]] : $Int):
// GUARANTEED: [[OBJ_BOX:%[0-9]+]] = alloc_box ${ var AnyObject }
// GUARANTEED: [[PBOBJ:%[0-9]+]] = project_box [[OBJ_BOX]]
// GUARANTEED: [[OBJ_COPY:%.*]] = copy_value [[OBJ]]
@@ -248,7 +248,7 @@
// GUARANTEED: [[OPTTEMP:%.*]] = alloc_stack $Optional<Int>
// GUARANTEED: dynamic_method_br [[OBJ_REF]] : $@opened({{.*}}) AnyObject, #X.subscript!getter.1.foreign, bb1, bb2
- // GUARANTEED: bb1([[GETTER:%[0-9]+]] : @trivial $@convention(objc_method) (Int, @opened({{.*}}) AnyObject) -> Int):
+ // GUARANTEED: bb1([[GETTER:%[0-9]+]] : $@convention(objc_method) (Int, @opened({{.*}}) AnyObject) -> Int):
// GUARANTEED: [[OBJ_REF_COPY:%.*]] = copy_value [[OBJ_REF]]
// GUARANTEED: [[GETTER_WITH_SELF:%[0-9]+]] = partial_apply [callee_guaranteed] [[GETTER]]([[OBJ_REF_COPY]])
// GUARANTEED: [[BORROW:%.*]] = begin_borrow [[GETTER_WITH_SELF]]
@@ -264,7 +264,7 @@
func opt_to_subscript(_ obj: AnyObject, i: Int) {
var obj = obj
var i = i
- // CHECK: bb0([[OBJ:%[0-9]+]] : @guaranteed $AnyObject, [[I:%[0-9]+]] : @trivial $Int):
+ // CHECK: bb0([[OBJ:%[0-9]+]] : @guaranteed $AnyObject, [[I:%[0-9]+]] : $Int):
// CHECK: [[OBJ_BOX:%[0-9]+]] = alloc_box ${ var AnyObject }
// CHECK: [[PBOBJ:%[0-9]+]] = project_box [[OBJ_BOX]]
// CHECK: [[OBJ_COPY:%.*]] = copy_value [[OBJ]]
@@ -280,7 +280,7 @@
// CHECK: [[OPTTEMP:%.*]] = alloc_stack $Optional<Int>
// CHECK: dynamic_method_br [[OBJ_REF]] : $@opened({{.*}}) AnyObject, #X.subscript!getter.1.foreign, bb1, bb2
- // CHECK: bb1([[GETTER:%[0-9]+]] : @trivial $@convention(objc_method) (Int, @opened({{.*}}) AnyObject) -> Int):
+ // CHECK: bb1([[GETTER:%[0-9]+]] : $@convention(objc_method) (Int, @opened({{.*}}) AnyObject) -> Int):
// CHECK: [[OBJ_REF_COPY:%.*]] = copy_value [[OBJ_REF]]
// CHECK: [[GETTER_WITH_SELF:%[0-9]+]] = partial_apply [callee_guaranteed] [[GETTER]]([[OBJ_REF_COPY]]) : $@convention(objc_method) (Int, @opened({{.*}}) AnyObject) -> Int
// CHECK: [[B:%.*]] = begin_borrow [[GETTER_WITH_SELF]]
@@ -321,7 +321,7 @@
// CHECK: [[BOX:%.*]] = alloc_stack $Optional<Juice>
// CHECK: dynamic_method_br [[SELF:%.*]] : $@opened("{{.*}}") Fruit, #Fruit.juice!getter.1.foreign, bb1, bb2
-// CHECK: bb1([[FN:%.*]] : @trivial $@convention(objc_method) (@opened("{{.*}}") Fruit) -> @autoreleased Juice):
+// CHECK: bb1([[FN:%.*]] : $@convention(objc_method) (@opened("{{.*}}") Fruit) -> @autoreleased Juice):
// CHECK: [[SELF_COPY:%.*]] = copy_value [[SELF]]
// CHECK: [[METHOD:%.*]] = partial_apply [callee_guaranteed] [[FN]]([[SELF_COPY]]) : $@convention(objc_method) (@opened("{{.*}}") Fruit) -> @autoreleased Juice
// CHECK: [[B:%.*]] = begin_borrow [[METHOD]]
diff --git a/test/SILGen/dynamic_self.swift b/test/SILGen/dynamic_self.swift
index fcc2ec3..7fe93d4 100644
--- a/test/SILGen/dynamic_self.swift
+++ b/test/SILGen/dynamic_self.swift
@@ -17,7 +17,7 @@
func f() -> Self { return self }
// CHECK-LABEL: sil hidden @$s12dynamic_self1XC7factory{{[_0-9a-zA-Z]*}}FZ : $@convention(method) (Int, @thick X.Type) -> @owned X
- // CHECK: bb0([[I:%[0-9]+]] : @trivial $Int, [[SELF:%[0-9]+]] : @trivial $@thick X.Type):
+ // CHECK: bb0([[I:%[0-9]+]] : $Int, [[SELF:%[0-9]+]] : $@thick X.Type):
// CHECK: [[DYNAMIC_SELF:%[0-9]+]] = unchecked_trivial_bit_cast [[SELF]] : $@thick X.Type to $@thick @dynamic_self X.Type
// CHECK: [[STATIC_SELF:%[0-9]+]] = upcast [[DYNAMIC_SELF]] : $@thick @dynamic_self X.Type to $@thick X.Type
// CHECK: [[CTOR:%[0-9]+]] = class_method [[STATIC_SELF]] : $@thick X.Type, #X.init!allocator.1 : (X.Type) -> (Int) -> X, $@convention(method) (Int, @thick X.Type) -> @owned X
@@ -61,7 +61,7 @@
// CHECK-LABEL: sil hidden @$s12dynamic_self21testArchetypeDispatch{{[_0-9a-zA-Z]*}}F : $@convention(thin) <T where T : P> (@in_guaranteed T) -> ()
func testArchetypeDispatch<T: P>(t: T) {
- // CHECK: bb0([[T:%[0-9]+]] : @trivial $*T):
+ // CHECK: bb0([[T:%[0-9]+]] : $*T):
// CHECK: [[T_RESULT:%[0-9]+]] = alloc_stack $T
// CHECK: [[ARCHETYPE_F:%[0-9]+]] = witness_method $T, #P.f!1 : {{.*}} : $@convention(witness_method: P) <τ_0_0 where τ_0_0 : P> (@in_guaranteed τ_0_0) -> @out τ_0_0
// CHECK: [[SELF_RESULT:%[0-9]+]] = apply [[ARCHETYPE_F]]<T>([[T_RESULT]], [[T]]) : $@convention(witness_method: P) <τ_0_0 where τ_0_0 : P> (@in_guaranteed τ_0_0) -> @out τ_0_0
@@ -70,7 +70,7 @@
// CHECK-LABEL: sil hidden @$s12dynamic_self23testExistentialDispatch{{[_0-9a-zA-Z]*}}F
func testExistentialDispatch(p: P) {
-// CHECK: bb0([[P:%[0-9]+]] : @trivial $*P):
+// CHECK: bb0([[P:%[0-9]+]] : $*P):
// CHECK: [[PCOPY_ADDR:%[0-9]+]] = open_existential_addr immutable_access [[P]] : $*P to $*@opened([[N:".*"]]) P
// CHECK: [[P_RESULT:%[0-9]+]] = alloc_stack $P
// CHECK: [[P_F_METHOD:%[0-9]+]] = witness_method $@opened([[N]]) P, #P.f!1 : {{.*}}, [[PCOPY_ADDR]]{{.*}} : $@convention(witness_method: P) <τ_0_0 where τ_0_0 : P> (@in_guaranteed τ_0_0) -> @out τ_0_0
@@ -100,7 +100,7 @@
func testAnyObjectDispatch(o: AnyObject) {
// CHECK: dynamic_method_br [[O_OBJ:%[0-9]+]] : $@opened({{.*}}) AnyObject, #ObjC.method!1.foreign, bb1, bb2
- // CHECK: bb1([[METHOD:%[0-9]+]] : @trivial $@convention(objc_method) (@opened({{.*}}) AnyObject) -> @autoreleased AnyObject):
+ // CHECK: bb1([[METHOD:%[0-9]+]] : $@convention(objc_method) (@opened({{.*}}) AnyObject) -> @autoreleased AnyObject):
// CHECK: [[O_OBJ_COPY:%.*]] = copy_value [[O_OBJ]]
// CHECK: [[VAR_9:%[0-9]+]] = partial_apply [callee_guaranteed] [[METHOD]]([[O_OBJ_COPY]]) : $@convention(objc_method) (@opened({{.*}}) AnyObject) -> @autoreleased AnyObject
var _ = o.method
@@ -115,7 +115,7 @@
// CHECK-LABEL: sil hidden @$s12dynamic_self12testObjCInit{{[_0-9a-zA-Z]*}}F : $@convention(thin) (@thick ObjCInit.Type) -> ()
func testObjCInit(meta: ObjCInit.Type) {
-// CHECK: bb0([[THICK_META:%[0-9]+]] : @trivial $@thick ObjCInit.Type):
+// CHECK: bb0([[THICK_META:%[0-9]+]] : $@thick ObjCInit.Type):
// CHECK: [[OBJC_META:%[0-9]+]] = thick_to_objc_metatype [[THICK_META]] : $@thick ObjCInit.Type to $@objc_metatype ObjCInit.Type
// CHECK: [[OBJ:%[0-9]+]] = alloc_ref_dynamic [objc] [[OBJC_META]] : $@objc_metatype ObjCInit.Type, $ObjCInit
// CHECK: [[INIT:%[0-9]+]] = objc_method [[OBJ]] : $ObjCInit, #ObjCInit.init!initializer.1.foreign : (ObjCInit.Type) -> () -> ObjCInit, $@convention(objc_method) (@owned ObjCInit) -> @owned ObjCInit
@@ -276,7 +276,7 @@
// CHECK-LABEL: sil hidden @$s12dynamic_self07FactoryC0C11newInstanceACXDyFZ : $@convention(method) (@thick FactoryFactory.Type) -> @owned FactoryFactory
static func newInstance() -> Self {
- // CHECK: bb0(%0 : @trivial $@thick FactoryFactory.Type):
+ // CHECK: bb0(%0 : $@thick FactoryFactory.Type):
// CHECK: [[DYNAMIC_SELF:%.*]] = unchecked_trivial_bit_cast %0 : $@thick FactoryFactory.Type to $@thick @dynamic_self FactoryFactory.Type
// CHECK: [[METATYPE:%.*]] = value_metatype $@thick @dynamic_self FactoryFactory.Type.Type, [[DYNAMIC_SELF]] : $@thick @dynamic_self FactoryFactory.Type
diff --git a/test/SILGen/dynamically_replaceable.swift b/test/SILGen/dynamically_replaceable.swift
index 6a89342..82a54c9 100644
--- a/test/SILGen/dynamically_replaceable.swift
+++ b/test/SILGen/dynamically_replaceable.swift
@@ -107,7 +107,7 @@
// CHECK: apply [[ORIG]]([[ARG]]) : $@convention(method) (@guaranteed Klass) -> Int
// CHECK-LABEL: sil hidden [dynamic_replacement_for "$s23dynamically_replaceable5KlassC08dynamic_B4_varSivs"] @$s23dynamically_replaceable5KlassC1rSivs : $@convention(method) (Int, @guaranteed Klass) -> () {
-// CHECK: bb0({{.*}} : @trivial $Int, [[SELF:%.*]] : @guaranteed $Klass):
+// CHECK: bb0({{.*}} : $Int, [[SELF:%.*]] : @guaranteed $Klass):
// CHECK: [[ORIG:%.*]] = prev_dynamic_function_ref @$s23dynamically_replaceable5KlassC1rSivs
// CHECK: apply [[ORIG]]({{.*}}, [[SELF]]) : $@convention(method)
@_dynamicReplacement(for: dynamic_replaceable_var)
@@ -121,12 +121,12 @@
}
// CHECK-LABEL: sil hidden [dynamic_replacement_for "$s23dynamically_replaceable5KlassCyS2icig"] @$s23dynamically_replaceable5KlassC1xS2i_tcig
-// CHECK: bb0({{.*}} : @trivial $Int, [[SELF:%.*]] : @guaranteed $Klass):
+// CHECK: bb0({{.*}} : $Int, [[SELF:%.*]] : @guaranteed $Klass):
// CHECK: [[ORIG:%.*]] = prev_dynamic_function_ref @$s23dynamically_replaceable5KlassC1xS2i_tcig
// CHECK: apply [[ORIG]]({{.*}}, [[SELF]]) : $@convention(method) (Int, @guaranteed Klass) -> Int
// CHECK-LABEL: sil hidden [dynamic_replacement_for "$s23dynamically_replaceable5KlassCyS2icis"] @$s23dynamically_replaceable5KlassC1xS2i_tcis
-// CHECK: bb0({{.*}} : @trivial $Int, {{.*}} : @trivial $Int, [[SELF:%.*]] : @guaranteed $Klass):
+// CHECK: bb0({{.*}} : $Int, {{.*}} : $Int, [[SELF:%.*]] : @guaranteed $Klass):
// CHECK: [[ORIG:%.*]] = prev_dynamic_function_ref @$s23dynamically_replaceable5KlassC1xS2i_tcis
// CHECK: apply [[ORIG]]({{.*}}, {{.*}}, [[SELF]]) : $@convention(method) (Int, Int, @guaranteed Klass) -> ()
@@ -159,12 +159,12 @@
}
// CHECK-LABEL: sil hidden [dynamic_replacement_for "$s23dynamically_replaceable6StruktV08dynamic_B4_varSivg"] @$s23dynamically_replaceable6StruktV1rSivg
-// CHECK: bb0([[ARG:%.*]] : @trivial $Strukt):
+// CHECK: bb0([[ARG:%.*]] : $Strukt):
// CHECK: [[ORIG:%.*]] = prev_dynamic_function_ref @$s23dynamically_replaceable6StruktV1rSivg
// CHECK: apply [[ORIG]]([[ARG]]) : $@convention(method) (Strukt) -> Int
// CHECK-LABEL: sil hidden [dynamic_replacement_for "$s23dynamically_replaceable6StruktV08dynamic_B4_varSivs"] @$s23dynamically_replaceable6StruktV1rSivs
-// CHECK: bb0({{.*}} : @trivial $Int, [[ARG:%.*]] : @trivial $*Strukt):
+// CHECK: bb0({{.*}} : $Int, [[ARG:%.*]] : $*Strukt):
// CHECK: [[BA:%.*]] = begin_access [modify] [unknown] [[ARG]] : $*Strukt
// CHECK: [[ORIG:%.*]] = prev_dynamic_function_ref @$s23dynamically_replaceable6StruktV1rSivs
// CHECK: apply [[ORIG]]({{.*}}, [[BA]]) : $@convention(method) (Int, @inout Strukt) -> ()
@@ -180,12 +180,12 @@
}
// CHECK-LABEL: sil hidden [dynamic_replacement_for "$s23dynamically_replaceable6StruktVyS2icig"] @$s23dynamically_replaceable6StruktV1xS2i_tcig
-// CHECK: bb0({{.*}} : @trivial $Int, [[SELF:%.*]] : @trivial $Strukt):
+// CHECK: bb0({{.*}} : $Int, [[SELF:%.*]] : $Strukt):
// CHECK: [[ORIG:%.*]] = prev_dynamic_function_ref @$s23dynamically_replaceable6StruktV1xS2i_tcig
// CHECK: apply [[ORIG]]({{.*}}, [[SELF]]) : $@convention(method) (Int, Strukt) -> Int
// CHECK-LABEL: sil hidden [dynamic_replacement_for "$s23dynamically_replaceable6StruktVyS2icis"] @$s23dynamically_replaceable6StruktV1xS2i_tcis
-// CHECK: bb0({{.*}} : @trivial $Int, {{.*}} : @trivial $Int, [[SELF:%.*]] : @trivial $*Strukt):
+// CHECK: bb0({{.*}} : $Int, {{.*}} : $Int, [[SELF:%.*]] : $*Strukt):
// CHECK: [[BA:%.*]] = begin_access [modify] [unknown] [[SELF]] : $*Strukt
// CHECK: [[ORIG:%.*]] = prev_dynamic_function_ref @$s23dynamically_replaceable6StruktV1xS2i_tcis
// CHECK: apply [[ORIG]]({{.*}}, {{.*}}, [[BA]]) : $@convention(method) (Int, Int, @inout Strukt) -> ()
diff --git a/test/SILGen/enum.swift b/test/SILGen/enum.swift
index 6dfc948..eaa3572 100644
--- a/test/SILGen/enum.swift
+++ b/test/SILGen/enum.swift
@@ -115,7 +115,7 @@
// CHECK-NEXT: }
// CHECK-LABEL: sil shared [transparent] @$ss11AddressOnlyO4mereyABs1P_pcABmF : $@convention
-// CHECK: bb0([[ARG0:%.*]] : @trivial $*AddressOnly, [[ARG1:%.*]] : @trivial $*P, [[ARG2:%.*]] : @trivial $@thin AddressOnly.Type):
+// CHECK: bb0([[ARG0:%.*]] : $*AddressOnly, [[ARG1:%.*]] : $*P, [[ARG2:%.*]] : $@thin AddressOnly.Type):
// CHECK: [[RET_DATA:%.*]] = init_enum_data_addr [[ARG0]] : $*AddressOnly, #AddressOnly.mere!enumelt.1
// CHECK-NEXT: copy_addr [take] [[ARG1]] to [initialization] [[RET_DATA]] : $*P
// CHECK-NEXT: inject_enum_addr [[ARG0]] : $*AddressOnly, #AddressOnly.mere!enumelt.1
@@ -189,7 +189,7 @@
// Foo.A(_:)
// CHECK-LABEL: sil shared [transparent] @$ss3FooO1AyABs1P_p_SStcABmF
-// CHECK: bb0([[ARG0:%.*]] : @trivial $*Foo, [[ARG1:%.*]] : @trivial $*P, [[ARG2:%.*]] : @owned $String, [[ARG3:%.*]] : @trivial $@thin Foo.Type):
+// CHECK: bb0([[ARG0:%.*]] : $*Foo, [[ARG1:%.*]] : $*P, [[ARG2:%.*]] : @owned $String, [[ARG3:%.*]] : $@thin Foo.Type):
// CHECK: [[PAYLOAD:%.*]] = init_enum_data_addr [[ARG0]] : $*Foo, #Foo.A!enumelt.1
// CHECK-NEXT: [[LEFT:%.*]] = tuple_element_addr [[PAYLOAD]] : $*(P, String), 0
// CHECK-NEXT: [[RIGHT:%.*]] = tuple_element_addr [[PAYLOAD]] : $*(P, String), 1
diff --git a/test/SILGen/errors.swift b/test/SILGen/errors.swift
index 0cd08ce..1191377 100644
--- a/test/SILGen/errors.swift
+++ b/test/SILGen/errors.swift
@@ -53,7 +53,7 @@
}
// CHECK: sil hidden @$s6errors16all_together_nowyAA3CatCSbF : $@convention(thin) (Bool) -> @owned Cat {
-// CHECK: bb0(%0 : @trivial $Bool):
+// CHECK: bb0(%0 : $Bool):
// CHECK: [[RET_TEMP:%.*]] = alloc_stack $Cat
// Branch on the flag.
@@ -79,7 +79,7 @@
// CHECK-NEXT: store [[T0]] to [init] [[ARG_TEMP]]
// CHECK: [[DR_FN:%.*]] = function_ref @$s6errors11dont_return{{.*}} :
// CHECK-NEXT: try_apply [[DR_FN]]<Cat>([[RET_TEMP]], [[ARG_TEMP]]) : $@convention(thin) <τ_0_0> (@in_guaranteed τ_0_0) -> (@out τ_0_0, @error Error), normal [[DR_NORMAL:bb[0-9]+]], error [[DR_ERROR:bb[0-9]+]]
-// CHECK: [[DR_NORMAL]]({{%.*}} : @trivial $()):
+// CHECK: [[DR_NORMAL]]({{%.*}} : $()):
// CHECK-NEXT: destroy_addr [[ARG_TEMP]]
// CHECK-NEXT: dealloc_stack [[ARG_TEMP]]
// CHECK-NEXT: [[T0:%.*]] = load [take] [[RET_TEMP]] : $*Cat
@@ -316,7 +316,7 @@
// CHECK: [[SELF:%.*]] = load [trivial] %0 : $*DoomedStruct
// CHECK: [[T0:%.*]] = function_ref @$s6errors12DoomedStructV5checkyyKF : $@convention(method) (DoomedStruct) -> @error Error
// CHECK-NEXT: try_apply [[T0]]([[SELF]])
-// CHECK: bb1([[T0:%.*]] : @trivial $()):
+// CHECK: bb1([[T0:%.*]] : $()):
// CHECK: [[T0:%.*]] = tuple ()
// CHECK: return [[T0]] : $()
// CHECK: bb2([[T0:%.*]] : @owned $Error):
@@ -330,7 +330,7 @@
// CHECK: [[BORROWED_SELF:%.*]] = load_borrow %0
// CHECK: [[T0:%.*]] = class_method [[BORROWED_SELF]] : $DoomedClass, #DoomedClass.check!1 : (DoomedClass) -> () throws -> (), $@convention(method) (@guaranteed DoomedClass) -> @error Error
// CHECK-NEXT: try_apply [[T0]]([[BORROWED_SELF]])
-// CHECK: bb1([[T0:%.*]] : @trivial $()):
+// CHECK: bb1([[T0:%.*]] : $()):
// CHECK: [[T0:%.*]] = tuple ()
// CHECK: end_borrow [[BORROWED_SELF]]
// CHECK: return [[T0]] : $()
@@ -369,9 +369,9 @@
return try create(fn)
}
// CHECK-LABEL: sil shared [transparent] [serializable] [reabstraction_thunk] @$sSis5Error_pIgdzo_SisAA_pIegrzo_TR : $@convention(thin) (@noescape @callee_guaranteed () -> (Int, @error Error)) -> (@out Int, @error Error)
-// CHECK: bb0(%0 : @trivial $*Int, %1 : @trivial $@noescape @callee_guaranteed () -> (Int, @error Error)):
+// CHECK: bb0(%0 : $*Int, %1 : $@noescape @callee_guaranteed () -> (Int, @error Error)):
// CHECK: try_apply %1()
-// CHECK: bb1([[T0:%.*]] : @trivial $Int):
+// CHECK: bb1([[T0:%.*]] : $Int):
// CHECK: store [[T0]] to [trivial] %0 : $*Int
// CHECK: [[T0:%.*]] = tuple ()
// CHECK: return [[T0]]
@@ -384,7 +384,7 @@
try! createInt(fn)
}
// CHECK-LABEL: sil hidden @$s6errors12testForceTryyySiyXEF : $@convention(thin) (@noescape @callee_guaranteed () -> Int) -> ()
-// CHECK: bb0([[ARG:%.*]] : @trivial $@noescape @callee_guaranteed () -> Int):
+// CHECK: bb0([[ARG:%.*]] : $@noescape @callee_guaranteed () -> Int):
// CHECK: [[FUNC:%.*]] = function_ref @$s6errors9createIntyySiyXEKF : $@convention(thin) (@noescape @callee_guaranteed () -> Int) -> @error Error
// CHECK: try_apply [[FUNC]]([[ARG]])
// CHECK: return
@@ -442,7 +442,7 @@
// CHECK: debug_value undef : $Error, var, name "$error", argno 1
// CHECK: %1 = function_ref @$s6errors13preferredFoodAA03CatC0OyKF : $@convention(thin) () -> (CatFood, @error Error)
// CHECK: try_apply %1() : $@convention(thin) () -> (CatFood, @error Error), normal bb1, error bb5
-// CHECK: bb1([[VAL:%.*]] : @trivial $CatFood):
+// CHECK: bb1([[VAL:%.*]] : $CatFood):
// CHECK: switch_enum [[VAL]] : $CatFood, case #CatFood.Canned!enumelt: bb2, case #CatFood.Dry!enumelt: bb3
// CHECK: bb5([[ERROR:%.*]] : @owned $Error)
// CHECK: throw [[ERROR]] : $Error
@@ -458,7 +458,7 @@
}
// errors.getHungryCat throws (errors.CatFood) -> errors.Cat
// CHECK-LABEL: sil hidden @$s6errors12getHungryCatyAA0D0CAA0D4FoodOKF : $@convention(thin) (CatFood) -> (@owned Cat, @error Error)
-// CHECK: bb0(%0 : @trivial $CatFood):
+// CHECK: bb0(%0 : $CatFood):
// CHECK: debug_value undef : $Error, var, name "$error", argno 2
// CHECK: switch_enum %0 : $CatFood, case #CatFood.Canned!enumelt: bb1, case #CatFood.Dry!enumelt: bb3
// CHECK: bb1:
@@ -516,7 +516,7 @@
// Complete the call and return.
// CHECK: [[TAKE_FN:%.*]] = function_ref @$s6errors14take_many_catsyyAA3CatCd_tKF : $@convention(thin) (@guaranteed Array<Cat>) -> @error Error
// CHECK-NEXT: try_apply [[TAKE_FN]]([[ARRAY]]) : $@convention(thin) (@guaranteed Array<Cat>) -> @error Error, normal [[NORM_CALL:bb[0-9]+]], error [[ERR_CALL:bb[0-9]+]]
-// CHECK: [[NORM_CALL]]([[T0:%.*]] : @trivial $()):
+// CHECK: [[NORM_CALL]]([[T0:%.*]] : $()):
// CHECK-NEXT: destroy_value [[ARRAY]]
// CHECK-NEXT: [[T0:%.*]] = tuple ()
// CHECK-NEXT: return
@@ -652,7 +652,7 @@
try b[name].support()
}
// CHECK: sil hidden @$s6errors16supportStructure_4nameyAA6BridgeVz_SStKF : $@convention(thin) (@inout Bridge, @guaranteed String) -> @error Error {
-// CHECK: bb0([[ARG1:%.*]] : @trivial $*Bridge, [[ARG2:%.*]] : @guaranteed $String):
+// CHECK: bb0([[ARG1:%.*]] : $*Bridge, [[ARG2:%.*]] : @guaranteed $String):
// CHECK: [[INDEX_COPY_1:%.*]] = copy_value [[ARG2]] : $String
// CHECK-NEXT: [[WRITE:%.*]] = begin_access [modify] [unknown] [[ARG1]] : $*Bridge
// CHECK-NEXT: [[INDEX_COPY_2:%.*]] = copy_value [[INDEX_COPY_1]] : $String
@@ -755,12 +755,12 @@
}
// CHECK-LABEL: sil hidden @$s6errors26testOptionalTryAddressOnly{{.*}}F
-// CHECK: bb0(%0 : @trivial $*T):
+// CHECK: bb0(%0 : $*T):
// CHECK: [[BOX:%.+]] = alloc_stack $Optional<T>
// CHECK-NEXT: [[BOX_DATA:%.+]] = init_enum_data_addr [[BOX]] : $*Optional<T>, #Optional.some!enumelt.1
// CHECK: [[FN:%.+]] = function_ref @$s6errors11dont_return{{.*}}F
// CHECK-NEXT: try_apply [[FN]]<T>([[BOX_DATA]], %0) : $@convention(thin) <τ_0_0> (@in_guaranteed τ_0_0) -> (@out τ_0_0, @error Error), normal [[SUCCESS:[^ ]+]], error [[CLEANUPS:[^ ]+]],
-// CHECK: [[SUCCESS]]({{%.+}} : @trivial $()):
+// CHECK: [[SUCCESS]]({{%.+}} : $()):
// CHECK-NEXT: inject_enum_addr [[BOX]] : $*Optional<T>, #Optional.some!enumelt.1
// CHECK-NEXT: br [[DONE:[^ ]+]],
// CHECK: [[DONE]]:
@@ -779,13 +779,13 @@
}
// CHECK-LABEL: sil hidden @$s6errors29testOptionalTryAddressOnlyVar{{.*}}F
-// CHECK: bb0(%0 : @trivial $*T):
+// CHECK: bb0(%0 : $*T):
// CHECK: [[BOX:%.+]] = alloc_box $<τ_0_0> { var Optional<τ_0_0> } <T>
// CHECK-NEXT: [[PB:%.*]] = project_box [[BOX]]
// CHECK-NEXT: [[BOX_DATA:%.+]] = init_enum_data_addr [[PB]] : $*Optional<T>, #Optional.some!enumelt.1
// CHECK: [[FN:%.+]] = function_ref @$s6errors11dont_return{{.*}}F
// CHECK-NEXT: try_apply [[FN]]<T>([[BOX_DATA]], %0) : $@convention(thin) <τ_0_0> (@in_guaranteed τ_0_0) -> (@out τ_0_0, @error Error), normal [[SUCCESS:[^ ]+]], error [[CLEANUPS:[^ ]+]],
-// CHECK: [[SUCCESS]]({{%.+}} : @trivial $()):
+// CHECK: [[SUCCESS]]({{%.+}} : $()):
// CHECK-NEXT: inject_enum_addr [[PB]] : $*Optional<T>, #Optional.some!enumelt.1
// CHECK-NEXT: br [[DONE:[^ ]+]],
// CHECK: [[DONE]]:
@@ -858,7 +858,7 @@
}
// CHECK-LABEL: sil hidden @$s6errors36testOptionalTryNeverFailsAddressOnly{{.*}}F
-// CHECK: bb0(%0 : @trivial $*T):
+// CHECK: bb0(%0 : $*T):
// CHECK: [[BOX:%.+]] = alloc_stack $Optional<T>
// CHECK-NEXT: [[BOX_DATA:%.+]] = init_enum_data_addr [[BOX]] : $*Optional<T>, #Optional.some!enumelt.1
// CHECK-NEXT: copy_addr %0 to [initialization] [[BOX_DATA]] : $*T
@@ -874,7 +874,7 @@
}
// CHECK-LABEL: sil hidden @$s6errors39testOptionalTryNeverFailsAddressOnlyVar{{.*}}F
-// CHECK: bb0(%0 : @trivial $*T):
+// CHECK: bb0(%0 : $*T):
// CHECK: [[BOX:%.+]] = alloc_box $<τ_0_0> { var Optional<τ_0_0> } <T>
// CHECK-NEXT: [[PB:%.*]] = project_box [[BOX]]
// CHECK-NEXT: [[BOX_DATA:%.+]] = init_enum_data_addr [[PB]] : $*Optional<T>, #Optional.some!enumelt.1
diff --git a/test/SILGen/existential_erasure.swift b/test/SILGen/existential_erasure.swift
index f57fa1c..176ebfb 100644
--- a/test/SILGen/existential_erasure.swift
+++ b/test/SILGen/existential_erasure.swift
@@ -41,13 +41,13 @@
// CHECK-LABEL: sil hidden @$s19existential_erasure19openExistentialToP1yyAA1P_pKF
func openExistentialToP1(_ p: P) throws {
-// CHECK: bb0(%0 : @trivial $*P):
+// CHECK: bb0(%0 : $*P):
// CHECK: [[OPEN:%.*]] = open_existential_addr immutable_access %0 : $*P to $*[[OPEN_TYPE:@opened\(.*\) P]]
// CHECK: [[RESULT:%.*]] = alloc_stack $P
// CHECK: [[FUNC:%.*]] = function_ref @$s19existential_erasure12throwingFuncSbyKF
// CHECK: try_apply [[FUNC]]()
//
-// CHECK: bb1([[SUCCESS:%.*]] : @trivial $Bool):
+// CHECK: bb1([[SUCCESS:%.*]] : $Bool):
// CHECK: [[METHOD:%.*]] = witness_method $[[OPEN_TYPE]], #P.downgrade!1 : {{.*}}, [[OPEN]]
// CHECK: [[RESULT_ADDR:%.*]] = init_existential_addr [[RESULT]] : $*P, $[[OPEN_TYPE]]
// CHECK: apply [[METHOD]]<[[OPEN_TYPE]]>([[RESULT_ADDR]], [[SUCCESS]], [[OPEN]])
@@ -63,7 +63,7 @@
// CHECK-LABEL: sil hidden @$s19existential_erasure19openExistentialToP2yyAA1P_pKF
func openExistentialToP2(_ p: P) throws {
-// CHECK: bb0(%0 : @trivial $*P):
+// CHECK: bb0(%0 : $*P):
// CHECK: [[OPEN:%.*]] = open_existential_addr immutable_access %0 : $*P to $*[[OPEN_TYPE:@opened\(.*\) P]]
// CHECK: [[RESULT:%.*]] = alloc_stack $P
// CHECK: [[METHOD:%.*]] = witness_method $[[OPEN_TYPE]], #P.upgrade!1 : {{.*}}, [[OPEN]]
diff --git a/test/SILGen/existential_metatypes.swift b/test/SILGen/existential_metatypes.swift
index 2e3d5f3..6029999 100644
--- a/test/SILGen/existential_metatypes.swift
+++ b/test/SILGen/existential_metatypes.swift
@@ -20,7 +20,7 @@
}
// CHECK-LABEL: sil hidden @$s21existential_metatypes0A8MetatypeyyAA1P_pF
-// CHECK: bb0([[X:%.*]] : @trivial $*P):
+// CHECK: bb0([[X:%.*]] : $*P):
func existentialMetatype(_ x: P) {
// CHECK: [[TYPE1:%.*]] = existential_metatype $@thick P.Type, [[X]]
let type1 = type(of: x)
diff --git a/test/SILGen/expressions.swift b/test/SILGen/expressions.swift
index 0b2386e..1e8aeb2 100644
--- a/test/SILGen/expressions.swift
+++ b/test/SILGen/expressions.swift
@@ -205,7 +205,7 @@
// CHECK-LABEL: sil hidden @$s11expressions18generic_member_ref{{[_0-9a-zA-Z]*}}F
func generic_member_ref<T>(_ x: Generic<T>) -> Int {
- // CHECK: bb0([[XADDR:%[0-9]+]] : @trivial $*Generic<T>):
+ // CHECK: bb0([[XADDR:%[0-9]+]] : $*Generic<T>):
return x.mono_member
// CHECK: [[MEMBER_ADDR:%[0-9]+]] = struct_element_addr {{.*}}, #Generic.mono_member
// CHECK: load [trivial] [[MEMBER_ADDR]]
@@ -214,7 +214,7 @@
// CHECK-LABEL: sil hidden @$s11expressions24bound_generic_member_ref{{[_0-9a-zA-Z]*}}F
func bound_generic_member_ref(_ x: Generic<UnicodeScalar>) -> Int {
var x = x
- // CHECK: bb0([[XADDR:%[0-9]+]] : @trivial $Generic<Unicode.Scalar>):
+ // CHECK: bb0([[XADDR:%[0-9]+]] : $Generic<Unicode.Scalar>):
return x.mono_member
// CHECK: [[MEMBER_ADDR:%[0-9]+]] = struct_element_addr {{.*}}, #Generic.mono_member
// CHECK: load [trivial] [[MEMBER_ADDR]]
@@ -463,9 +463,9 @@
// CHECK: [[READ:%.*]] = begin_access [read] [unknown] [[PBZ]]
// CHECK: [[ZVAL:%[0-9]+]] = load [trivial] [[READ]]
// CHECK: br [[CONT_B:bb[0-9]+]]([[ZVAL]] : $Int)
- // CHECK: [[CONT_B]]([[B_RES:%[0-9]+]] : @trivial $Int):
+ // CHECK: [[CONT_B]]([[B_RES:%[0-9]+]] : $Int):
// CHECK: br [[CONT_A:bb[0-9]+]]([[B_RES]] : $Int)
- // CHECK: [[CONT_A]]([[A_RES:%[0-9]+]] : @trivial $Int):
+ // CHECK: [[CONT_A]]([[A_RES:%[0-9]+]] : $Int):
// CHECK: return [[A_RES]]
}
@@ -544,7 +544,7 @@
return type(of: a!)
}
// CHECK-LABEL: dontLoadIgnoredLValueForceUnwrap
-// CHECK: bb0(%0 : @trivial $*Optional<NonTrivialStruct>):
+// CHECK: bb0(%0 : $*Optional<NonTrivialStruct>):
// CHECK-NEXT: debug_value_addr %0
// CHECK-NEXT: [[READ:%[0-9]+]] = begin_access [read] [unknown] %0
// CHECK-NEXT: switch_enum_addr [[READ]] : $*Optional<NonTrivialStruct>, case #Optional.some!enumelt.1: bb2, case #Optional.none!enumelt: bb1
@@ -560,7 +560,7 @@
return type(of: a!!)
}
// CHECK-LABEL: dontLoadIgnoredLValueDoubleForceUnwrap
-// CHECK: bb0(%0 : @trivial $*Optional<Optional<NonTrivialStruct>>):
+// CHECK: bb0(%0 : $*Optional<Optional<NonTrivialStruct>>):
// CHECK-NEXT: debug_value_addr %0
// CHECK-NEXT: [[READ:%[0-9]+]] = begin_access [read] [unknown] %0
// CHECK-NEXT: switch_enum_addr [[READ]] : $*Optional<Optional<NonTrivialStruct>>, case #Optional.some!enumelt.1: bb2, case #Optional.none!enumelt: bb1
@@ -581,7 +581,7 @@
return type(of: a.x!)
}
// CHECK-LABEL: loadIgnoredLValueForceUnwrap
-// CHECK: bb0(%0 : @trivial $*NonTrivialStruct):
+// CHECK: bb0(%0 : $*NonTrivialStruct):
// CHECK-NEXT: debug_value_addr %0
// CHECK-NEXT: [[READ:%[0-9]+]] = begin_access [read] [unknown] %0
// CHECK-NEXT: [[BORROW:%[0-9]+]] = load_borrow [[READ]]
@@ -602,7 +602,7 @@
return type(of: a!.x!)
}
// CHECK-LABEL: loadIgnoredLValueThroughForceUnwrap
-// CHECK: bb0(%0 : @trivial $*Optional<NonTrivialStruct>):
+// CHECK: bb0(%0 : $*Optional<NonTrivialStruct>):
// CHECK-NEXT: debug_value_addr %0
// CHECK-NEXT: [[READ:%[0-9]+]] = begin_access [read] [unknown] %0
// CHECK-NEXT: switch_enum_addr [[READ]] : $*Optional<NonTrivialStruct>, case #Optional.some!enumelt.1: bb2, case #Optional.none!enumelt: bb1
@@ -628,7 +628,7 @@
return type(of: s[keyPath: kp])
}
// CHECK-LABEL: evaluateIgnoredKeyPathExpr
-// CHECK: bb0(%0 : @trivial $*NonTrivialStruct, %1 : @guaranteed $WritableKeyPath<NonTrivialStruct, Int>):
+// CHECK: bb0(%0 : $*NonTrivialStruct, %1 : @guaranteed $WritableKeyPath<NonTrivialStruct, Int>):
// CHECK-NEXT: debug_value_addr %0
// CHECK-NEXT: debug_value %1
// CHECK-NEXT: [[KP_TEMP:%[0-9]+]] = copy_value %1
@@ -654,10 +654,10 @@
// <rdar://problem/18851497> Swiftc fails to compile nested destructuring tuple binding
// CHECK-LABEL: sil hidden @$s11expressions21implodeRecursiveTupleyySi_Sit_SitSgF
-// CHECK: bb0(%0 : @trivial $Optional<((Int, Int), Int)>):
+// CHECK: bb0(%0 : $Optional<((Int, Int), Int)>):
func implodeRecursiveTuple(_ expr: ((Int, Int), Int)?) {
- // CHECK: bb2([[WHOLE:%.*]] : @trivial $((Int, Int), Int)):
+ // CHECK: bb2([[WHOLE:%.*]] : $((Int, Int), Int)):
// CHECK-NEXT: ([[X:%[0-9]+]], [[Y:%[0-9]+]]) = destructure_tuple [[WHOLE]]
// CHECK-NEXT: ([[X0:%[0-9]+]], [[X1:%[0-9]+]]) = destructure_tuple [[X]]
// CHECK-NEXT: [[X:%[0-9]+]] = tuple ([[X0]] : $Int, [[X1]] : $Int)
diff --git a/test/SILGen/extensions.swift b/test/SILGen/extensions.swift
index 9e43691..cc3bddf 100644
--- a/test/SILGen/extensions.swift
+++ b/test/SILGen/extensions.swift
@@ -43,7 +43,7 @@
// Extensions of generic types with stored property initializers
// CHECK-LABEL: sil hidden [transparent] @$s10extensions3BoxV1txSgvpfi : $@convention(thin) <T> () -> @out Optional<T>
-// CHECK: bb0(%0 : @trivial $*Optional<T>):
+// CHECK: bb0(%0 : $*Optional<T>):
// CHECK-NEXT: [[METATYPE:%.*]] = metatype $@thin Optional<T>.Type
// CHECK: inject_enum_addr %0 : $*Optional<T>, #Optional.none!enumelt
// CHECK-NEXT: [[RESULT:%.*]] = tuple ()
diff --git a/test/SILGen/foreach.swift b/test/SILGen/foreach.swift
index 789534e..9c77cbd 100644
--- a/test/SILGen/foreach.swift
+++ b/test/SILGen/foreach.swift
@@ -59,7 +59,7 @@
// CHECK: [[LOOP_DEST]]:
// CHECK: switch_enum [[IND_VAR:%.*]] : $Optional<Int>, case #Optional.some!enumelt.1: [[SOME_BB:bb[0-9]+]], case #Optional.none!enumelt: [[NONE_BB:bb[0-9]+]]
//
-// CHECK: [[SOME_BB]]([[VAR:%.*]] : @trivial $Int):
+// CHECK: [[SOME_BB]]([[VAR:%.*]] : $Int):
// CHECK: [[LOOP_END_FUNC:%.*]] = function_ref @loopBodyEnd : $@convention(thin) () -> ()
// CHECK: apply [[LOOP_END_FUNC]]()
// CHECK: br [[LOOP_DEST]]
@@ -120,7 +120,7 @@
// CHECK: [[IND_VAR:%.*]] = load [trivial] [[GET_ELT_STACK]]
// CHECK: switch_enum [[IND_VAR]] : $Optional<Int>, case #Optional.some!enumelt.1: [[SOME_BB:bb[0-9]+]], case #Optional.none!enumelt: [[NONE_BB:bb[0-9]+]]
//
-// CHECK: [[SOME_BB]]([[VAR:%.*]] : @trivial $Int):
+// CHECK: [[SOME_BB]]([[VAR:%.*]] : $Int):
// CHECK: cond_br {{%.*}}, [[LOOP_BREAK_END_BLOCK:bb[0-9]+]], [[CONTINUE_CHECK_BLOCK:bb[0-9]+]]
//
// CHECK: [[LOOP_BREAK_END_BLOCK]]:
@@ -471,7 +471,7 @@
}
// CHECK-LABEL: sil hidden @$s7foreach30genericCollectionContinueBreakyyxSlRzlF : $@convention(thin) <T where T : Collection> (@in_guaranteed T) -> () {
-// CHECK: bb0([[COLLECTION:%.*]] : @trivial $*T):
+// CHECK: bb0([[COLLECTION:%.*]] : $*T):
// CHECK: [[ITERATOR_BOX:%.*]] = alloc_box $<τ_0_0 where τ_0_0 : Collection> { var τ_0_0.Iterator } <T>, var, name "$x$generator"
// CHECK: [[PROJECT_ITERATOR_BOX:%.*]] = project_box [[ITERATOR_BOX]]
// CHECK: [[MAKE_ITERATOR_FUNC:%.*]] = witness_method $T, #Sequence.makeIterator!1
@@ -584,7 +584,7 @@
// CHECK: [[LOOP_DEST]]:
// CHECK: switch_enum [[OPT_VAL:%.*]] : $Optional<Int>, case #Optional.some!enumelt.1: [[SOME_BB:bb[0-9]+]], case #Optional.none!enumelt: [[NONE_BB:bb[0-9]+]]
//
-// CHECK: [[SOME_BB]]([[VAL:%.*]] : @trivial $Int):
+// CHECK: [[SOME_BB]]([[VAL:%.*]] : $Int):
// CHECK: [[LOOP_END_FUNC:%.*]] = function_ref @loopBodyEnd : $@convention(thin) () -> ()
// CHECK: apply [[LOOP_END_FUNC]]
func unusedArgPattern(_ xx: [Int]) {
diff --git a/test/SILGen/foreign_errors.swift b/test/SILGen/foreign_errors.swift
index 89c6a1a..6ea4efb 100644
--- a/test/SILGen/foreign_errors.swift
+++ b/test/SILGen/foreign_errors.swift
@@ -68,7 +68,7 @@
// CHECK: br bb6([[BOOL]] : $ObjCBool)
// CHECK: bb2([[ERR:%.*]] : @owned $Error):
// CHECK: switch_enum %0 : $Optional<AutoreleasingUnsafeMutablePointer<Optional<NSError>>>, case #Optional.some!enumelt.1: bb3, case #Optional.none!enumelt: bb4
-// CHECK: bb3([[UNWRAPPED_OUT:%.+]] : @trivial $AutoreleasingUnsafeMutablePointer<Optional<NSError>>):
+// CHECK: bb3([[UNWRAPPED_OUT:%.+]] : $AutoreleasingUnsafeMutablePointer<Optional<NSError>>):
// CHECK: [[T0:%.*]] = function_ref @$s10Foundation22_convertErrorToNSErrorySo0E0Cs0C0_pF : $@convention(thin) (@guaranteed Error) -> @owned NSError
// CHECK: [[T1:%.*]] = apply [[T0]]([[ERR]])
// CHECK: [[OBJCERR:%.*]] = enum $Optional<NSError>, #Optional.some!enumelt.1, [[T1]] : $NSError
@@ -86,14 +86,14 @@
// CHECK: [[VALUE:%.*]] = struct ${{Bool|UInt8}} ([[BITS]] : $Builtin.Int{{[18]}})
// CHECK: [[BOOL:%.*]] = struct $ObjCBool ([[VALUE]] : ${{Bool|UInt8}})
// CHECK: br bb6([[BOOL]] : $ObjCBool)
-// CHECK: bb6([[BOOL:%.*]] : @trivial $ObjCBool):
+// CHECK: bb6([[BOOL:%.*]] : $ObjCBool):
// CHECK: return [[BOOL]] : $ObjCBool
@objc func badDescription() throws -> String {
throw NSError(domain: "", code: 1, userInfo: [:])
}
// CHECK-LABEL: sil hidden [thunk] @$sSo8NSObjectC14foreign_errorsE14badDescriptionSSyKFTo : $@convention(objc_method) (Optional<AutoreleasingUnsafeMutablePointer<Optional<NSError>>>, NSObject) -> @autoreleased Optional<NSString> {
-// CHECK: bb0([[UNOWNED_ARG0:%.*]] : @trivial $Optional<AutoreleasingUnsafeMutablePointer<Optional<NSError>>>, [[UNOWNED_ARG1:%.*]] : @unowned $NSObject):
+// CHECK: bb0([[UNOWNED_ARG0:%.*]] : $Optional<AutoreleasingUnsafeMutablePointer<Optional<NSError>>>, [[UNOWNED_ARG1:%.*]] : @unowned $NSObject):
// CHECK: [[ARG1:%.*]] = copy_value [[UNOWNED_ARG1]]
// CHECK: [[BORROWED_ARG1:%.*]] = begin_borrow [[ARG1]]
// CHECK: [[T0:%.*]] = function_ref @$sSo8NSObjectC14foreign_errorsE14badDescriptionSSyKF : $@convention(method) (@guaranteed NSObject) -> (@owned String, @error Error)
@@ -111,7 +111,7 @@
// CHECK: [[ERROR_BB]]([[ERR:%.*]] : @owned $Error):
// CHECK: switch_enum [[UNOWNED_ARG0]] : $Optional<AutoreleasingUnsafeMutablePointer<Optional<NSError>>>, case #Optional.some!enumelt.1: [[SOME_BB:bb[0-9][0-9]*]], case #Optional.none!enumelt: [[NONE_BB:bb[0-9][0-9]*]]
//
-// CHECK: [[SOME_BB]]([[UNWRAPPED_OUT:%.+]] : @trivial $AutoreleasingUnsafeMutablePointer<Optional<NSError>>):
+// CHECK: [[SOME_BB]]([[UNWRAPPED_OUT:%.+]] : $AutoreleasingUnsafeMutablePointer<Optional<NSError>>):
// CHECK: [[T0:%.*]] = function_ref @$s10Foundation22_convertErrorToNSErrorySo0E0Cs0C0_pF : $@convention(thin) (@guaranteed Error) -> @owned NSError
// CHECK: [[T1:%.*]] = apply [[T0]]([[ERR]])
// CHECK: [[OBJCERR:%.*]] = enum $Optional<NSError>, #Optional.some!enumelt.1, [[T1]] : $NSError
@@ -136,11 +136,11 @@
// CHECK: return [[T0]] : $Optional<NSString>
// CHECK-LABEL: sil hidden [thunk] @$sSo8NSObjectC14foreign_errorsE7takeIntyySiKFTo : $@convention(objc_method) (Int, Optional<AutoreleasingUnsafeMutablePointer<Optional<NSError>>>, NSObject) -> ObjCBool
-// CHECK: bb0([[I:%[0-9]+]] : @trivial $Int, [[ERROR:%[0-9]+]] : @trivial $Optional<AutoreleasingUnsafeMutablePointer<Optional<NSError>>>, [[SELF:%[0-9]+]] : @unowned $NSObject)
+// CHECK: bb0([[I:%[0-9]+]] : $Int, [[ERROR:%[0-9]+]] : $Optional<AutoreleasingUnsafeMutablePointer<Optional<NSError>>>, [[SELF:%[0-9]+]] : @unowned $NSObject)
@objc func takeInt(_ i: Int) throws { }
// CHECK-LABEL: sil hidden [thunk] @$sSo8NSObjectC14foreign_errorsE10takeDouble_3int7closureySd_S3iXEtKFTo : $@convention(objc_method) (Double, Int, Optional<AutoreleasingUnsafeMutablePointer<Optional<NSError>>>, @convention(block) @noescape (Int) -> Int, NSObject) -> ObjCBool
-// CHECK: bb0([[D:%[0-9]+]] : @trivial $Double, [[INT:%[0-9]+]] : @trivial $Int, [[ERROR:%[0-9]+]] : @trivial $Optional<AutoreleasingUnsafeMutablePointer<Optional<NSError>>>, [[CLOSURE:%[0-9]+]] : @unowned $@convention(block) @noescape (Int) -> Int, [[SELF:%[0-9]+]] : @unowned $NSObject):
+// CHECK: bb0([[D:%[0-9]+]] : $Double, [[INT:%[0-9]+]] : $Int, [[ERROR:%[0-9]+]] : $Optional<AutoreleasingUnsafeMutablePointer<Optional<NSError>>>, [[CLOSURE:%[0-9]+]] : @unowned $@convention(block) @noescape (Int) -> Int, [[SELF:%[0-9]+]] : @unowned $NSObject):
@objc func takeDouble(_ d: Double, int: Int, closure: (Int) -> Int) throws {
throw NSError(domain: "", code: 1, userInfo: [:])
}
diff --git a/test/SILGen/function_conversion.swift b/test/SILGen/function_conversion.swift
index a7ee744..1308e0e 100644
--- a/test/SILGen/function_conversion.swift
+++ b/test/SILGen/function_conversion.swift
@@ -206,7 +206,7 @@
// CHECK-LABEL: sil shared [transparent] [serializable] [reabstraction_thunk] @$s19function_conversion1Q_pSgAA7TrivialVIegnd_AESgAA1P_pIegyr_TR
// CHECK: switch_enum
-// CHECK: bb1([[TRIVIAL:%.*]] : @trivial $Trivial):
+// CHECK: bb1([[TRIVIAL:%.*]] : $Trivial):
// CHECK: init_existential_addr
// CHECK: init_enum_data_addr
// CHECK: copy_addr
@@ -258,7 +258,7 @@
// CHECK-LABEL: sil shared [transparent] [serializable] [reabstraction_thunk] @$s19function_conversion1Q_pXmTSgAA7TrivialVXMtIegyd_AEXMtSgAA1P_pXmTIegyd_TR : $@convention(thin) (Optional<@thin Trivial.Type>, @guaranteed @callee_guaranteed (Optional<@thick Q.Type>) -> @thin Trivial.Type) -> @thick P.Type
// CHECK: switch_enum %0 : $Optional<@thin Trivial.Type>
-// CHECK: bb1([[META:%.*]] : @trivial $@thin Trivial.Type):
+// CHECK: bb1([[META:%.*]] : $@thin Trivial.Type):
// CHECK-NEXT: metatype $@thick Trivial.Type
// CHECK-NEXT: init_existential_metatype {{.*}} : $@thick Trivial.Type, $@thick Q.Type
// CHECK-NEXT: enum $Optional<@thick Q.Type>
@@ -426,7 +426,7 @@
// CHECK-NEXT: } // end sil function '$s19function_conversion25convTupleToOptionalDirectySi_SitSgSicSi_SitSicF'
// CHECK-LABEL: sil shared [transparent] [serializable] [reabstraction_thunk] @$sS3iIegydd_S2i_SitSgIegyd_TR : $@convention(thin) (Int, @guaranteed @callee_guaranteed (Int) -> (Int, Int)) -> Optional<(Int, Int)>
-// CHECK: bb0(%0 : @trivial $Int, %1 : @guaranteed $@callee_guaranteed (Int) -> (Int, Int)):
+// CHECK: bb0(%0 : $Int, %1 : @guaranteed $@callee_guaranteed (Int) -> (Int, Int)):
// CHECK: [[RESULT:%.*]] = apply %1(%0)
// CHECK-NEXT: ([[LEFT:%.*]], [[RIGHT:%.*]]) = destructure_tuple [[RESULT]]
// CHECK-NEXT: [[RESULT:%.*]] = tuple ([[LEFT]] : $Int, [[RIGHT]] : $Int)
@@ -447,7 +447,7 @@
// CHECK-NEXT: } // end sil function '$s19function_conversion27convTupleToOptionalIndirectyx_xtSgxcx_xtxclF'
// CHECK: sil shared [transparent] [serializable] [reabstraction_thunk] @$sxxxIegnrr_xx_xtSgIegnr_lTR : $@convention(thin) <T> (@in_guaranteed T, @guaranteed @callee_guaranteed (@in_guaranteed T) -> (@out T, @out T)) -> @out Optional<(T, T)>
-// CHECK: bb0(%0 : @trivial $*Optional<(T, T)>, %1 : @trivial $*T, %2 : @guaranteed $@callee_guaranteed (@in_guaranteed T) -> (@out T, @out T)):
+// CHECK: bb0(%0 : $*Optional<(T, T)>, %1 : $*T, %2 : @guaranteed $@callee_guaranteed (@in_guaranteed T) -> (@out T, @out T)):
// CHECK: [[OPTIONAL:%.*]] = init_enum_data_addr %0 : $*Optional<(T, T)>, #Optional.some!enumelt.1
// CHECK-NEXT: [[LEFT:%.*]] = tuple_element_addr [[OPTIONAL]] : $*(T, T), 0
// CHECK-NEXT: [[RIGHT:%.*]] = tuple_element_addr [[OPTIONAL]] : $*(T, T), 1
diff --git a/test/SILGen/function_conversion_se0110.swift b/test/SILGen/function_conversion_se0110.swift
index d055043..6c30cbf 100644
--- a/test/SILGen/function_conversion_se0110.swift
+++ b/test/SILGen/function_conversion_se0110.swift
@@ -50,7 +50,7 @@
}
// CHECK-LABEL: sil shared [transparent] [serializable] [reabstraction_thunk] @$syXlyXlIgxx_yXlyXlIeggg_TR : $@convention(thin) (@guaranteed AnyObject, @guaranteed AnyObject, @noescape @callee_guaranteed (@owned AnyObject, @owned AnyObject) -> ()) -> () {
-// CHECK: bb0(%0 : @guaranteed $AnyObject, %1 : @guaranteed $AnyObject, %2 : @trivial $@noescape @callee_guaranteed (@owned AnyObject, @owned AnyObject) -> ()):
+// CHECK: bb0(%0 : @guaranteed $AnyObject, %1 : @guaranteed $AnyObject, %2 : $@noescape @callee_guaranteed (@owned AnyObject, @owned AnyObject) -> ()):
// CHECK-NEXT: [[FIRST:%.*]] = copy_value %0
// CHECK-NEXT: [[SECOND:%.*]] = copy_value %1
// CHECK-NEXT: apply %2([[FIRST]], [[SECOND]]) : $@noescape @callee_guaranteed (@owned AnyObject, @owned AnyObject) -> ()
diff --git a/test/SILGen/functions.swift b/test/SILGen/functions.swift
index ead4e21..ce1bbd0 100644
--- a/test/SILGen/functions.swift
+++ b/test/SILGen/functions.swift
@@ -42,18 +42,18 @@
// -- Instance methods use 'method' cc
// CHECK-LABEL: sil hidden @$s9functions9SomeClassC{{[_0-9a-zA-Z]*}}fC : $@convention(method) (Builtin.Int64, Builtin.Int64, @thick SomeClass.Type) -> @owned SomeClass
- // CHECK: bb0(%0 : @trivial $Builtin.Int64, %1 : @trivial $Builtin.Int64, %2 : @trivial $@thick SomeClass.Type):
+ // CHECK: bb0(%0 : $Builtin.Int64, %1 : $Builtin.Int64, %2 : $@thick SomeClass.Type):
// CHECK-LABEL: sil hidden @$s9functions9SomeClassC{{[_0-9a-zA-Z]*}}fc : $@convention(method) (Builtin.Int64, Builtin.Int64, @owned SomeClass) -> @owned SomeClass
- // CHECK: bb0(%0 : @trivial $Builtin.Int64, %1 : @trivial $Builtin.Int64, %2 : @owned $SomeClass):
+ // CHECK: bb0(%0 : $Builtin.Int64, %1 : $Builtin.Int64, %2 : @owned $SomeClass):
init(x:Int, y:Int) {}
// CHECK-LABEL: sil hidden @$s9functions9SomeClassC6method{{[_0-9a-zA-Z]*}}F : $@convention(method) (Builtin.Int64, @guaranteed SomeClass) -> ()
- // CHECK: bb0(%0 : @trivial $Builtin.Int64, %1 : @guaranteed $SomeClass):
+ // CHECK: bb0(%0 : $Builtin.Int64, %1 : @guaranteed $SomeClass):
func method(_ x: Int) {}
// CHECK-LABEL: sil hidden @$s9functions9SomeClassC13static_method{{[_0-9a-zA-Z]*}}FZ : $@convention(method) (Builtin.Int64, @thick SomeClass.Type) -> ()
- // CHECK: bb0(%0 : @trivial $Builtin.Int64, %1 : @trivial $@thick SomeClass.Type):
+ // CHECK: bb0(%0 : $Builtin.Int64, %1 : $@thick SomeClass.Type):
class func static_method(_ x: Int) {}
var someProperty: Int {
@@ -101,7 +101,7 @@
var i = i
var j = j
var k = k
- // CHECK: bb0(%0 : @trivial $Builtin.Int64, %1 : @trivial $Builtin.Int64, %2 : @trivial $Builtin.Int64):
+ // CHECK: bb0(%0 : $Builtin.Int64, %1 : $Builtin.Int64, %2 : $Builtin.Int64):
// CHECK: [[IBOX:%[0-9]+]] = alloc_box ${ var Builtin.Int64 }
// CHECK: [[IADDR:%.*]] = project_box [[IBOX]]
// CHECK: [[JBOX:%[0-9]+]] = alloc_box ${ var Builtin.Int64 }
diff --git a/test/SILGen/generic_casts.swift b/test/SILGen/generic_casts.swift
index 7790caf..36b286c 100644
--- a/test/SILGen/generic_casts.swift
+++ b/test/SILGen/generic_casts.swift
@@ -12,7 +12,7 @@
func opaque_archetype_to_opaque_archetype
<T:NotClassBound, U>(_ t:T) -> U {
return t as! U
- // CHECK: bb0([[RET:%.*]] : @trivial $*U, {{%.*}}: @trivial $*T):
+ // CHECK: bb0([[RET:%.*]] : $*U, {{%.*}}: $*T):
// CHECK: unconditional_checked_cast_addr T in {{%.*}} : $*T to U in [[RET]] : $*U
}
@@ -28,7 +28,7 @@
// CHECK: [[NO]]:
// CHECK: [[N:%.*]] = integer_literal $Builtin.Int1, 0
// CHECK: br [[CONT]]([[N]] : $Builtin.Int1)
- // CHECK: [[CONT]]([[I1:%.*]] : @trivial $Builtin.Int1):
+ // CHECK: [[CONT]]([[I1:%.*]] : $Builtin.Int1):
// CHECK-NEXT: [[META:%.*]] = metatype $@thin Bool.Type
// CHECK-NEXT: function_ref Swift.Bool.init(_builtinBooleanLiteral: Builtin.Int1)
// CHECK-NEXT: [[BOOL:%.*]] = function_ref @$sSb22_builtinBooleanLiteralSbBi1__tcfC :
@@ -76,7 +76,7 @@
func opaque_archetype_to_addr_only_concrete
<T:NotClassBound> (_ t:T) -> Unloadable {
return t as! Unloadable
- // CHECK: bb0([[RET:%.*]] : @trivial $*Unloadable, {{%.*}}: @trivial $*T):
+ // CHECK: bb0([[RET:%.*]] : $*Unloadable, {{%.*}}: $*T):
// CHECK: unconditional_checked_cast_addr T in {{%.*}} : $*T to Unloadable in [[RET]] : $*Unloadable
}
@@ -122,7 +122,7 @@
func opaque_existential_to_opaque_archetype
<T:NotClassBound>(_ p:NotClassBound) -> T {
return p as! T
- // CHECK: bb0([[RET:%.*]] : @trivial $*T, [[ARG:%.*]] : @trivial $*NotClassBound):
+ // CHECK: bb0([[RET:%.*]] : $*T, [[ARG:%.*]] : $*NotClassBound):
// CHECK: [[TEMP:%.*]] = alloc_stack $NotClassBound
// CHECK-NEXT: copy_addr [[ARG]] to [initialization] [[TEMP]]
// CHECK-NEXT: unconditional_checked_cast_addr NotClassBound in [[TEMP]] : $*NotClassBound to T in [[RET]] : $*T
@@ -173,7 +173,7 @@
// CHECK-LABEL: sil hidden @$s13generic_casts40opaque_existential_to_addr_only_concrete{{[_0-9a-zA-Z]*}}F
func opaque_existential_to_addr_only_concrete(_ p: NotClassBound) -> Unloadable {
return p as! Unloadable
- // CHECK: bb0([[RET:%.*]] : @trivial $*Unloadable, {{%.*}}: @trivial $*NotClassBound):
+ // CHECK: bb0([[RET:%.*]] : $*Unloadable, {{%.*}}: $*NotClassBound):
// CHECK: unconditional_checked_cast_addr NotClassBound in {{%.*}} : $*NotClassBound to Unloadable in [[RET]] : $*Unloadable
}
@@ -222,7 +222,7 @@
// CHECK-LABEL: sil hidden @$s13generic_casts32optional_any_to_opaque_archetype{{[_0-9a-zA-Z]*}}F
func optional_any_to_opaque_archetype<T>(_ x: Any?) -> T {
return x as! T
- // CHECK: bb0([[RET:%.*]] : @trivial $*T, {{%.*}} : @trivial $*Optional<Any>):
+ // CHECK: bb0([[RET:%.*]] : $*T, {{%.*}} : $*Optional<Any>):
// CHECK: unconditional_checked_cast_addr Optional<Any> in {{%.*}} : $*Optional<Any> to T in [[RET]] : $*T
}
diff --git a/test/SILGen/generic_casts_swift4.swift b/test/SILGen/generic_casts_swift4.swift
index 47565b0..2322261 100644
--- a/test/SILGen/generic_casts_swift4.swift
+++ b/test/SILGen/generic_casts_swift4.swift
@@ -8,7 +8,7 @@
// CHECK-LABEL: sil hidden @$s13generic_casts32optional_any_to_opaque_archetype{{[_0-9a-zA-Z]*}}F
func optional_any_to_opaque_archetype<T>(_ x: Any?) -> T {
return x as! T
- // CHECK: bb0([[RET:%.*]] : @trivial $*T, {{%.*}} : @trivial $*Optional<Any>):
+ // CHECK: bb0([[RET:%.*]] : $*T, {{%.*}} : $*Optional<Any>):
// CHECK: unconditional_checked_cast_addr Any in {{%.*}} : $*Any to T in [[RET]] : $*T
}
diff --git a/test/SILGen/generic_closures.swift b/test/SILGen/generic_closures.swift
index b1f6608..7f2f26b 100644
--- a/test/SILGen/generic_closures.swift
+++ b/test/SILGen/generic_closures.swift
@@ -207,7 +207,7 @@
protocol HasClassAssoc { associatedtype Assoc : Class }
// CHECK-LABEL: sil hidden @$s16generic_closures027captures_class_constrained_A0_1fyx_5AssocQzAEctAA08HasClassF0RzlF
-// CHECK: bb0([[ARG1:%.*]] : @trivial $*T, [[ARG2:%.*]] : @guaranteed $@callee_guaranteed (@guaranteed T.Assoc) -> @owned T.Assoc):
+// CHECK: bb0([[ARG1:%.*]] : $*T, [[ARG2:%.*]] : @guaranteed $@callee_guaranteed (@guaranteed T.Assoc) -> @owned T.Assoc):
// CHECK: [[GENERIC_FN:%.*]] = function_ref @$s16generic_closures027captures_class_constrained_A0_1fyx_5AssocQzAEctAA08HasClassF0RzlFA2EcycfU_
// CHECK: [[ARG2_COPY:%.*]] = copy_value [[ARG2]]
// CHECK: [[CONCRETE_FN:%.*]] = partial_apply [callee_guaranteed] [[GENERIC_FN]]<T>([[ARG2_COPY]])
diff --git a/test/SILGen/generic_tuples.swift b/test/SILGen/generic_tuples.swift
index c21c921..863487c 100644
--- a/test/SILGen/generic_tuples.swift
+++ b/test/SILGen/generic_tuples.swift
@@ -4,7 +4,7 @@
func dup<T>(_ x: T) -> (T, T) { return (x,x) }
// CHECK-LABEL: sil hidden @$s14generic_tuples3dup{{[_0-9a-zA-Z]*}}F
-// CHECK: ([[RESULT_0:%.*]] : @trivial $*T, [[RESULT_1:%.*]] : @trivial $*T, [[XVAR:%.*]] : @trivial $*T):
+// CHECK: ([[RESULT_0:%.*]] : $*T, [[RESULT_1:%.*]] : $*T, [[XVAR:%.*]] : $*T):
// CHECK-NEXT: debug_value_addr [[XVAR]] : $*T, let, name "x"
// CHECK-NEXT: copy_addr [[XVAR]] to [initialization] [[RESULT_0]]
// CHECK-NEXT: copy_addr [[XVAR]] to [initialization] [[RESULT_1]]
diff --git a/test/SILGen/guaranteed_normal_args_curry_thunks.swift b/test/SILGen/guaranteed_normal_args_curry_thunks.swift
index e267bae..ec0ed57 100644
--- a/test/SILGen/guaranteed_normal_args_curry_thunks.swift
+++ b/test/SILGen/guaranteed_normal_args_curry_thunks.swift
@@ -192,7 +192,7 @@
// CHECK: } // end sil function '$ss25AddrOnlyStructInitGenericVyAByxGxcfCTc'
// CHECK-LABEL: sil shared [transparent] [serializable] [thunk] @$sxs25AddrOnlyStructInitGenericVyxGIegir_xACIegnr_lTR : $@convention(thin) <T> (@in_guaranteed T, @guaranteed @callee_guaranteed (@in T) -> @out AddrOnlyStructInitGeneric<T>) -> @out AddrOnlyStructInitGeneric<T> {
-// CHECK: bb0([[ARG0:%.*]] : @trivial $*AddrOnlyStructInitGeneric<T>, [[ARG1:%.*]] : @trivial $*T, [[ARG2:%.*]] : @guaranteed $@callee_guaranteed (@in T) -> @out AddrOnlyStructInitGeneric<T>):
+// CHECK: bb0([[ARG0:%.*]] : $*AddrOnlyStructInitGeneric<T>, [[ARG1:%.*]] : $*T, [[ARG2:%.*]] : @guaranteed $@callee_guaranteed (@in T) -> @out AddrOnlyStructInitGeneric<T>):
// CHECK: [[STACK:%.*]] = alloc_stack $T
// CHECK: copy_addr [[ARG1]] to [initialization] [[STACK]] : $*T
// CHECK: apply [[ARG2]]([[ARG0]], [[STACK]]) : $@callee_guaranteed (@in T) -> @out AddrOnlyStructInitGeneric<T>
@@ -256,7 +256,7 @@
// Canonical thunk
//
// CHECK-LABEL: sil shared [transparent] [serializable] [thunk] @$ss5KlassCxIegxr_ABxIeggr_s20ProtocolInitLoadableRzlTR : $@convention(thin) <Self where Self : ProtocolInitLoadable> (@guaranteed Klass, @guaranteed @callee_guaranteed (@owned Klass) -> @out Self) -> @out Self {
-// CHECK: bb0([[ARG0:%.*]] : @trivial $*Self, [[ARG1:%.*]] : @guaranteed $Klass, [[ARG2:%.*]] : @guaranteed $@callee_guaranteed (@owned Klass) -> @out Self):
+// CHECK: bb0([[ARG0:%.*]] : $*Self, [[ARG1:%.*]] : @guaranteed $Klass, [[ARG2:%.*]] : @guaranteed $@callee_guaranteed (@owned Klass) -> @out Self):
// CHECK: [[ARG1_COPY:%.*]] = copy_value [[ARG1]]
// CHECK: apply [[ARG2]]([[ARG0]], [[ARG1_COPY]])
// CHECK: } // end sil function '$ss5KlassCxIegxr_ABxIeggr_s20ProtocolInitLoadableRzlTR'
diff --git a/test/SILGen/guaranteed_self.swift b/test/SILGen/guaranteed_self.swift
index 56f485b..0d13173 100644
--- a/test/SILGen/guaranteed_self.swift
+++ b/test/SILGen/guaranteed_self.swift
@@ -42,7 +42,7 @@
}
// CHECK-LABEL: sil hidden @$s15guaranteed_self1SV3bar{{[_0-9a-zA-Z]*}}F : $@convention(method) (@inout S) -> ()
- // CHECK: bb0([[SELF:%.*]] : @trivial $*S):
+ // CHECK: bb0([[SELF:%.*]] : $*S):
// CHECK-NOT: destroy_addr [[SELF]]
mutating func bar() {
self.bar()
@@ -64,13 +64,13 @@
// Setter for prop1
// CHECK-LABEL: sil hidden [transparent] @$s15guaranteed_self1SV5prop1Sivs : $@convention(method) (Int, @inout S) -> ()
- // CHECK: bb0({{.*}} [[SELF_ADDR:%.*]] : @trivial $*S):
+ // CHECK: bb0({{.*}} [[SELF_ADDR:%.*]] : $*S):
// CHECK-NOT: load [[SELF_ADDR]]
// CHECK-NOT: destroy_addr [[SELF_ADDR]]
// modify for prop1
// CHECK-LABEL: sil hidden [transparent] @$s15guaranteed_self1SV5prop1SivM : $@yield_once @convention(method) (@inout S) -> @yields @inout Int
- // CHECK: bb0([[SELF_ADDR:%.*]] : @trivial $*S):
+ // CHECK: bb0([[SELF_ADDR:%.*]] : $*S):
// CHECK-NOT: load [[SELF_ADDR]]
// CHECK-NOT: destroy_addr [[SELF_ADDR]]
@@ -101,76 +101,76 @@
// Witness thunk for nonmutating 'foo'
// CHECK-LABEL: sil private [transparent] [thunk] @$s15guaranteed_self1SVAA7FooableA2aDP3foo{{[_0-9a-zA-Z]*}}FTW : $@convention(witness_method: Fooable) (Int, @in_guaranteed S) -> () {
-// CHECK: bb0({{.*}} [[SELF_ADDR:%.*]] : @trivial $*S):
+// CHECK: bb0({{.*}} [[SELF_ADDR:%.*]] : $*S):
// CHECK: [[SELF:%.*]] = load_borrow [[SELF_ADDR]]
// CHECK-NOT: destroy_value [[SELF]]
// CHECK-NOT: destroy_addr [[SELF_ADDR]]
// Witness thunk for mutating 'bar'
// CHECK-LABEL: sil private [transparent] [thunk] @$s15guaranteed_self1SVAA7FooableA2aDP3bar{{[_0-9a-zA-Z]*}}FTW : $@convention(witness_method: Fooable) (@inout S) -> () {
-// CHECK: bb0([[SELF_ADDR:%.*]] : @trivial $*S):
+// CHECK: bb0([[SELF_ADDR:%.*]] : $*S):
// CHECK-NOT: load [[SELF_ADDR]]
// CHECK-NOT: destroy_addr [[SELF_ADDR]]
// Witness thunk for 'bas', which is mutating in the protocol, but nonmutating
// in the implementation
// CHECK-LABEL: sil private [transparent] [thunk] @$s15guaranteed_self1SVAA7FooableA2aDP3bas{{[_0-9a-zA-Z]*}}FTW : $@convention(witness_method: Fooable) (@inout S) -> ()
-// CHECK: bb0([[SELF_ADDR:%.*]] : @trivial $*S):
+// CHECK: bb0([[SELF_ADDR:%.*]] : $*S):
// CHECK: [[SELF:%.*]] = load_borrow [[SELF_ADDR]]
// CHECK: end_borrow [[SELF]]
// CHECK-NOT: destroy_value [[SELF]]
// Witness thunk for prop1 getter
// CHECK-LABEL: sil private [transparent] [thunk] @$s15guaranteed_self1SVAA7FooableA2aDP5prop1SivgTW : $@convention(witness_method: Fooable) (@in_guaranteed S) -> Int
-// CHECK: bb0([[SELF_ADDR:%.*]] : @trivial $*S):
+// CHECK: bb0([[SELF_ADDR:%.*]] : $*S):
// CHECK: [[SELF:%.*]] = load_borrow [[SELF_ADDR]]
// CHECK-NOT: destroy_value [[SELF]]
// CHECK-NOT: destroy_value [[SELF]]
// Witness thunk for prop1 setter
// CHECK-LABEL: sil private [transparent] [thunk] @$s15guaranteed_self1SVAA7FooableA2aDP5prop1SivsTW : $@convention(witness_method: Fooable) (Int, @inout S) -> () {
-// CHECK: bb0({{.*}} [[SELF_ADDR:%.*]] : @trivial $*S):
+// CHECK: bb0({{.*}} [[SELF_ADDR:%.*]] : $*S):
// CHECK-NOT: destroy_addr [[SELF_ADDR]]
// Witness thunk for prop1 modify
// CHECK-LABEL: sil private [transparent] [thunk] @$s15guaranteed_self1SVAA7FooableA2aDP5prop1SivMTW : $@yield_once @convention(witness_method: Fooable) (@inout S) -> @yields @inout Int {
-// CHECK: bb0([[SELF_ADDR:%.*]] : @trivial $*S):
+// CHECK: bb0([[SELF_ADDR:%.*]] : $*S):
// CHECK-NOT: destroy_addr [[SELF_ADDR]]
// Witness thunk for prop2 getter
// CHECK-LABEL: sil private [transparent] [thunk] @$s15guaranteed_self1SVAA7FooableA2aDP5prop2SivgTW : $@convention(witness_method: Fooable) (@in_guaranteed S) -> Int
-// CHECK: bb0([[SELF_ADDR:%.*]] : @trivial $*S):
+// CHECK: bb0([[SELF_ADDR:%.*]] : $*S):
// CHECK: [[SELF:%.*]] = load_borrow [[SELF_ADDR]]
// CHECK-NOT: destroy_value [[SELF]]
// CHECK-NOT: destroy_addr [[SELF_ADDR]]
// Witness thunk for prop2 setter
// CHECK-LABEL: sil private [transparent] [thunk] @$s15guaranteed_self1SVAA7FooableA2aDP5prop2SivsTW : $@convention(witness_method: Fooable) (Int, @inout S) -> () {
-// CHECK: bb0({{.*}} [[SELF_ADDR:%.*]] : @trivial $*S):
+// CHECK: bb0({{.*}} [[SELF_ADDR:%.*]] : $*S):
// CHECK-NOT: destroy_addr [[SELF_ADDR]]
// Witness thunk for prop2 modify
// CHECK-LABEL: sil private [transparent] [thunk] @$s15guaranteed_self1SVAA7FooableA2aDP5prop2SivMTW : $@yield_once @convention(witness_method: Fooable) (@inout S) -> @yields @inout Int {
-// CHECK: bb0([[SELF_ADDR:%.*]] : @trivial $*S):
+// CHECK: bb0([[SELF_ADDR:%.*]] : $*S):
// CHECK-NOT: destroy_addr [[SELF_ADDR]]
// Witness thunk for prop3 getter
// CHECK-LABEL: sil private [transparent] [thunk] @$s15guaranteed_self1SVAA7FooableA2aDP5prop3SivgTW : $@convention(witness_method: Fooable) (@in_guaranteed S) -> Int
-// CHECK: bb0([[SELF_ADDR:%.*]] : @trivial $*S):
+// CHECK: bb0([[SELF_ADDR:%.*]] : $*S):
// CHECK: [[SELF:%.*]] = load_borrow [[SELF_ADDR]]
// CHECK-NOT: destroy_value [[SELF]]
// CHECK-NOT: destroy_addr [[SELF_ADDR]]
// Witness thunk for prop3 nonmutating setter
// CHECK-LABEL: sil private [transparent] [thunk] @$s15guaranteed_self1SVAA7FooableA2aDP5prop3SivsTW : $@convention(witness_method: Fooable) (Int, @in_guaranteed S) -> ()
-// CHECK: bb0({{.*}} [[SELF_ADDR:%.*]] : @trivial $*S):
+// CHECK: bb0({{.*}} [[SELF_ADDR:%.*]] : $*S):
// CHECK: [[SELF:%.*]] = load_borrow [[SELF_ADDR]]
// CHECK-NOT: destroy_value [[SELF]]
// CHECK-NOT: destroy_addr [[SELF_ADDR]]
// Witness thunk for prop3 nonmutating modify
// CHECK-LABEL: sil private [transparent] [thunk] @$s15guaranteed_self1SVAA7FooableA2aDP5prop3SivMTW : $@yield_once @convention(witness_method: Fooable) (@in_guaranteed S) -> @yields @inout Int
-// CHECK: bb0([[SELF_ADDR:%.*]] : @trivial $*S):
+// CHECK: bb0([[SELF_ADDR:%.*]] : $*S):
// CHECK: [[SELF:%.*]] = load_borrow [[SELF_ADDR]]
// CHECK-NOT: destroy_value [[SELF]]
// CHECK-NOT: destroy_addr [[SELF_ADDR]]
@@ -185,7 +185,7 @@
init() {}
// CHECK-LABEL: sil hidden @$s15guaranteed_self2AOV3foo{{[_0-9a-zA-Z]*}}F : $@convention(method) <T> (Int, @in_guaranteed AO<T>) -> ()
- // CHECK: bb0({{.*}} [[SELF_ADDR:%.*]] : @trivial $*AO<T>):
+ // CHECK: bb0({{.*}} [[SELF_ADDR:%.*]] : $*AO<T>):
// CHECK: apply {{.*}} [[SELF_ADDR]]
// CHECK-NOT: destroy_addr [[SELF_ADDR]]
// CHECK: }
@@ -196,7 +196,7 @@
self.bar()
}
// CHECK-LABEL: sil hidden @$s15guaranteed_self2AOV3bas{{[_0-9a-zA-Z]*}}F : $@convention(method) <T> (@in_guaranteed AO<T>) -> ()
- // CHECK: bb0([[SELF_ADDR:%.*]] : @trivial $*AO<T>):
+ // CHECK: bb0([[SELF_ADDR:%.*]] : $*AO<T>):
// CHECK-NOT: destroy_addr [[SELF_ADDR]]
func bas() {
self.bas()
@@ -206,21 +206,21 @@
var prop1: Int = 0
var prop2: Int {
// CHECK-LABEL: sil hidden @$s15guaranteed_self2AOV5prop2Sivg : $@convention(method) <T> (@in_guaranteed AO<T>) -> Int {
- // CHECK: bb0([[SELF_ADDR:%.*]] : @trivial $*AO<T>):
+ // CHECK: bb0([[SELF_ADDR:%.*]] : $*AO<T>):
// CHECK-NOT: destroy_addr [[SELF_ADDR]]
get { return 0 }
set { }
}
var prop3: Int {
// CHECK-LABEL: sil hidden @$s15guaranteed_self2AOV5prop3Sivg : $@convention(method) <T> (@in_guaranteed AO<T>) -> Int
- // CHECK: bb0([[SELF_ADDR:%.*]] : @trivial $*AO<T>):
+ // CHECK: bb0([[SELF_ADDR:%.*]] : $*AO<T>):
// CHECK-NOT: destroy_addr [[SELF_ADDR]]
get { return 0 }
// CHECK-LABEL: sil hidden @$s15guaranteed_self2AOV5prop3Sivs : $@convention(method) <T> (Int, @in_guaranteed AO<T>) -> ()
- // CHECK: bb0({{.*}} [[SELF_ADDR:%.*]] : @trivial $*AO<T>):
+ // CHECK: bb0({{.*}} [[SELF_ADDR:%.*]] : $*AO<T>):
// CHECK-NOT: destroy_addr [[SELF_ADDR]]
// CHECK-LABEL: sil hidden [transparent] @$s15guaranteed_self2AOV5prop3SivM : $@yield_once @convention(method) <T> (@in_guaranteed AO<T>) -> @yields @inout Int
- // CHECK: bb0([[SELF_ADDR:%.*]] : @trivial $*AO<T>):
+ // CHECK: bb0([[SELF_ADDR:%.*]] : $*AO<T>):
// CHECK-NOT: destroy_addr [[SELF_ADDR]]
// CHECK: }
nonmutating set { }
@@ -229,13 +229,13 @@
// Witness for nonmutating 'foo'
// CHECK-LABEL: sil private [transparent] [thunk] @$s15guaranteed_self2AOVyxGAA7FooableA2aEP3foo{{[_0-9a-zA-Z]*}}FTW : $@convention(witness_method: Fooable) <τ_0_0> (Int, @in_guaranteed AO<τ_0_0>) -> ()
-// CHECK: bb0({{.*}} [[SELF_ADDR:%.*]] : @trivial $*AO<τ_0_0>):
+// CHECK: bb0({{.*}} [[SELF_ADDR:%.*]] : $*AO<τ_0_0>):
// CHECK: apply {{.*}} [[SELF_ADDR]]
// CHECK-NOT: destroy_addr [[SELF_ADDR]]
// Witness for 'bar', which is mutating in protocol but nonmutating in impl
// CHECK-LABEL: sil private [transparent] [thunk] @$s15guaranteed_self2AOVyxGAA7FooableA2aEP3bar{{[_0-9a-zA-Z]*}}FTW : $@convention(witness_method: Fooable) <τ_0_0> (@inout AO<τ_0_0>) -> ()
-// CHECK: bb0([[SELF_ADDR:%.*]] : @trivial $*AO<τ_0_0>):
+// CHECK: bb0([[SELF_ADDR:%.*]] : $*AO<τ_0_0>):
// -- NB: This copy is not necessary, since we're willing to assume an inout
// parameter is not mutably aliased.
// CHECK: apply {{.*}}([[SELF_ADDR]])
@@ -390,7 +390,7 @@
// CHECK-LABEL: sil shared [transparent] [serialized] [thunk] @$s15guaranteed_self9FakeArrayVAA8SequenceA2aDP17_constrainElement{{[_0-9a-zA-Z]*}}FTW : $@convention(witness_method: Sequence) (@in_guaranteed FakeElement, @in_guaranteed FakeArray) -> () {
-// CHECK: bb0([[ARG0_PTR:%.*]] : @trivial $*FakeElement, [[ARG1_PTR:%.*]] : @trivial $*FakeArray):
+// CHECK: bb0([[ARG0_PTR:%.*]] : $*FakeElement, [[ARG1_PTR:%.*]] : $*FakeArray):
// CHECK: [[ARG0:%.*]] = load [trivial] [[ARG0_PTR]]
// CHECK: function_ref (extension in guaranteed_self):guaranteed_self.SequenceDefaults._constrainElement
// CHECK: [[FUN:%.*]] = function_ref @{{.*}}
diff --git a/test/SILGen/if_expr.swift b/test/SILGen/if_expr.swift
index dfb7230..ff4aa6a 100644
--- a/test/SILGen/if_expr.swift
+++ b/test/SILGen/if_expr.swift
@@ -31,7 +31,7 @@
// CHECK: sil hidden @$s7if_expr19addr_only_ternary_1{{[_0-9a-zA-Z]*}}F
func addr_only_ternary_1(x: Bool) -> AddressOnly {
- // CHECK: bb0([[RET:%.*]] : @trivial $*AddressOnly, {{.*}}):
+ // CHECK: bb0([[RET:%.*]] : $*AddressOnly, {{.*}}):
// CHECK: [[a:%[0-9]+]] = alloc_box ${ var AddressOnly }, var, name "a"
// CHECK: [[PBa:%.*]] = project_box [[a]]
var a : AddressOnly = A()
diff --git a/test/SILGen/if_while_binding.swift b/test/SILGen/if_while_binding.swift
index 65db13d..6f311bf 100644
--- a/test/SILGen/if_while_binding.swift
+++ b/test/SILGen/if_while_binding.swift
@@ -350,13 +350,13 @@
// <rdar://problem/22312114> if case crashes swift - bools not supported in let/else yet
// CHECK-LABEL: sil hidden @$s16if_while_binding12testCaseBoolyySbSgF
func testCaseBool(_ value : Bool?) {
- // CHECK: bb0([[ARG:%.*]] : @trivial $Optional<Bool>):
+ // CHECK: bb0([[ARG:%.*]] : $Optional<Bool>):
// CHECK: switch_enum [[ARG]] : $Optional<Bool>, case #Optional.some!enumelt.1: [[SOME_BB:bb[0-9]+]], case #Optional.none!enumelt: [[NONE_TRAMPOLINE:bb[0-9]+]]
//
// CHECK: [[NONE_TRAMPOLINE]]:
// CHECK: br [[CONT_BB:bb[0-9]+]]
//
- // CHECK: [[SOME_BB]]([[PAYLOAD:%.*]] : @trivial $Bool):
+ // CHECK: [[SOME_BB]]([[PAYLOAD:%.*]] : $Bool):
// CHECK: [[ISTRUE:%[0-9]+]] = struct_extract [[PAYLOAD]] : $Bool, #Bool._value
// CHECK: cond_br [[ISTRUE]], [[TRUE_BB:bb[0-9]+]], [[FALSE_TRAMPOLINE:bb[0-9]+]]
@@ -376,7 +376,7 @@
// CHECK: [[NO_TRAMPOLINE_2]]:
// CHECK: br [[EPILOG_BB:bb[0-9]+]]
- // CHECK: [[SUCC_BB_2]]([[PAYLOAD2:%.*]] : @trivial $Bool):
+ // CHECK: [[SUCC_BB_2]]([[PAYLOAD2:%.*]] : $Bool):
// CHECK: [[ISTRUE:%[0-9]+]] = struct_extract [[PAYLOAD2]] : $Bool, #Bool._value
// CHECK: cond_br [[ISTRUE]], [[TRUE3_BB:bb[0-9]+]], [[FALSE2_BB:bb[0-9]+]]
diff --git a/test/SILGen/import_as_member.swift b/test/SILGen/import_as_member.swift
index 1f2c258..d931849 100644
--- a/test/SILGen/import_as_member.swift
+++ b/test/SILGen/import_as_member.swift
@@ -39,7 +39,7 @@
// CHECK-NEXT: }
// CHECK-LABEL: sil {{.*}}useClass{{.*}}
-// CHECK: bb0([[D:%[0-9]+]] : @trivial $Double, [[OPTS:%[0-9]+]] : @trivial $SomeClass.Options):
+// CHECK: bb0([[D:%[0-9]+]] : $Double, [[OPTS:%[0-9]+]] : $SomeClass.Options):
public func useClass(d: Double, opts: SomeClass.Options) {
// CHECK: [[CTOR:%[0-9]+]] = function_ref @MakeIAMSomeClass : $@convention(c) (Double) -> @autoreleased SomeClass
// CHECK: [[OBJ:%[0-9]+]] = apply [[CTOR]]([[D]])
@@ -55,7 +55,7 @@
extension SomeClass {
// CHECK-LABEL: sil hidden @$sSo12IAMSomeClassC16import_as_memberE6doubleABSd_tcfC
- // CHECK: bb0([[DOUBLE:%[0-9]+]] : @trivial $Double
+ // CHECK: bb0([[DOUBLE:%[0-9]+]] : $Double
// CHECK-NOT: value_metatype
// CHECK: [[FNREF:%[0-9]+]] = function_ref @MakeIAMSomeClass
// CHECK: apply [[FNREF]]([[DOUBLE]])
diff --git a/test/SILGen/indirect_enum.swift b/test/SILGen/indirect_enum.swift
index d0d91ed..2ef47ba 100644
--- a/test/SILGen/indirect_enum.swift
+++ b/test/SILGen/indirect_enum.swift
@@ -9,7 +9,7 @@
// CHECK-LABEL: sil hidden @$s13indirect_enum11TreeA_cases_1l1ryx_AA0C1AOyxGAGtlF : $@convention(thin) <T> (@in_guaranteed T, @guaranteed TreeA<T>, @guaranteed TreeA<T>) -> () {
func TreeA_cases<T>(_ t: T, l: TreeA<T>, r: TreeA<T>) {
-// CHECK: bb0([[ARG1:%.*]] : @trivial $*T, [[ARG2:%.*]] : @guaranteed $TreeA<T>, [[ARG3:%.*]] : @guaranteed $TreeA<T>):
+// CHECK: bb0([[ARG1:%.*]] : $*T, [[ARG2:%.*]] : @guaranteed $TreeA<T>, [[ARG3:%.*]] : @guaranteed $TreeA<T>):
// CHECK: [[METATYPE:%.*]] = metatype $@thin TreeA<T>.Type
// CHECK-NEXT: [[NIL:%.*]] = enum $TreeA<T>, #TreeA.Nil!enumelt
// CHECK-NOT: destroy_value [[NIL]]
@@ -103,7 +103,7 @@
// CHECK-LABEL: sil hidden @$s13indirect_enum13TreeInt_cases_1l1rySi_AA0cD0OAFtF : $@convention(thin) (Int, @guaranteed TreeInt, @guaranteed TreeInt) -> ()
func TreeInt_cases(_ t: Int, l: TreeInt, r: TreeInt) {
-// CHECK: bb0([[ARG1:%.*]] : @trivial $Int, [[ARG2:%.*]] : @guaranteed $TreeInt, [[ARG3:%.*]] : @guaranteed $TreeInt):
+// CHECK: bb0([[ARG1:%.*]] : $Int, [[ARG2:%.*]] : @guaranteed $TreeInt, [[ARG3:%.*]] : @guaranteed $TreeInt):
// CHECK: [[METATYPE:%.*]] = metatype $@thin TreeInt.Type
// CHECK-NEXT: [[NIL:%.*]] = enum $TreeInt, #TreeInt.Nil!enumelt
// CHECK-NOT: destroy_value [[NIL]]
@@ -525,14 +525,14 @@
//
guard case .Direct(let foo) = x else { return }
- // CHECK: [[YES]]({{%.*}} : @trivial $Int):
+ // CHECK: [[YES]]({{%.*}} : $Int):
// CHECK: [[ARG_COPY:%.*]] = copy_value [[ARG]]
// CHECK: switch_enum [[ARG_COPY]] : $TrivialButIndirect, case #TrivialButIndirect.Indirect!enumelt.1: [[YES:bb[0-9]+]], case #TrivialButIndirect.Direct!enumelt.1: [[NO2:bb[0-9]+]]
// CHECK: [[YES]]([[BOX:%.*]] : @owned ${ var Int }):
// CHECK: destroy_value [[BOX]]
- // CHECK: [[NO2]]({{%.*}} : @trivial $Int):
+ // CHECK: [[NO2]]({{%.*}} : $Int):
// CHECK-NOT: destroy_value
// CHECK: [[NO]]([[PAYLOAD:%.*]] : @owned ${ var Int }):
diff --git a/test/SILGen/init_ref_delegation.swift b/test/SILGen/init_ref_delegation.swift
index 241607c..4e15400 100644
--- a/test/SILGen/init_ref_delegation.swift
+++ b/test/SILGen/init_ref_delegation.swift
@@ -6,7 +6,7 @@
struct S {
// CHECK-LABEL: sil hidden @$s19init_ref_delegation1SV{{[_0-9a-zA-Z]*}}fC : $@convention(method) (@thin S.Type) -> S {
init() {
- // CHECK: bb0([[SELF_META:%[0-9]+]] : @trivial $@thin S.Type):
+ // CHECK: bb0([[SELF_META:%[0-9]+]] : $@thin S.Type):
// CHECK-NEXT: [[SELF_BOX:%[0-9]+]] = alloc_box ${ var S }
// CHECK-NEXT: [[MARKED_SELF_BOX:%[0-9]+]] = mark_uninitialized [delegatingself] [[SELF_BOX]]
// CHECK-NEXT: [[PB:%.*]] = project_box [[MARKED_SELF_BOX]]
@@ -33,7 +33,7 @@
// CHECK-LABEL: sil hidden @$s19init_ref_delegation1EO{{[_0-9a-zA-Z]*}}fC : $@convention(method) (@thin E.Type) -> E
init() {
- // CHECK: bb0([[E_META:%[0-9]+]] : @trivial $@thin E.Type):
+ // CHECK: bb0([[E_META:%[0-9]+]] : $@thin E.Type):
// CHECK: [[E_BOX:%[0-9]+]] = alloc_box ${ var E }
// CHECK: [[MARKED_E_BOX:%[0-9]+]] = mark_uninitialized [delegatingself] [[E_BOX]]
// CHECK: [[PB:%.*]] = project_box [[MARKED_E_BOX]]
@@ -57,7 +57,7 @@
struct S2 {
// CHECK-LABEL: sil hidden @$s19init_ref_delegation2S2V{{[_0-9a-zA-Z]*}}fC : $@convention(method) (@thin S2.Type) -> S2
init() {
- // CHECK: bb0([[S2_META:%[0-9]+]] : @trivial $@thin S2.Type):
+ // CHECK: bb0([[S2_META:%[0-9]+]] : $@thin S2.Type):
// CHECK: [[SELF_BOX:%[0-9]+]] = alloc_box ${ var S2 }
// CHECK: [[MARKED_SELF_BOX:%[0-9]+]] = mark_uninitialized [delegatingself] [[SELF_BOX]]
// CHECK: [[PB:%.*]] = project_box [[MARKED_SELF_BOX]]
@@ -87,7 +87,7 @@
// CHECK-LABEL: sil hidden @$s19init_ref_delegation2C1C{{[_0-9a-zA-Z]*}}fC
convenience init(x: X) {
- // CHECK: bb0([[X:%[0-9]+]] : @trivial $X, [[SELF_META:%[0-9]+]] : @trivial $@thick C1.Type):
+ // CHECK: bb0([[X:%[0-9]+]] : $X, [[SELF_META:%[0-9]+]] : $@thick C1.Type):
// CHECK: [[SELF_BOX:%[0-9]+]] = alloc_box ${ var C1 }
// CHECK: [[MARKED_SELF_BOX:%[0-9]+]] = mark_uninitialized [delegatingself] [[SELF_BOX]]
// CHECK: [[PB:%.*]] = project_box [[MARKED_SELF_BOX]]
@@ -109,7 +109,7 @@
// CHECK-LABEL: sil hidden @$s19init_ref_delegation2C2C{{[_0-9a-zA-Z]*}}fC
convenience init(x: X) {
- // CHECK: bb0([[X:%[0-9]+]] : @trivial $X, [[SELF_META:%[0-9]+]] : @trivial $@thick C2.Type):
+ // CHECK: bb0([[X:%[0-9]+]] : $X, [[SELF_META:%[0-9]+]] : $@thick C2.Type):
// CHECK: [[SELF_BOX:%[0-9]+]] = alloc_box ${ var C2 }
// CHECK: [[MARKED_SELF_BOX:%[0-9]+]] = mark_uninitialized [delegatingself] [[SELF_BOX]]
// CHECK: [[PB_SELF:%.*]] = project_box [[MARKED_SELF_BOX]]
diff --git a/test/SILGen/initializers.swift b/test/SILGen/initializers.swift
index b5e97c6..72a241e 100644
--- a/test/SILGen/initializers.swift
+++ b/test/SILGen/initializers.swift
@@ -359,7 +359,7 @@
}
// CHECK-LABEL: sil hidden @$s21failable_initializers17FailableBaseClassC19failAfterDelegationACSgyt_tcfC
- // CHECK: bb0([[SELF_META:%.*]] : @trivial $@thick FailableBaseClass.Type):
+ // CHECK: bb0([[SELF_META:%.*]] : $@thick FailableBaseClass.Type):
// CHECK: [[SELF_BOX:%.*]] = alloc_box ${ var FailableBaseClass }, let, name "self"
// CHECK: [[MARKED_SELF_BOX:%.*]] = mark_uninitialized [delegatingself] [[SELF_BOX]]
// CHECK: [[PB_BOX:%.*]] = project_box [[MARKED_SELF_BOX]]
@@ -378,7 +378,7 @@
// Optional to optional
//
// CHECK-LABEL: sil hidden @$s21failable_initializers17FailableBaseClassC20failDuringDelegationACSgyt_tcfC
- // CHECK: bb0([[SELF_META:%.*]] : @trivial $@thick FailableBaseClass.Type):
+ // CHECK: bb0([[SELF_META:%.*]] : $@thick FailableBaseClass.Type):
// CHECK: [[SELF_BOX:%.*]] = alloc_box ${ var FailableBaseClass }, let, name "self"
// CHECK: [[MARKED_SELF_BOX:%.*]] = mark_uninitialized [delegatingself] [[SELF_BOX]]
// CHECK: [[PB_BOX:%.*]] = project_box [[MARKED_SELF_BOX]]
@@ -411,7 +411,7 @@
// IUO to optional
//
// CHECK-LABEL: sil hidden @$s21failable_initializers17FailableBaseClassC21failDuringDelegation2ACSgyt_tcfC
- // CHECK: bb0([[SELF_META:%.*]] : @trivial $@thick FailableBaseClass.Type):
+ // CHECK: bb0([[SELF_META:%.*]] : $@thick FailableBaseClass.Type):
// CHECK: [[SELF_BOX:%.*]] = alloc_box ${ var FailableBaseClass }, let, name "self"
// CHECK: [[MARKED_SELF_BOX:%.*]] = mark_uninitialized [delegatingself] [[SELF_BOX]]
// CHECK: [[PB_BOX:%.*]] = project_box [[MARKED_SELF_BOX]]
@@ -751,7 +751,7 @@
// CHECK: try_apply [[UNWRAP_FN2]]({{%.*}}) : $@convention(thin) (Int) -> (Int, @error Error), normal [[UNWRAP_NORMAL_BB2:bb[0-9]+]], error [[UNWRAP_ERROR_BB2:bb[0-9]+]]
//
// Then since this example has a
- // CHECK: [[UNWRAP_NORMAL_BB2]]([[INT:%.*]] : @trivial $Int):
+ // CHECK: [[UNWRAP_NORMAL_BB2]]([[INT:%.*]] : $Int):
// CHECK: [[INIT_FN2:%.*]] = function_ref @$s21failable_initializers14ThrowBaseClassC6noFailACSi_tcfc : $@convention(method) (Int, @owned ThrowBaseClass) -> @owned ThrowBaseClass
// CHECK: [[NEW_SELF_CAST:%.*]] = apply [[INIT_FN2]]([[INT]], [[SELF_CAST]]) : $@convention(method) (Int, @owned ThrowBaseClass) -> @owned ThrowBaseClass
// CHECK: [[NEW_SELF:%.*]] = unchecked_ref_cast [[NEW_SELF_CAST]] : $ThrowBaseClass to $ThrowDerivedClass
@@ -868,7 +868,7 @@
}
// CHECK-LABEL: sil hidden @$s21failable_initializers17ThrowDerivedClassC39chainingFailDuringDelegationArgEmission0fghI4CallACSi_SitKcfC
- // CHECK: bb0({{.*}}, [[SELF_META:%.*]] : @trivial $@thick ThrowDerivedClass.Type):
+ // CHECK: bb0({{.*}}, [[SELF_META:%.*]] : $@thick ThrowDerivedClass.Type):
// CHECK: [[SELF_BOX:%.*]] = alloc_box ${ var ThrowDerivedClass }, let, name "self"
// CHECK: [[MARKED_SELF_BOX:%.*]] = mark_uninitialized [delegatingself] [[SELF_BOX]]
// CHECK: [[PB_BOX:%.*]] = project_box [[MARKED_SELF_BOX]]
@@ -902,7 +902,7 @@
}
// CHECK-LABEL: sil hidden @$s21failable_initializers17ThrowDerivedClassC32chainingFailDuringDelegationCall0fg5AfterI0ACSi_SitKcfC
- // CHECK: bb0({{.*}}, [[SELF_META:%.*]] : @trivial $@thick ThrowDerivedClass.Type):
+ // CHECK: bb0({{.*}}, [[SELF_META:%.*]] : $@thick ThrowDerivedClass.Type):
// CHECK: [[SELF_BOX:%.*]] = alloc_box ${ var ThrowDerivedClass }, let, name "self"
// CHECK: [[MARKED_SELF_BOX:%.*]] = mark_uninitialized [delegatingself] [[SELF_BOX]]
// CHECK: [[PB_BOX:%.*]] = project_box [[MARKED_SELF_BOX]]
@@ -1111,7 +1111,7 @@
class InOutInitializer {
// CHECK-LABEL: sil hidden @$s21failable_initializers16InOutInitializerC1xACSiz_tcfC : $@convention(method) (@inout Int, @thick InOutInitializer.Type) -> @owned InOutInitializer {
-// CHECK: bb0(%0 : @trivial $*Int, %1 : @trivial $@thick InOutInitializer.Type):
+// CHECK: bb0(%0 : $*Int, %1 : $@thick InOutInitializer.Type):
init(x: inout Int) {}
}
diff --git a/test/SILGen/lazy_global_access.swift b/test/SILGen/lazy_global_access.swift
index 836f34d..5f09180 100644
--- a/test/SILGen/lazy_global_access.swift
+++ b/test/SILGen/lazy_global_access.swift
@@ -22,3 +22,16 @@
return (globalProp, Fooo.staticProp)
}
+// rdar://46472759
+// We used to crash tying to double-emit the setter.
+struct Bar {
+ mutating func mutate() {}
+}
+func useGlobalBar() -> Bar {
+ globalBar = Bar()
+ globalBar.mutate()
+ return globalBar
+}
+private var globalBar = Bar() {
+ willSet {}
+}
diff --git a/test/SILGen/let_decls.swift b/test/SILGen/let_decls.swift
index 189e198..79f2909 100644
--- a/test/SILGen/let_decls.swift
+++ b/test/SILGen/let_decls.swift
@@ -41,7 +41,7 @@
// The closure just returns its value, which it captured directly.
// CHECK: sil private @$s9let_decls5test2yyFSiyXEfU_ : $@convention(thin) (Int) -> Int
-// CHECK: bb0(%0 : @trivial $Int):
+// CHECK: bb0(%0 : $Int):
// CHECK: return %0 : $Int
// Verify that we can close over let decls of tuple type.
@@ -90,7 +90,7 @@
func produceAddressOnlyStruct<T>(_ x : T) -> AddressOnlyStruct<T> {}
// CHECK-LABEL: sil hidden @{{.*}}testAddressOnlyStructString
-// CHECK: bb0([[FUNC_ARG:%.*]] : @trivial $*T):
+// CHECK: bb0([[FUNC_ARG:%.*]] : $*T):
func testAddressOnlyStructString<T>(_ a : T) -> String {
return produceAddressOnlyStruct(a).str
@@ -107,7 +107,7 @@
// CHECK-LABEL: sil hidden @{{.*}}testAddressOnlyStructElt
func testAddressOnlyStructElt<T>(_ a : T) -> T {
return produceAddressOnlyStruct(a).elt
- // CHECK: bb0([[ARG0:%.*]] : @trivial $*T, [[ARG1:%.*]] : @trivial $*T):
+ // CHECK: bb0([[ARG0:%.*]] : $*T, [[ARG1:%.*]] : $*T):
// CHECK: [[TMPSTRUCT:%[0-9]+]] = alloc_stack $AddressOnlyStruct<T>
// CHECK: [[PRODFN:%[0-9]+]] = function_ref @{{.*}}produceAddressOnlyStruct
// CHECK: apply [[PRODFN]]<T>([[TMPSTRUCT]], [[ARG1]])
@@ -182,7 +182,7 @@
}
// CHECK-LABEL: sil hidden @{{.*}}pass_address_only_rvalue_result
-// CHECK: bb0(%0 : @trivial $*T,
+// CHECK: bb0(%0 : $*T,
// CHECK: [[FN:%[0-9]+]] = function_ref @{{.*}}GenericTestStructV{{.*}}ig
// CHECK: apply [[FN]]<T>(%0,
@@ -199,7 +199,7 @@
// CHECK-LABEL: sil hidden @{{.*}}test_nm_subscript_get
-// CHECK: bb0(%0 : @trivial $Int):
+// CHECK: bb0(%0 : $Int):
// CHECK: [[FR1:%[0-9]+]] = function_ref @{{.*}}produceNMSubscriptableRValue
// CHECK-NEXT: [[RES:%[0-9]+]] = apply [[FR1]]()
// CHECK: [[GETFN:%[0-9]+]] = function_ref @$s9let_decls23NonMutableSubscriptableV{{[_0-9a-zA-Z]*}}ig
@@ -210,7 +210,7 @@
}
// CHECK-LABEL: sil hidden @{{.*}}test_nm_subscript_set
-// CHECK: bb0(%0 : @trivial $Int):
+// CHECK: bb0(%0 : $Int):
// CHECK: [[FR1:%[0-9]+]] = function_ref @{{.*}}produceNMSubscriptableRValue
// CHECK-NEXT: [[RES:%[0-9]+]] = apply [[FR1]]()
// CHECK: [[SETFN:%[0-9]+]] = function_ref @$s9let_decls23NonMutableSubscriptableV{{[_0-9a-zA-Z]*}}is
@@ -253,7 +253,7 @@
// CHECK-LABEL: sil hidden @{{.*}}generic_identity
-// CHECK: bb0(%0 : @trivial $*T, %1 : @trivial $*T):
+// CHECK: bb0(%0 : $*T, %1 : $*T):
// CHECK-NEXT: debug_value_addr %1 : $*T
// CHECK-NEXT: copy_addr %1 to [initialization] %0 : $*T
// CHECK-NOT: destroy_addr %1
@@ -284,7 +284,7 @@
// methods on protocol and archetypes calls.
// CHECK-LABEL: sil hidden @{{.*}}testLetProtocolBases
-// CHECK: bb0(%0 : @trivial $*SimpleProtocol):
+// CHECK: bb0(%0 : $*SimpleProtocol):
func testLetProtocolBases(_ p : SimpleProtocol) {
// CHECK-NEXT: debug_value_addr
// CHECK-NEXT: open_existential_addr
@@ -303,7 +303,7 @@
}
// CHECK-LABEL: sil hidden @{{.*}}testLetArchetypeBases
-// CHECK: bb0(%0 : @trivial $*T):
+// CHECK: bb0(%0 : $*T):
func testLetArchetypeBases<T : SimpleProtocol>(_ p : T) {
// CHECK-NEXT: debug_value_addr
// CHECK-NEXT: witness_method $T
@@ -319,7 +319,7 @@
}
// CHECK-LABEL: sil hidden @{{.*}}testDebugValue
-// CHECK: bb0(%0 : @trivial $Int, %1 : @trivial $*SimpleProtocol):
+// CHECK: bb0(%0 : $Int, %1 : $*SimpleProtocol):
// CHECK-NEXT: debug_value %0 : $Int, let, name "a"
// CHECK-NEXT: debug_value_addr %1 : $*SimpleProtocol, let, name "b"
func testDebugValue(_ a : Int, b : SimpleProtocol) -> Int {
@@ -339,7 +339,7 @@
// CHECK-LABEL: sil hidden @{{.*}}testAddressOnlyTupleArgument
func testAddressOnlyTupleArgument(_ bounds: (start: SimpleProtocol, pastEnd: Int)) {
-// CHECK: bb0(%0 : @trivial $*SimpleProtocol, %1 : @trivial $Int):
+// CHECK: bb0(%0 : $*SimpleProtocol, %1 : $Int):
// CHECK-NEXT: %2 = alloc_stack $(start: SimpleProtocol, pastEnd: Int), let, name "bounds", argno 1
// CHECK-NEXT: %3 = tuple_element_addr %2 : $*(start: SimpleProtocol, pastEnd: Int), 0
// CHECK-NEXT: copy_addr %0 to [initialization] %3 : $*SimpleProtocol
@@ -367,7 +367,7 @@
}
// CHECK-LABEL: sil hidden @{{.*}}call_auto_closure
-// CHECK: bb0([[CLOSURE:%.*]] : @trivial $@noescape @callee_guaranteed () -> Bool):
+// CHECK: bb0([[CLOSURE:%.*]] : $@noescape @callee_guaranteed () -> Bool):
// CHECK: apply [[CLOSURE]]() : $@noescape @callee_guaranteed () -> Bool
// CHECK: } // end sil function '{{.*}}call_auto_closure{{.*}}'
func call_auto_closure(x: @autoclosure () -> Bool) -> Bool {
@@ -434,7 +434,7 @@
return a
}
// CHECK-LABEL: sil hidden @{{.*}}GenericStructV4getA{{.*}} : $@convention(method) <T> (@in_guaranteed GenericStruct<T>) -> @out T
- // CHECK: bb0(%0 : @trivial $*T, %1 : @trivial $*GenericStruct<T>):
+ // CHECK: bb0(%0 : $*T, %1 : $*GenericStruct<T>):
// CHECK-NEXT: debug_value_addr %1 : $*GenericStruct<T>, let, name "self"
// CHECK-NEXT: %3 = struct_element_addr %1 : $*GenericStruct<T>, #GenericStruct.a
// CHECK-NEXT: copy_addr %3 to [initialization] %0 : $*T
@@ -446,7 +446,7 @@
}
// CHECK-LABEL: sil hidden @{{.*}}GenericStructV4getB{{.*}} : $@convention(method) <T> (@in_guaranteed GenericStruct<T>) -> Int
- // CHECK: bb0([[SELF_ADDR:%.*]] : @trivial $*GenericStruct<T>):
+ // CHECK: bb0([[SELF_ADDR:%.*]] : $*GenericStruct<T>):
// CHECK-NEXT: debug_value_addr [[SELF_ADDR]] : $*GenericStruct<T>, let, name "self"
// CHECK-NEXT: [[PROJ_ADDR:%.*]] = struct_element_addr [[SELF_ADDR]] : $*GenericStruct<T>, #GenericStruct.b
// CHECK-NEXT: [[PROJ_VAL:%.*]] = load [trivial] [[PROJ_ADDR]] : $*Int
@@ -461,7 +461,7 @@
}
// CHECK-LABEL: sil hidden @{{.*}}testLetPropertyAccessOnLValueBase
-// CHECK: bb0(%0 : @trivial $LetPropertyStruct):
+// CHECK: bb0(%0 : $LetPropertyStruct):
// CHECK: [[ABOX:%[0-9]+]] = alloc_box ${ var LetPropertyStruct }
// CHECK: [[A:%[0-9]+]] = project_box [[ABOX]]
// CHECK: store %0 to [trivial] [[A]] : $*LetPropertyStruct
@@ -479,7 +479,7 @@
var addressOnlyGetOnlyGlobalProperty : SimpleProtocol { get {} }
// CHECK-LABEL: sil hidden @$s9let_decls018testAddressOnlyGetE14GlobalPropertyAA14SimpleProtocol_pyF
-// CHECK: bb0(%0 : @trivial $*SimpleProtocol):
+// CHECK: bb0(%0 : $*SimpleProtocol):
// CHECK-NEXT: // function_ref
// CHECK-NEXT: %1 = function_ref @$s9let_decls014addressOnlyGetD14GlobalPropertyAA14SimpleProtocol_pvg
// CHECK-NEXT: %2 = apply %1(%0) : $@convention(thin) () -> @out SimpleProtocol
diff --git a/test/SILGen/lifetime.swift b/test/SILGen/lifetime.swift
index 15ea1e6..0d9dca2 100644
--- a/test/SILGen/lifetime.swift
+++ b/test/SILGen/lifetime.swift
@@ -201,7 +201,7 @@
// CHECK-LABEL: sil hidden @$s8lifetime16reftype_reassign{{[_0-9a-zA-Z]*}}F
func reftype_reassign(_ a: inout Ref, b: Ref) {
var b = b
- // CHECK: bb0([[AADDR:%[0-9]+]] : @trivial $*Ref, [[B1:%[0-9]+]] : @guaranteed $Ref):
+ // CHECK: bb0([[AADDR:%[0-9]+]] : $*Ref, [[B1:%[0-9]+]] : @guaranteed $Ref):
// CHECK: [[BADDR:%[0-9]+]] = alloc_box ${ var Ref }
// CHECK: [[PBB:%.*]] = project_box [[BADDR]]
a = b
@@ -229,7 +229,7 @@
// -- loadable value constructor:
// CHECK-LABEL: sil hidden @$s8lifetime5AlephV{{[_0-9a-zA-Z]*}}fC : $@convention(method) (@owned Ref, Val, @thin Aleph.Type) -> @owned Aleph
- // CHECK: bb0([[A:%.*]] : @owned $Ref, [[B:%.*]] : @trivial $Val, {{%.*}} : @trivial $@thin Aleph.Type):
+ // CHECK: bb0([[A:%.*]] : @owned $Ref, [[B:%.*]] : $Val, {{%.*}} : $@thin Aleph.Type):
// CHECK-NEXT: [[RET:%.*]] = struct $Aleph ([[A]] : {{.*}}, [[B]] : {{.*}})
// CHECK-NEXT: return [[RET]]
}
@@ -251,7 +251,7 @@
// -- address-only value constructor:
// CHECK-LABEL: sil hidden @$s8lifetime6DalethV{{[_0-9a-zA-Z]*}}fC : $@convention(method) (@owned Aleph, @owned Beth, @in Unloadable, @thin Daleth.Type) -> @out Daleth {
- // CHECK: bb0([[THIS:%.*]] : @trivial $*Daleth, [[A:%.*]] : @owned $Aleph, [[B:%.*]] : @owned $Beth, [[C:%.*]] : @trivial $*Unloadable, {{%.*}} : @trivial $@thin Daleth.Type):
+ // CHECK: bb0([[THIS:%.*]] : $*Daleth, [[A:%.*]] : @owned $Aleph, [[B:%.*]] : @owned $Beth, [[C:%.*]] : $*Unloadable, {{%.*}} : $@thin Daleth.Type):
// CHECK-NEXT: [[A_ADDR:%.*]] = struct_element_addr [[THIS]] : $*Daleth, #Daleth.a
// CHECK-NEXT: store [[A]] to [init] [[A_ADDR]]
// CHECK-NEXT: [[B_ADDR:%.*]] = struct_element_addr [[THIS]] : $*Daleth, #Daleth.b
@@ -266,7 +266,7 @@
// -- default allocator:
// CHECK-LABEL: sil hidden @$s8lifetime2HeC{{[_0-9a-zA-Z]*}}fC : $@convention(method) (@thick He.Type) -> @owned He {
- // CHECK: bb0({{%.*}} : @trivial $@thick He.Type):
+ // CHECK: bb0({{%.*}} : $@thick He.Type):
// CHECK-NEXT: [[THIS:%.*]] = alloc_ref $He
// CHECK-NEXT: // function_ref lifetime.He.init
// CHECK-NEXT: [[INIT:%.*]] = function_ref @$s8lifetime2HeC{{[_0-9a-zA-Z]*}}fc : $@convention(method) (@owned He) -> @owned He
@@ -293,7 +293,7 @@
// -- loadable value initializer with tuple destructuring:
// CHECK-LABEL: sil hidden @$s8lifetime3WawV{{[_0-9a-zA-Z]*}}fC : $@convention(method) (@owned Ref, Val, Val, @thin Waw.Type) -> @owned Waw
- // CHECK: bb0([[A0:%.*]] : @owned $Ref, [[A1:%.*]] : @trivial $Val, [[B:%.*]] : @trivial $Val, {{%.*}} : @trivial $@thin Waw.Type):
+ // CHECK: bb0([[A0:%.*]] : @owned $Ref, [[A1:%.*]] : $Val, [[B:%.*]] : $Val, {{%.*}} : $@thin Waw.Type):
// CHECK-NEXT: [[A:%.*]] = tuple ([[A0]] : {{.*}}, [[A1]] : {{.*}})
// CHECK-NEXT: [[RET:%.*]] = struct $Waw ([[A]] : {{.*}}, [[B]] : {{.*}})
// CHECK-NEXT: return [[RET]]
@@ -305,7 +305,7 @@
// -- address-only value initializer with tuple destructuring:
// CHECK-LABEL: sil hidden @$s8lifetime5ZayinV{{[_0-9a-zA-Z]*}}fC : $@convention(method) (@in Unloadable, Val, @in Unloadable, @thin Zayin.Type) -> @out Zayin
- // CHECK: bb0([[THIS:%.*]] : @trivial $*Zayin, [[A0:%.*]] : @trivial $*Unloadable, [[A1:%.*]] : @trivial $Val, [[B:%.*]] : @trivial $*Unloadable, {{%.*}} : @trivial $@thin Zayin.Type):
+ // CHECK: bb0([[THIS:%.*]] : $*Zayin, [[A0:%.*]] : $*Unloadable, [[A1:%.*]] : $Val, [[B:%.*]] : $*Unloadable, {{%.*}} : $@thin Zayin.Type):
// CHECK-NEXT: [[THIS_A_ADDR:%.*]] = struct_element_addr [[THIS]] : $*Zayin, #Zayin.a
// CHECK-NEXT: [[THIS_A0_ADDR:%.*]] = tuple_element_addr [[THIS_A_ADDR]] : {{.*}}, 0
// CHECK-NEXT: [[THIS_A1_ADDR:%.*]] = tuple_element_addr [[THIS_A_ADDR]] : {{.*}}, 1
@@ -386,7 +386,7 @@
init() {
// -- allocating entry point
// CHECK-LABEL: sil hidden @$s8lifetime3FooC{{[_0-9a-zA-Z]*}}fC :
- // CHECK: bb0([[METATYPE:%[0-9]+]] : @trivial $@thick Foo<T>.Type):
+ // CHECK: bb0([[METATYPE:%[0-9]+]] : $@thick Foo<T>.Type):
// CHECK: [[THIS:%[0-9]+]] = alloc_ref $Foo<T>
// CHECK: [[INIT_METHOD:%[0-9]+]] = function_ref @$s8lifetime3FooC{{[_0-9a-zA-Z]*}}fc
// CHECK: [[INIT_THIS:%[0-9]+]] = apply [[INIT_METHOD]]<{{.*}}>([[THIS]])
@@ -448,7 +448,7 @@
// -- allocating entry point
// CHECK-LABEL: sil hidden @$s8lifetime3FooC{{[_0-9a-zA-Z]*}}fC :
- // CHECK: bb0([[CHI:%[0-9]+]] : @trivial $Int, [[METATYPE:%[0-9]+]] : @trivial $@thick Foo<T>.Type):
+ // CHECK: bb0([[CHI:%[0-9]+]] : $Int, [[METATYPE:%[0-9]+]] : $@thick Foo<T>.Type):
// CHECK: [[THIS:%[0-9]+]] = alloc_ref $Foo<T>
// CHECK: [[INIT_METHOD:%[0-9]+]] = function_ref @$s8lifetime3FooC{{[_0-9a-zA-Z]*}}fc
// CHECK: [[INIT_THIS:%[0-9]+]] = apply [[INIT_METHOD]]<{{.*}}>([[CHI]], [[THIS]])
@@ -456,7 +456,7 @@
// -- initializing entry point
// CHECK-LABEL: sil hidden @$s8lifetime3FooC3chiACyxGSi_tcfc : $@convention(method) <T> (Int, @owned Foo<T>) -> @owned Foo<T> {
- // CHECK: bb0([[CHI:%[0-9]+]] : @trivial $Int, [[THISIN:%[0-9]+]] : @owned $Foo<T>):
+ // CHECK: bb0([[CHI:%[0-9]+]] : $Int, [[THISIN:%[0-9]+]] : @owned $Foo<T>):
// CHECK: [[THIS:%[0-9]+]] = mark_uninitialized [rootself] [[THISIN]]
// -- First we initialize #Foo.y.
@@ -641,7 +641,7 @@
// Loadable struct initializer
// CHECK-LABEL: sil hidden @$s8lifetime3BarV{{[_0-9a-zA-Z]*}}fC
init() {
- // CHECK: bb0([[METATYPE:%[0-9]+]] : @trivial $@thin Bar.Type):
+ // CHECK: bb0([[METATYPE:%[0-9]+]] : $@thin Bar.Type):
// CHECK: [[SELF_BOX:%[0-9]+]] = alloc_box ${ var Bar }
// CHECK: [[MARKED_SELF_BOX:%[0-9]+]] = mark_uninitialized [rootself] [[SELF_BOX]]
// CHECK: [[PB_BOX:%.*]] = project_box [[MARKED_SELF_BOX]]
@@ -669,7 +669,7 @@
// Address-only struct initializer
// CHECK-LABEL: sil hidden @$s8lifetime3BasV{{[_0-9a-zA-Z]*}}fC
init(yy:T) {
- // CHECK: bb0([[THISADDRPTR:%[0-9]+]] : @trivial $*Bas<T>, [[YYADDR:%[0-9]+]] : @trivial $*T, [[META:%[0-9]+]] : @trivial $@thin Bas<T>.Type):
+ // CHECK: bb0([[THISADDRPTR:%[0-9]+]] : $*Bas<T>, [[YYADDR:%[0-9]+]] : $*T, [[META:%[0-9]+]] : $@thin Bas<T>.Type):
// CHECK: [[SELF_BOX:%[0-9]+]] = alloc_box $<τ_0_0> { var Bas<τ_0_0> } <T>
// CHECK: [[MARKED_SELF_BOX:%[0-9]+]] = mark_uninitialized [rootself] [[SELF_BOX]]
// CHECK: [[PB_BOX:%.*]] = project_box [[MARKED_SELF_BOX]]
@@ -698,7 +698,7 @@
class B { init(y:Int) {} }
class D : B {
// CHECK-LABEL: sil hidden @$s8lifetime1DC1x1yACSi_Sitcfc
- // CHECK: bb0([[X:%[0-9]+]] : @trivial $Int, [[Y:%[0-9]+]] : @trivial $Int, [[SELF:%[0-9]+]] : @owned $D):
+ // CHECK: bb0([[X:%[0-9]+]] : $Int, [[Y:%[0-9]+]] : $Int, [[SELF:%[0-9]+]] : @owned $D):
init(x: Int, y: Int) {
var x = x
var y = y
diff --git a/test/SILGen/local_recursion.swift b/test/SILGen/local_recursion.swift
index 29e65e8..822bbd4 100644
--- a/test/SILGen/local_recursion.swift
+++ b/test/SILGen/local_recursion.swift
@@ -2,7 +2,7 @@
// RUN: %target-swift-emit-silgen -enable-astscope-lookup -parse-as-library -enable-sil-ownership %s | %FileCheck %s
// CHECK-LABEL: sil hidden @$s15local_recursionAA_1yySi_SitF : $@convention(thin) (Int, Int) -> () {
-// CHECK: bb0([[X:%0]] : @trivial $Int, [[Y:%1]] : @trivial $Int):
+// CHECK: bb0([[X:%0]] : $Int, [[Y:%1]] : $Int):
func local_recursion(_ x: Int, y: Int) {
func self_recursive(_ a: Int) {
self_recursive(x + a)
@@ -86,25 +86,25 @@
}
// CHECK: sil private [[SELF_RECURSIVE]]
-// CHECK: bb0([[A:%0]] : @trivial $Int, [[X:%1]] : @trivial $Int):
+// CHECK: bb0([[A:%0]] : $Int, [[X:%1]] : $Int):
// CHECK: [[SELF_REF:%.*]] = function_ref [[SELF_RECURSIVE]]
// CHECK: apply [[SELF_REF]]({{.*}}, [[X]])
// CHECK: sil private [[MUTUALLY_RECURSIVE_1]]
-// CHECK: bb0([[A:%0]] : @trivial $Int, [[Y:%1]] : @trivial $Int, [[X:%2]] : @trivial $Int):
+// CHECK: bb0([[A:%0]] : $Int, [[Y:%1]] : $Int, [[X:%2]] : $Int):
// CHECK: [[MUTUALLY_RECURSIVE_REF:%.*]] = function_ref [[MUTUALLY_RECURSIVE_2:@\$s15local_recursionAA_1yySi_SitF20mutually_recursive_2L_yySiF]]
// CHECK: apply [[MUTUALLY_RECURSIVE_REF]]({{.*}}, [[X]], [[Y]])
// CHECK: sil private [[MUTUALLY_RECURSIVE_2]]
-// CHECK: bb0([[B:%0]] : @trivial $Int, [[X:%1]] : @trivial $Int, [[Y:%2]] : @trivial $Int):
+// CHECK: bb0([[B:%0]] : $Int, [[X:%1]] : $Int, [[Y:%2]] : $Int):
// CHECK: [[MUTUALLY_RECURSIVE_REF:%.*]] = function_ref [[MUTUALLY_RECURSIVE_1]]
// CHECK: apply [[MUTUALLY_RECURSIVE_REF]]({{.*}}, [[Y]], [[X]])
// CHECK: sil private [[TRANS_CAPTURE_1:@\$s15local_recursionAA_1yySi_SitF20transitive_capture_1L_yS2iF]]
-// CHECK: bb0([[A:%0]] : @trivial $Int, [[X:%1]] : @trivial $Int):
+// CHECK: bb0([[A:%0]] : $Int, [[X:%1]] : $Int):
// CHECK: sil private [[TRANS_CAPTURE]]
-// CHECK: bb0([[B:%0]] : @trivial $Int, [[X:%1]] : @trivial $Int, [[Y:%2]] : @trivial $Int):
+// CHECK: bb0([[B:%0]] : $Int, [[X:%1]] : $Int, [[Y:%2]] : $Int):
// CHECK: [[TRANS_CAPTURE_1_REF:%.*]] = function_ref [[TRANS_CAPTURE_1]]
// CHECK: apply [[TRANS_CAPTURE_1_REF]]({{.*}}, [[X]])
diff --git a/test/SILGen/metatype_object_conversion.swift b/test/SILGen/metatype_object_conversion.swift
index b4a232b..acfc327 100644
--- a/test/SILGen/metatype_object_conversion.swift
+++ b/test/SILGen/metatype_object_conversion.swift
@@ -10,7 +10,7 @@
// CHECK-LABEL: sil hidden @$s26metatype_object_conversion0A8ToObjectyyXlAA1CCmF
func metatypeToObject(_ x: C.Type) -> AnyObject {
- // CHECK: bb0([[THICK:%.*]] : @trivial $@thick C.Type):
+ // CHECK: bb0([[THICK:%.*]] : $@thick C.Type):
// CHECK: [[OBJC:%.*]] = thick_to_objc_metatype [[THICK]]
// CHECK: [[OBJECT:%.*]] = objc_metatype_to_object [[OBJC]]
// CHECK: return [[OBJECT]]
@@ -19,7 +19,7 @@
// CHECK-LABEL: sil hidden @$s26metatype_object_conversion27existentialMetatypeToObjectyyXlAA2CP_pXpF
func existentialMetatypeToObject(_ x: CP.Type) -> AnyObject {
- // CHECK: bb0([[THICK:%.*]] : @trivial $@thick CP.Type):
+ // CHECK: bb0([[THICK:%.*]] : $@thick CP.Type):
// CHECK: [[OBJC:%.*]] = thick_to_objc_metatype [[THICK]]
// CHECK: [[OBJECT:%.*]] = objc_existential_metatype_to_object [[OBJC]]
// CHECK: return [[OBJECT]]
diff --git a/test/SILGen/metatypes.swift b/test/SILGen/metatypes.swift
index d4ea64f..912dc64 100644
--- a/test/SILGen/metatypes.swift
+++ b/test/SILGen/metatypes.swift
@@ -53,7 +53,7 @@
}
// CHECK-LABEL: sil hidden @$s9metatypes010archetype_A0{{[_0-9a-zA-Z]*}}F
-// CHECK: bb0(%0 : @trivial $*T):
+// CHECK: bb0(%0 : $*T):
func archetype_metatypes<T>(t: T) -> (T.Type, T.Type) {
// CHECK: [[STATIC_T:%[0-9]+]] = metatype $@thick T.Type
// CHECK: [[DYN_T:%[0-9]+]] = value_metatype $@thick T.Type, %0
diff --git a/test/SILGen/modify.swift b/test/SILGen/modify.swift
index 1b975ae..df939bf 100644
--- a/test/SILGen/modify.swift
+++ b/test/SILGen/modify.swift
@@ -59,7 +59,7 @@
extension Derived : Abstractable {}
// CHECK-LABEL: sil private [transparent] [thunk] @$s6modify7DerivedCAA12AbstractableA2aDP14storedFunction6ResultQzycvMTW
-// CHECK: bb0(%0 : @trivial $*Derived):
+// CHECK: bb0(%0 : $*Derived):
// CHECK-NEXT: [[T0:%.*]] = load_borrow %0 : $*Derived
// CHECK-NEXT: [[SELF:%.*]] = upcast [[T0]] : $Derived to $Base
// CHECK-NEXT: [[FN:%.*]] = class_method [[SELF]] : $Base, #Base.storedFunction!modify.1
@@ -84,7 +84,7 @@
// CHECK-NEXT: return
// CHECK-LABEL: sil private [transparent] [thunk] @$s6modify7DerivedCAA12AbstractableA2aDP19finalStoredFunction6ResultQzycvMTW
-// CHECK: bb0(%0 : @trivial $*Derived):
+// CHECK: bb0(%0 : $*Derived):
// CHECK-NEXT: [[T0:%.*]] = load_borrow %0 : $*Derived
// CHECK-NEXT: [[SELF:%.*]] = upcast [[T0]] : $Derived to $Base
// CHECK-NEXT: // function_ref
@@ -110,7 +110,7 @@
// CHECK-NEXT: return
// CHECK-LABEL: sil private [transparent] [thunk] @$s6modify7DerivedCAA12AbstractableA2aDP14staticFunction6ResultQzycvMZTW
-// CHECK: bb0(%0 : @trivial $@thick Derived.Type):
+// CHECK: bb0(%0 : $@thick Derived.Type):
// CHECK-NEXT: [[SELF:%.*]] = upcast %0 : $@thick Derived.Type to $@thick Base.Type
// CHECK-NEXT: // function_ref
// CHECK-NEXT: [[FN:%.*]] = function_ref @$s6modify4BaseC14staticFunctionSiycvMZ
@@ -283,7 +283,7 @@
}
// CHECK-LABEL: sil hidden [transparent] @$s6modify4BillV5totalSivM : $@yield_once @convention(method) (@inout Bill) -> @yields @inout Int {
-// CHECK: bb0([[SELF:%.*]] : @trivial $*Bill):
+// CHECK: bb0([[SELF:%.*]] : $*Bill):
// CHECK: [[ACCESS:%.*]] = begin_access [modify] [unknown] [[SELF]]
// CHECK: [[T0:%.*]] = struct_element_addr [[ACCESS]] : $*Bill, #Bill.total
// CHECK: yield [[T0]]
@@ -291,7 +291,7 @@
// CHECK: }
// CHECK-LABEL: sil private [transparent] [thunk] @$s6modify4BillVAA8TotalledA2aDP5totalSivMTW : $@yield_once @convention(witness_method: Totalled) (@inout Bill) -> @yields @inout Int {
-// CHECK: bb0([[SELF:%.*]] : @trivial $*Bill):
+// CHECK: bb0([[SELF:%.*]] : $*Bill):
// CHECK: [[T0:%.*]] = function_ref @$s6modify4BillV5totalSivM
// CHECK-NEXT: ([[T1:%.*]], [[TOKEN:%.*]]) = begin_apply [[T0]]([[SELF]])
// CHECK-NEXT: yield [[T1]] : $*Int, resume bb1, unwind bb2
diff --git a/test/SILGen/modify_objc.swift b/test/SILGen/modify_objc.swift
index c500948..95c3c34 100644
--- a/test/SILGen/modify_objc.swift
+++ b/test/SILGen/modify_objc.swift
@@ -18,7 +18,7 @@
// Protocol witness for 'block'.
// CHECK-LABEL: sil shared [transparent] [serialized] [thunk] @$sSo22ClassWithBlockPropertyC11modify_objc08ProtocolbcD0A2cDP5blockySSSgcSgvMTW :
// CHECK-SAME: $@yield_once @convention(witness_method: ProtocolWithBlockProperty) (@inout ClassWithBlockProperty) -> @yields @inout Optional<@callee_guaranteed (@guaranteed Optional<String>) -> ()>
-// CHECK: bb0([[SELF_INDIRECT:%.*]] : @trivial $*ClassWithBlockProperty):
+// CHECK: bb0([[SELF_INDIRECT:%.*]] : $*ClassWithBlockProperty):
// CHECK-NEXT: [[SELF:%.*]] = load_borrow [[SELF_INDIRECT]] : $*ClassWithBlockProperty
// CHECK-NEXT: // function_ref
// CHECK-NEXT: [[FN:%.*]] = function_ref @$sSo22ClassWithBlockPropertyC5blockySSSgcSgvM
@@ -31,7 +31,7 @@
// Protocol witness for 'dependentBlock'
// CHECK-LABEL: sil shared [transparent] [serialized] [thunk] @$sSo22ClassWithBlockPropertyC11modify_objc08ProtocolbcD0A2cDP09dependentC0y14DependentInputQzcSgvMTW :
// CHECK-SAME: $@yield_once @convention(witness_method: ProtocolWithBlockProperty) (@inout ClassWithBlockProperty) -> @yields @inout Optional<@callee_guaranteed (@in_guaranteed Optional<String>) -> ()>
-// CHECK: bb0([[SELF_INDIRECT:%.*]] : @trivial $*ClassWithBlockProperty):
+// CHECK: bb0([[SELF_INDIRECT:%.*]] : $*ClassWithBlockProperty):
// CHECK-NEXT: [[SELF:%.*]] = load_borrow [[SELF_INDIRECT]] : $*ClassWithBlockProperty
// CHECK-NEXT: // function_ref
// CHECK-NEXT: [[FN:%.*]] = function_ref @$sSo22ClassWithBlockPropertyC09dependentC0ySSSgcSgvM
diff --git a/test/SILGen/nested_generics.swift b/test/SILGen/nested_generics.swift
index 27dff93..3ec4bb8 100644
--- a/test/SILGen/nested_generics.swift
+++ b/test/SILGen/nested_generics.swift
@@ -227,7 +227,7 @@
// CHECK-LABEL: sil shared [transparent] [serializable] [reabstraction_thunk] @$s15nested_generics6PizzasV7NewYorkCyAA6PepperV_GAA7HotDogsC8AmericanVIeggd_AhLIeggr_TR : $@convention(thin) (@guaranteed Pizzas<Pepper>.NewYork, @guaranteed @callee_guaranteed (@guaranteed Pizzas<Pepper>.NewYork) -> HotDogs.American) -> @out HotDogs.American
// CHECK-LABEL: sil private [transparent] [thunk] @$s15nested_generics9OuterRingC05InnerD0Cyx_qd__GAA30ProtocolWithGenericRequirementA2aGP6method1t1u1v1TQz_1UQzqd__tAN_APqd__tlFTW : $@convention(witness_method: ProtocolWithGenericRequirement) <τ_0_0><τ_1_0><τ_2_0> (@in_guaranteed τ_0_0, @in_guaranteed τ_1_0, @in_guaranteed τ_2_0, @in_guaranteed OuterRing<τ_0_0>.InnerRing<τ_1_0>) -> (@out τ_0_0, @out τ_1_0, @out τ_2_0) {
-// CHECK: bb0([[T:%[0-9]+]] : @trivial $*τ_0_0, [[U:%[0-9]+]] : @trivial $*τ_1_0, [[V:%[0-9]+]] : @trivial $*τ_2_0, [[TOut:%[0-9]+]] : @trivial $*τ_0_0, [[UOut:%[0-9]+]] : @trivial $*τ_1_0, [[VOut:%[0-9]+]] : @trivial $*τ_2_0, [[SELF:%[0-9]+]] : @trivial $*OuterRing<τ_0_0>.InnerRing<τ_1_0>):
+// CHECK: bb0([[T:%[0-9]+]] : $*τ_0_0, [[U:%[0-9]+]] : $*τ_1_0, [[V:%[0-9]+]] : $*τ_2_0, [[TOut:%[0-9]+]] : $*τ_0_0, [[UOut:%[0-9]+]] : $*τ_1_0, [[VOut:%[0-9]+]] : $*τ_2_0, [[SELF:%[0-9]+]] : $*OuterRing<τ_0_0>.InnerRing<τ_1_0>):
// CHECK: [[SELF_COPY_VAL:%[0-9]+]] = load_borrow [[SELF]] : $*OuterRing<τ_0_0>.InnerRing<τ_1_0>
// CHECK: [[METHOD:%[0-9]+]] = class_method [[SELF_COPY_VAL]] : $OuterRing<τ_0_0>.InnerRing<τ_1_0>, #OuterRing.InnerRing.method!1 : <T><U><V> (OuterRing<T>.InnerRing<U>) -> (T, U, V) -> (T, U, V), $@convention(method) <τ_0_0><τ_1_0><τ_2_0> (@in_guaranteed τ_0_0, @in_guaranteed τ_1_0, @in_guaranteed τ_2_0, @guaranteed OuterRing<τ_0_0>.InnerRing<τ_1_0>) -> (@out τ_0_0, @out τ_1_0, @out τ_2_0)
// CHECK: apply [[METHOD]]<τ_0_0, τ_1_0, τ_2_0>([[T]], [[U]], [[V]], [[TOut]], [[UOut]], [[VOut]], [[SELF_COPY_VAL]]) : $@convention(method) <τ_0_0><τ_1_0><τ_2_0> (@in_guaranteed τ_0_0, @in_guaranteed τ_1_0, @in_guaranteed τ_2_0, @guaranteed OuterRing<τ_0_0>.InnerRing<τ_1_0>) -> (@out τ_0_0, @out τ_1_0, @out τ_2_0)
diff --git a/test/SILGen/objc_blocks_bridging.swift b/test/SILGen/objc_blocks_bridging.swift
index 1a7fe02..921ed4c 100644
--- a/test/SILGen/objc_blocks_bridging.swift
+++ b/test/SILGen/objc_blocks_bridging.swift
@@ -66,7 +66,7 @@
}
// CHECK-LABEL: sil hidden [thunk] @$s20objc_blocks_bridging3FooC16cFunctionPointer{{[_0-9a-zA-Z]*}}FTo
- // CHECK: bb0([[F:%.*]] : @trivial $@convention(c) @noescape (Int) -> Int, [[X:%.*]] : @trivial $Int, [[SELF:%.*]] : @unowned $Foo):
+ // CHECK: bb0([[F:%.*]] : $@convention(c) @noescape (Int) -> Int, [[X:%.*]] : $Int, [[SELF:%.*]] : @unowned $Foo):
// CHECK: [[SELF_COPY:%.*]] = copy_value [[SELF]]
// CHECK: [[BORROWED_SELF_COPY:%.*]] = begin_borrow [[SELF_COPY]]
// CHECK: [[NATIVE:%.*]] = function_ref @$s20objc_blocks_bridging3FooC16cFunctionPointer{{[_0-9a-zA-Z]*}}F
@@ -96,7 +96,7 @@
// CHECK-LABEL: sil hidden @$s20objc_blocks_bridging3FooC19optCFunctionPointer{{[_0-9a-zA-Z]*}}F
// CHECK: switch_enum %0
//
- // CHECK: bb1([[FP_BUF:%.*]] : @trivial $@convention(c) (NSString) -> @autoreleased NSString):
+ // CHECK: bb1([[FP_BUF:%.*]] : $@convention(c) (NSString) -> @autoreleased NSString):
@objc dynamic func optCFunctionPointer(_ fp: (@convention(c) (String) -> String)?, x: String) -> String? {
return fp?(x)
}
diff --git a/test/SILGen/objc_bridging.swift b/test/SILGen/objc_bridging.swift
index d81fdee..25ae9bd 100644
--- a/test/SILGen/objc_bridging.swift
+++ b/test/SILGen/objc_bridging.swift
@@ -144,7 +144,7 @@
f.setZim(b)
}
// CHECK-ios-i386-LABEL: sil hidden @$s13objc_bridging6setZim{{.*}}F
-// CHECK-ios-i386: bb0([[ARG0:%.*]] : @guaranteed $Foo, [[ARG1:%.*]] : @trivial $Bool):
+// CHECK-ios-i386: bb0([[ARG0:%.*]] : @guaranteed $Foo, [[ARG1:%.*]] : $Bool):
// CHECK-ios-i386: [[CONVERT:%.*]] = function_ref @swift_BoolToObjCBool : $@convention(thin) (Bool) -> ObjCBool
// CHECK-ios-i386: [[OBJC_BOOL:%.*]] = apply [[CONVERT]]([[ARG1]]) : $@convention(thin) (Bool) -> ObjCBool
// CHECK-ios-i386: [[METHOD:%.*]] = objc_method [[ARG0]] : $Foo, #Foo.setZim!1.foreign
@@ -153,7 +153,7 @@
// CHECK-ios-i386: }
// CHECK-macosx-x86_64-LABEL: sil hidden @$s13objc_bridging6setZim{{.*}}F
-// CHECK-macosx-x86_64: bb0([[ARG0:%.*]] : @guaranteed $Foo, [[ARG1:%.*]] : @trivial $Bool):
+// CHECK-macosx-x86_64: bb0([[ARG0:%.*]] : @guaranteed $Foo, [[ARG1:%.*]] : $Bool):
// CHECK-macosx-x86_64: [[CONVERT:%.*]] = function_ref @swift_BoolToObjCBool : $@convention(thin) (Bool) -> ObjCBool
// CHECK-macosx-x86_64: [[OBJC_BOOL:%.*]] = apply [[CONVERT]]([[ARG1]]) : $@convention(thin) (Bool) -> ObjCBool
// CHECK-macosx-x86_64: [[METHOD:%.*]] = objc_method [[ARG0]] : $Foo, #Foo.setZim!1.foreign
@@ -162,21 +162,21 @@
// CHECK-macosx-x86_64: }
// CHECK-ios-x86_64-LABEL: sil hidden @$s13objc_bridging6setZim{{.*}}F
-// CHECK-ios-x86_64: bb0([[ARG0:%.*]] : @guaranteed $Foo, [[ARG1:%.*]] : @trivial $Bool):
+// CHECK-ios-x86_64: bb0([[ARG0:%.*]] : @guaranteed $Foo, [[ARG1:%.*]] : $Bool):
// CHECK-ios-x86_64: [[METHOD:%.*]] = objc_method [[ARG0]] : $Foo, #Foo.setZim!1.foreign
// CHECK-ios-x86_64: apply [[METHOD]]([[ARG1]], [[ARG0]]) : $@convention(objc_method) (Bool, Foo) -> ()
// CHECK-ios-x86_64-NOT: destroy_value [[ARG0]]
// CHECK-ios-x86_64: }
// CHECK-arm64-LABEL: sil hidden @$s13objc_bridging6setZim{{.*}}F
-// CHECK-arm64: bb0([[ARG0:%.*]] : @guaranteed $Foo, [[ARG1:%.*]] : @trivial $Bool):
+// CHECK-arm64: bb0([[ARG0:%.*]] : @guaranteed $Foo, [[ARG1:%.*]] : $Bool):
// CHECK-arm64: [[METHOD:%.*]] = objc_method [[ARG0]] : $Foo, #Foo.setZim!1.foreign
// CHECK-arm64: apply [[METHOD]]([[ARG1]], [[ARG0]]) : $@convention(objc_method) (Bool, Foo) -> ()
// CHECK-arm64-NOT: destroy_value [[ARG0]]
// CHECK-arm64: }
// CHECK-watchos-i386-LABEL: sil hidden @$s13objc_bridging6setZim{{.*}}F
-// CHECK-watchos-i386: bb0([[ARG0:%.*]] : @guaranteed $Foo, [[ARG1:%.*]] : @trivial $Bool):
+// CHECK-watchos-i386: bb0([[ARG0:%.*]] : @guaranteed $Foo, [[ARG1:%.*]] : $Bool):
// CHECK-watchos-i386: [[METHOD:%.*]] = objc_method [[ARG0]] : $Foo, #Foo.setZim!1.foreign
// CHECK-watchos-i386: apply [[METHOD]]([[ARG1]], [[ARG0]]) : $@convention(objc_method) (Bool, Foo) -> ()
// CHECK-watchos-i386-NOT: destroy_value [[ARG0]]
@@ -198,7 +198,7 @@
f.setZang(b)
}
// CHECK-LABEL: sil hidden @$s13objc_bridging7setZangyySo3FooC_SbtF
-// CHECK: bb0([[ARG0:%.*]] : @guaranteed $Foo, [[ARG1:%.*]] : @trivial $Bool):
+// CHECK: bb0([[ARG0:%.*]] : @guaranteed $Foo, [[ARG1:%.*]] : $Bool):
// CHECK: [[METHOD:%.*]] = objc_method [[ARG0]] : $Foo, #Foo.setZang!1.foreign
// CHECK: apply [[METHOD]]([[ARG1]], [[ARG0]]) : $@convention(objc_method) (Bool, Foo) -> ()
// CHECK-NOT: destroy_value [[ARG0]]
@@ -567,7 +567,7 @@
}
// CHECK-LABEL: sil hidden @$s13objc_bridging16updateFridgeTemp{{.*}}F
-// CHECK: bb0([[HOME:%[0-9]+]] : @guaranteed $APPHouse, [[DELTA:%[0-9]+]] : @trivial $Double):
+// CHECK: bb0([[HOME:%[0-9]+]] : @guaranteed $APPHouse, [[DELTA:%[0-9]+]] : $Double):
func updateFridgeTemp(_ home: APPHouse, delta: Double) {
// Temporary fridge
// CHECK: [[TEMP_FRIDGE:%[0-9]+]] = alloc_stack $Refrigerator
@@ -614,7 +614,7 @@
}
// CHECK-LABEL: sil shared [transparent] [serializable] [reabstraction_thunk] @$sypypIegnr_yXlyXlIeyBya_TR : $@convention(c) (@inout_aliasable @block_storage @callee_guaranteed (@in_guaranteed Any) -> @out Any, AnyObject) -> @autoreleased AnyObject
-// CHECK: bb0(%0 : @trivial $*@block_storage @callee_guaranteed (@in_guaranteed Any) -> @out Any, %1 : @unowned $AnyObject):
+// CHECK: bb0(%0 : $*@block_storage @callee_guaranteed (@in_guaranteed Any) -> @out Any, %1 : @unowned $AnyObject):
// CHECK: [[T0:%.*]] = copy_value %1 : $AnyObject
// CHECK: [[T1:%.*]] = open_existential_ref [[T0]] : $AnyObject
// CHECK: [[ARG:%.*]] = alloc_stack $Any
diff --git a/test/SILGen/objc_bridging_any.swift b/test/SILGen/objc_bridging_any.swift
index dad5d4d..ba6d968 100644
--- a/test/SILGen/objc_bridging_any.swift
+++ b/test/SILGen/objc_bridging_any.swift
@@ -475,7 +475,7 @@
// CHECK-NEXT: return [[RESULT]]
// CHECK-LABEL: sil shared [transparent] [serializable] [reabstraction_thunk] @$syXlIyBy_ypIegn_TR
- // CHECK: bb0([[ANY:%.*]] : @trivial $*Any, [[BLOCK:%.*]] : @guaranteed $@convention(block) @noescape (AnyObject) -> ()):
+ // CHECK: bb0([[ANY:%.*]] : $*Any, [[BLOCK:%.*]] : @guaranteed $@convention(block) @noescape (AnyObject) -> ()):
// CHECK-NEXT: [[OPENED_ANY:%.*]] = open_existential_addr immutable_access [[ANY]] : $*Any to $*[[OPENED_TYPE:@opened.*Any]],
// CHECK: [[TMP:%.*]] = alloc_stack
// CHECK: copy_addr [[OPENED_ANY]] to [initialization] [[TMP]]
@@ -513,7 +513,7 @@
// CHECK-NEXT: return [[BLOCK]]
// CHECK-LABEL: sil shared [transparent] [serializable] [reabstraction_thunk] @$sypIegn_yXlIeyBy_TR : $@convention(c) (@inout_aliasable @block_storage @callee_guaranteed (@in_guaranteed Any) -> (), AnyObject) -> ()
- // CHECK: bb0([[BLOCK_STORAGE:%.*]] : @trivial $*@block_storage @callee_guaranteed (@in_guaranteed Any) -> (), [[ANY:%.*]] : @unowned $AnyObject):
+ // CHECK: bb0([[BLOCK_STORAGE:%.*]] : $*@block_storage @callee_guaranteed (@in_guaranteed Any) -> (), [[ANY:%.*]] : @unowned $AnyObject):
// CHECK-NEXT: [[BLOCK_STORAGE_ADDR:%.*]] = project_block_storage [[BLOCK_STORAGE]]
// CHECK-NEXT: [[FUNCTION:%.*]] = load [copy] [[BLOCK_STORAGE_ADDR]]
// CHECK-NEXT: [[ANY_COPY:%.*]] = copy_value [[ANY]]
@@ -554,7 +554,7 @@
// CHECK-NEXT: return [[RESULT]]
// CHECK-LABEL: sil shared [transparent] [serializable] [reabstraction_thunk] @$syXlIyBa_ypIegr_TR : $@convention(thin) (@guaranteed @convention(block) @noescape () -> @autoreleased AnyObject) -> @out Any
- // CHECK: bb0([[ANY_ADDR:%.*]] : @trivial $*Any, [[BLOCK:%.*]] : @guaranteed $@convention(block) @noescape () -> @autoreleased AnyObject):
+ // CHECK: bb0([[ANY_ADDR:%.*]] : $*Any, [[BLOCK:%.*]] : @guaranteed $@convention(block) @noescape () -> @autoreleased AnyObject):
// CHECK-NEXT: [[BRIDGED:%.*]] = apply [[BLOCK]]()
// CHECK-NEXT: [[OPTIONAL:%.*]] = unchecked_ref_cast [[BRIDGED]]
// CHECK-NEXT: // function_ref
@@ -591,7 +591,7 @@
// CHECK-NEXT: return [[BLOCK]]
// CHECK-LABEL: sil shared [transparent] [serializable] [reabstraction_thunk] @$sypIegr_yXlIeyBa_TR : $@convention(c) (@inout_aliasable @block_storage @callee_guaranteed () -> @out Any) -> @autoreleased AnyObject
- // CHECK: bb0(%0 : @trivial $*@block_storage @callee_guaranteed () -> @out Any):
+ // CHECK: bb0(%0 : $*@block_storage @callee_guaranteed () -> @out Any):
// CHECK-NEXT: [[BLOCK_STORAGE_ADDR:%.*]] = project_block_storage %0
// CHECK-NEXT: [[FUNCTION:%.*]] = load [copy] [[BLOCK_STORAGE_ADDR]]
// CHECK-NEXT: [[RESULT:%.*]] = alloc_stack $Any
@@ -640,7 +640,7 @@
extension GenericClass {
// CHECK-LABEL: sil hidden @$sSo12GenericClassC17objc_bridging_anyE23pseudogenericAnyErasure1xypx_tF :
@objc func pseudogenericAnyErasure(x: T) -> Any {
- // CHECK: bb0([[ANY_OUT:%.*]] : @trivial $*Any, [[ARG:%.*]] : @guaranteed $T, [[SELF:%.*]] : @guaranteed $GenericClass<T>
+ // CHECK: bb0([[ANY_OUT:%.*]] : $*Any, [[ARG:%.*]] : @guaranteed $T, [[SELF:%.*]] : @guaranteed $GenericClass<T>
// CHECK: [[ARG_COPY:%.*]] = copy_value [[ARG]]
// CHECK: [[ANYOBJECT:%.*]] = init_existential_ref [[ARG_COPY]] : $T : $T, $AnyObject
// CHECK: [[ANY_BUF:%.*]] = init_existential_addr [[ANY_OUT]] : $*Any, $AnyObject
diff --git a/test/SILGen/objc_currying.swift b/test/SILGen/objc_currying.swift
index ee02fb8..7b2073e 100644
--- a/test/SILGen/objc_currying.swift
+++ b/test/SILGen/objc_currying.swift
@@ -29,7 +29,7 @@
// CHECK: } // end sil function '[[THUNK_FOO_1]]'
// CHECK: sil shared [serializable] [thunk] @[[THUNK_FOO_2]] : $@convention(method) (Int, @guaranteed CurryTest) -> Int
-// CHECK: bb0([[ARG1:%.*]] : @trivial $Int, [[ARG2:%.*]] : @guaranteed $CurryTest):
+// CHECK: bb0([[ARG1:%.*]] : $Int, [[ARG2:%.*]] : @guaranteed $CurryTest):
// CHECK: [[COPIED_ARG2:%.*]] = copy_value [[ARG2]]
// CHECK: [[METHOD:%.*]] = objc_method [[COPIED_ARG2]] : $CurryTest, #CurryTest.pod!1.foreign
// CHECK: [[RESULT:%.*]] = apply [[METHOD]]([[ARG1]], [[COPIED_ARG2]])
@@ -130,7 +130,7 @@
// CHECK: [[OPENED_ANY:%.*]] = open_existential_ref [[ANY]]
// CHECK: [[OPENED_ANY_COPY:%.*]] = copy_value [[OPENED_ANY]]
// CHECK: dynamic_method_br [[OPENED_ANY_COPY]] : $@opened({{.*}}) AnyObject, #CurryTest.pod!1.foreign, [[HAS_METHOD:bb[0-9]+]]
-// CHECK: [[HAS_METHOD]]([[METHOD:%.*]] : @trivial $@convention(objc_method) (Int, @opened({{.*}}) AnyObject) -> Int):
+// CHECK: [[HAS_METHOD]]([[METHOD:%.*]] : $@convention(objc_method) (Int, @opened({{.*}}) AnyObject) -> Int):
// CHECK: [[OPENED_ANY_COPY_2:%.*]] = copy_value [[OPENED_ANY_COPY]]
// CHECK: partial_apply [callee_guaranteed] [[METHOD]]([[OPENED_ANY_COPY_2]])
// CHECK: } // end sil function '$s13objc_currying19curry_pod_AnyObjectyS2icyXlF'
@@ -144,7 +144,7 @@
// CHECK: [[OPENED_ANY:%.*]] = open_existential_ref [[ANY]]
// CHECK: [[OPENED_ANY_COPY:%.*]] = copy_value [[OPENED_ANY]]
// CHECK: dynamic_method_br [[OPENED_ANY_COPY]] : $@opened({{.*}}) AnyObject, #CurryTest.normalOwnership!1.foreign, [[HAS_METHOD:bb[0-9]+]]
-// CHECK: [[HAS_METHOD]]([[METHOD:%.*]] : @trivial $@convention(objc_method) (Optional<CurryTest>, @opened({{.*}}) AnyObject) -> @autoreleased Optional<CurryTest>):
+// CHECK: [[HAS_METHOD]]([[METHOD:%.*]] : $@convention(objc_method) (Optional<CurryTest>, @opened({{.*}}) AnyObject) -> @autoreleased Optional<CurryTest>):
// CHECK: [[OPENED_ANY_COPY_2:%.*]] = copy_value [[OPENED_ANY_COPY]]
// CHECK: [[PA:%.*]] = partial_apply [callee_guaranteed] [[METHOD]]([[OPENED_ANY_COPY_2]])
// CHECK: [[THUNK:%.*]] = function_ref @$sSo9CurryTestCSgACIegyo_A2CIeggo_TR
@@ -162,7 +162,7 @@
// CHECK: [[OPENED_ANY_COPY:%.*]] = copy_value [[OPENED_ANY]]
// CHECK: dynamic_method_br [[SELF:%.*]] : $@opened({{.*}}) AnyObject, #CurryTest.weirdOwnership!1.foreign, [[HAS_METHOD:bb[0-9]+]]
//
-// CHECK: bb1([[METHOD:%.*]] : @trivial $@convention(objc_method) (@owned Optional<CurryTest>, @owned @opened({{.*}}) AnyObject) -> @owned Optional<CurryTest>):
+// CHECK: bb1([[METHOD:%.*]] : $@convention(objc_method) (@owned Optional<CurryTest>, @owned @opened({{.*}}) AnyObject) -> @owned Optional<CurryTest>):
// CHECK: [[OPENED_ANY_COPY_2:%.*]] = copy_value [[OPENED_ANY_COPY]]
// CHECK: partial_apply [callee_guaranteed] [[METHOD]]([[OPENED_ANY_COPY_2]])
// CHECK: } // end sil function '$s13objc_currying30curry_weirdOwnership_AnyObjectySo9CurryTestCSgAEcyXlF'
@@ -188,7 +188,7 @@
// CHECK: [[OPENED_ANY:%.*]] = open_existential_ref [[ANY]]
// CHECK: [[OPENED_ANY_COPY:%.*]] = copy_value [[OPENED_ANY]]
// CHECK: dynamic_method_br [[OPENED_ANY_COPY]] : $@opened({{.*}}) AnyObject, #CurryTest.returnsSelf!1.foreign, [[HAS_METHOD:bb[0-9]+]]
-// CHECK: [[HAS_METHOD]]([[METHOD:%.*]] : @trivial $@convention(objc_method) (@opened({{.*}}) AnyObject) -> @autoreleased Optional<AnyObject>):
+// CHECK: [[HAS_METHOD]]([[METHOD:%.*]] : $@convention(objc_method) (@opened({{.*}}) AnyObject) -> @autoreleased Optional<AnyObject>):
// CHECK: [[OPENED_ANY_COPY_2:%.*]] = copy_value [[OPENED_ANY_COPY]]
// CHECK: [[PA:%.*]] = partial_apply [callee_guaranteed] [[METHOD]]([[OPENED_ANY_COPY_2]])
// CHECK: } // end sil function '$s13objc_currying27curry_returnsSelf_AnyObjectyyXlSgycyXlF'
@@ -201,7 +201,7 @@
// CHECK: [[OPENED_ANY:%.*]] = open_existential_ref [[ANY]]
// CHECK: [[OPENED_ANY_COPY:%.*]] = copy_value [[OPENED_ANY]]
// CHECK: dynamic_method_br [[OPENED_ANY_COPY]] : $@opened({{.*}}) AnyObject, #CurryTest.returnsInnerPointer!1.foreign, [[HAS_METHOD:bb[0-9]+]]
-// CHECK: [[HAS_METHOD]]([[METHOD:%.*]] : @trivial $@convention(objc_method) (@opened({{.*}}) AnyObject) -> @unowned_inner_pointer Optional<UnsafeMutableRawPointer>):
+// CHECK: [[HAS_METHOD]]([[METHOD:%.*]] : $@convention(objc_method) (@opened({{.*}}) AnyObject) -> @unowned_inner_pointer Optional<UnsafeMutableRawPointer>):
// CHECK: [[OPENED_ANY_COPY_2:%.*]] = copy_value [[OPENED_ANY_COPY]]
// CHECK: [[PA:%.*]] = partial_apply [callee_guaranteed] [[METHOD]]([[OPENED_ANY_COPY_2]])
// CHECK: } // end sil function '$s13objc_currying35curry_returnsInnerPointer_AnyObjectySvSgycyXlF'
diff --git a/test/SILGen/objc_deprecated_objc_thunks.swift b/test/SILGen/objc_deprecated_objc_thunks.swift
index c869bac..029c465 100644
--- a/test/SILGen/objc_deprecated_objc_thunks.swift
+++ b/test/SILGen/objc_deprecated_objc_thunks.swift
@@ -43,7 +43,7 @@
var bar: NSObject? = nil
// CHECK-SWIFT4-LABEL: sil hidden [thunk] @$s016objc_deprecated_A7_thunks12ObjCSubclassCyyXlSicigTo : $@convention(objc_method) (Int, ObjCSubclass) -> @autoreleased AnyObject
- // CHECK-SWIFT4: bb0(%0 : @trivial $Int, %1 : @unowned $ObjCSubclass):
+ // CHECK-SWIFT4: bb0(%0 : $Int, %1 : @unowned $ObjCSubclass):
// CHECK-SWIFT4-NEXT: [[FILENAME:%.*]] = [[FILENAME_LITERAL]]
// CHECK-SWIFT4-NEXT: [[LENGTH:%.*]] = integer_literal
// CHECK-SWIFT4-NEXT: [[IS_ASCII:%.*]] = integer_literal
@@ -52,7 +52,7 @@
// CHECK-SWIFT4-NEXT: builtin "swift3ImplicitObjCEntrypoint"([[FILENAME]] : $Builtin.RawPointer, [[LENGTH]] : $Builtin.Word, [[LINE]] : $Builtin.Word, [[COLUMN]] : $Builtin.Word) : $()
// CHECK-SWIFT4-LABEL: sil hidden [thunk] @$s016objc_deprecated_A7_thunks12ObjCSubclassCyyXlSicisTo : $@convention(objc_method) (AnyObject, Int, ObjCSubclass) ->
- // CHECK-SWIFT4: bb0(%0 : @unowned $AnyObject, %1 : @trivial $Int, %2 : @unowned $ObjCSubclass):
+ // CHECK-SWIFT4: bb0(%0 : @unowned $AnyObject, %1 : $Int, %2 : @unowned $ObjCSubclass):
// CHECK-SWIFT4-NEXT: [[FILENAME:%.*]] = [[FILENAME_LITERAL]]
// CHECK-SWIFT4-NEXT: [[LENGTH:%.*]] = integer_literal
// CHECK-SWIFT4-NEXT: [[IS_ASCII:%.*]] = integer_literal
diff --git a/test/SILGen/objc_error.swift b/test/SILGen/objc_error.swift
index acbfce4..03b7557 100644
--- a/test/SILGen/objc_error.swift
+++ b/test/SILGen/objc_error.swift
@@ -138,7 +138,7 @@
// SR-1562
extension Error {
// CHECK-LABEL: sil hidden @$ss5ErrorP10objc_errorE16convertToNSErrorSo0F0CyF
- // CHECK: bb0([[SELF:%[0-9]+]] : @trivial $*Self)
+ // CHECK: bb0([[SELF:%[0-9]+]] : $*Self)
func convertToNSError() -> NSError {
// CHECK: [[COPY:%.*]] = alloc_stack $Self
// CHECK: copy_addr [[SELF]] to [initialization] [[COPY]]
diff --git a/test/SILGen/objc_factory_init.swift b/test/SILGen/objc_factory_init.swift
index 324be14..58abc27 100644
--- a/test/SILGen/objc_factory_init.swift
+++ b/test/SILGen/objc_factory_init.swift
@@ -7,7 +7,7 @@
// CHECK-LABEL: sil shared [serializable] [thunk] @$sSo4HiveC5queenABSgSo3BeeCSg_tcfCTO : $@convention(method) (@owned Optional<Bee>, @thick Hive.Type) -> @owned Optional<Hive>
func testInstanceTypeFactoryMethod(queen: Bee) {
- // CHECK: bb0([[QUEEN:%[0-9]+]] : @owned $Optional<Bee>, [[HIVE_META:%[0-9]+]] : @trivial $@thick Hive.Type):
+ // CHECK: bb0([[QUEEN:%[0-9]+]] : @owned $Optional<Bee>, [[HIVE_META:%[0-9]+]] : $@thick Hive.Type):
// CHECK-NEXT: [[HIVE_META_OBJC:%[0-9]+]] = thick_to_objc_metatype [[HIVE_META]] : $@thick Hive.Type to $@objc_metatype Hive.Type
// CHECK-NEXT: [[FACTORY:%[0-9]+]] = objc_method [[HIVE_META_OBJC]] : $@objc_metatype Hive.Type, #Hive.init!allocator.1.foreign : (Hive.Type) -> (Bee?) -> Hive?, $@convention(objc_method) (Optional<Bee>, @objc_metatype Hive.Type) -> @autoreleased Optional<Hive>
// CHECK-NEXT: [[HIVE:%[0-9]+]] = apply [[FACTORY]]([[QUEEN]], [[HIVE_META_OBJC]]) : $@convention(objc_method) (Optional<Bee>, @objc_metatype Hive.Type) -> @autoreleased Optional<Hive>
@@ -22,7 +22,7 @@
// entry point at all.
// CHECK-LABEL: sil hidden @$sSo4HiveC17objc_factory_initE10otherQueenABSo3BeeC_tcfC
- // CHECK: bb0([[QUEEN:%.*]] : @owned $Bee, [[META:%.*]] : @trivial $@thick Hive.Type):
+ // CHECK: bb0([[QUEEN:%.*]] : @owned $Bee, [[META:%.*]] : $@thick Hive.Type):
// CHECK: [[SELF_BOX:%.*]] = alloc_box ${ var Hive }, let, name "self"
// CHECK: [[MU:%.*]] = mark_uninitialized [delegatingself] [[SELF_BOX]]
// CHECK: [[PB_BOX:%.*]] = project_box [[MU]] : ${ var Hive }, 0
@@ -46,7 +46,7 @@
extension SomeClass {
// CHECK-LABEL: sil hidden @$sSo12IAMSomeClassC17objc_factory_initE6doubleABSd_tcfC
- // CHECK: bb0([[DOUBLE:%.*]] : @trivial $Double,
+ // CHECK: bb0([[DOUBLE:%.*]] : $Double,
// CHECK-NOT: value_metatype
// CHECK: [[FNREF:%[0-9]+]] = function_ref @MakeIAMSomeClass
// CHECK: apply [[FNREF]]([[DOUBLE]])
@@ -57,7 +57,7 @@
class SubHive : Hive {
// CHECK-LABEL: sil hidden @$s17objc_factory_init7SubHiveC20delegatesToInheritedACyt_tcfC
- // CHECK: bb0([[METATYPE:%.*]] : @trivial $@thick SubHive.Type):
+ // CHECK: bb0([[METATYPE:%.*]] : $@thick SubHive.Type):
// CHECK: [[SELF_BOX:%.*]] = alloc_box ${ var SubHive }, let, name "self"
// CHECK: [[MU:%.*]] = mark_uninitialized [delegatingself] [[SELF_BOX]] : ${ var SubHive }
// CHECK: [[PB_BOX:%.*]] = project_box [[MU]] : ${ var SubHive }, 0
diff --git a/test/SILGen/objc_imported_generic.swift b/test/SILGen/objc_imported_generic.swift
index 957aaaa..f1a2385 100644
--- a/test/SILGen/objc_imported_generic.swift
+++ b/test/SILGen/objc_imported_generic.swift
@@ -26,11 +26,11 @@
}
// CHECK-LABEL: sil @$s21objc_imported_generic0C24MethodOnAnyObjectChained1o1byXlSgyXl_SbtF
-// CHECK: bb0([[ANY:%.*]] : @guaranteed $AnyObject, [[BOOL:%.*]] : @trivial $Bool):
+// CHECK: bb0([[ANY:%.*]] : @guaranteed $AnyObject, [[BOOL:%.*]] : $Bool):
// CHECK: [[OPENED_ANY:%.*]] = open_existential_ref [[ANY]]
// CHECK: [[OPENED_ANY_COPY:%.*]] = copy_value [[OPENED_ANY]]
// CHECK: dynamic_method_br [[OPENED_ANY_COPY]] : $@opened([[TAG:.*]]) AnyObject, #GenericClass.thing!1.foreign, bb1
-// CHECK: bb1({{%.*}} : @trivial $@convention(objc_method) (@opened([[TAG]]) AnyObject) -> @autoreleased Optional<AnyObject>):
+// CHECK: bb1({{%.*}} : $@convention(objc_method) (@opened([[TAG]]) AnyObject) -> @autoreleased Optional<AnyObject>):
// CHECK: } // end sil function '$s21objc_imported_generic0C24MethodOnAnyObjectChained1o1byXlSgyXl_SbtF'
public func genericSubscriptOnAnyObject(o: AnyObject, b: Bool) -> AnyObject? {
@@ -42,7 +42,7 @@
// CHCEK: [[OPENED_ANY:%.*]] = open_existential_ref [[ANY]]
// CHECK: [[OPENED_ANY_COPY:%.*]] = copy_value [[OPENED_ANY]]
// CHECK: dynamic_method_br [[OPENED_ANY_COPY]] : $@opened([[TAG:.*]]) AnyObject, #GenericClass.subscript!getter.1.foreign, bb1
-// CHECK: bb1({{%.*}} : @trivial $@convention(objc_method) (UInt16, @opened([[TAG]]) AnyObject) -> @autoreleased AnyObject):
+// CHECK: bb1({{%.*}} : $@convention(objc_method) (UInt16, @opened([[TAG]]) AnyObject) -> @autoreleased AnyObject):
// CHECK: } // end sil function '$s21objc_imported_generic0C20SubscriptOnAnyObject1o1byXlSgyXl_SbtF'
public func genericPropertyOnAnyObject(o: AnyObject, b: Bool) -> AnyObject?? {
@@ -50,11 +50,11 @@
}
// CHECK-LABEL: sil @$s21objc_imported_generic0C19PropertyOnAnyObject1o1byXlSgSgyXl_SbtF
-// CHECK: bb0([[ANY:%.*]] : @guaranteed $AnyObject, [[BOOL:%.*]] : @trivial $Bool):
+// CHECK: bb0([[ANY:%.*]] : @guaranteed $AnyObject, [[BOOL:%.*]] : $Bool):
// CHECK: [[OPENED_ANY:%.*]] = open_existential_ref [[ANY]]
// CHECK: [[OPENED_ANY_COPY:%.*]] = copy_value [[OPENED_ANY]]
// CHECK: dynamic_method_br [[OPENED_ANY_COPY]] : $@opened([[TAG:.*]]) AnyObject, #GenericClass.propertyThing!getter.1.foreign, bb1
-// CHECK: bb1({{%.*}} : @trivial $@convention(objc_method) (@opened([[TAG]]) AnyObject) -> @autoreleased Optional<AnyObject>):
+// CHECK: bb1({{%.*}} : $@convention(objc_method) (@opened([[TAG]]) AnyObject) -> @autoreleased Optional<AnyObject>):
// CHECK: } // end sil function '$s21objc_imported_generic0C19PropertyOnAnyObject1o1byXlSgSgyXl_SbtF'
public protocol ThingHolder {
diff --git a/test/SILGen/objc_init_ref_delegation.swift b/test/SILGen/objc_init_ref_delegation.swift
index 8cedd0f..21ad96c 100644
--- a/test/SILGen/objc_init_ref_delegation.swift
+++ b/test/SILGen/objc_init_ref_delegation.swift
@@ -5,7 +5,7 @@
extension Gizmo {
// CHECK-LABEL: sil hidden @$sSo5GizmoC24objc_init_ref_delegationE{{[_0-9a-zA-Z]*}}fC
convenience init(int i: Int) {
- // CHECK: bb0([[I:%[0-9]+]] : @trivial $Int, [[SELF_META:%[0-9]+]] : @trivial $@thick Gizmo.Type):
+ // CHECK: bb0([[I:%[0-9]+]] : $Int, [[SELF_META:%[0-9]+]] : $@thick Gizmo.Type):
// CHECK: [[SELF_BOX:%[0-9]+]] = alloc_box ${ var Gizmo }
// CHECK: [[MARKED_SELF_BOX:%[0-9]+]] = mark_uninitialized [delegatingself] [[SELF_BOX]]
// CHECK: [[PB_BOX:%.*]] = project_box [[MARKED_SELF_BOX]]
diff --git a/test/SILGen/objc_metatypes.swift b/test/SILGen/objc_metatypes.swift
index c1a0916..f839f0f 100644
--- a/test/SILGen/objc_metatypes.swift
+++ b/test/SILGen/objc_metatypes.swift
@@ -9,7 +9,7 @@
// CHECK-LABEL: sil hidden [thunk] @$s14objc_metatypes1AC3fooyAA9ObjCClassCmAFmFTo
@objc dynamic func foo(_ m: ObjCClass.Type) -> ObjCClass.Type {
- // CHECK: bb0([[M:%[0-9]+]] : @trivial $@objc_metatype ObjCClass.Type, [[SELF:%[0-9]+]] : @unowned $A):
+ // CHECK: bb0([[M:%[0-9]+]] : $@objc_metatype ObjCClass.Type, [[SELF:%[0-9]+]] : @unowned $A):
// CHECK: [[SELF_COPY:%.*]] = copy_value [[SELF]] : $A
// CHECK: [[M_AS_THICK:%[0-9]+]] = objc_to_thick_metatype [[M]] : $@objc_metatype ObjCClass.Type to $@thick ObjCClass.Type
// CHECK: [[BORROWED_SELF_COPY:%.*]] = begin_borrow [[SELF_COPY]]
@@ -26,7 +26,7 @@
// CHECK-LABEL: sil hidden @$s14objc_metatypes1AC3bar{{[_0-9a-zA-Z]*}}FZ
// CHECK-LABEL: sil hidden [thunk] @$s14objc_metatypes1AC3bar{{[_0-9a-zA-Z]*}}FZTo
- // CHECK: bb0([[SELF:%[0-9]+]] : @trivial $@objc_metatype A.Type):
+ // CHECK: bb0([[SELF:%[0-9]+]] : $@objc_metatype A.Type):
// CHECK-NEXT: [[OBJC_SELF:%[0-9]+]] = objc_to_thick_metatype [[SELF]] : $@objc_metatype A.Type to $@thick A.Type
// CHECK: [[BAR:%[0-9]+]] = function_ref @$s14objc_metatypes1AC3bar{{[_0-9a-zA-Z]*}}FZ
// CHECK-NEXT: [[RESULT:%[0-9]+]] = apply [[BAR]]([[OBJC_SELF]]) : $@convention(method) (@thick A.Type) -> ()
diff --git a/test/SILGen/objc_ownership_conventions.swift b/test/SILGen/objc_ownership_conventions.swift
index 3f2487d..95f9b39 100644
--- a/test/SILGen/objc_ownership_conventions.swift
+++ b/test/SILGen/objc_ownership_conventions.swift
@@ -15,7 +15,7 @@
// CHECK-LABEL: sil shared [serializable] @$sSo5GizmoC{{[_0-9a-zA-Z]*}}fC : $@convention(method) (@thick Gizmo.Type) -> @owned Optional<Gizmo>
// alloc is implicitly ns_returns_retained
// init is implicitly ns_consumes_self and ns_returns_retained
- // CHECK: bb0([[GIZMO_META:%[0-9]+]] : @trivial $@thick Gizmo.Type):
+ // CHECK: bb0([[GIZMO_META:%[0-9]+]] : $@thick Gizmo.Type):
// CHECK-NEXT: [[GIZMO_META_OBJC:%[0-9]+]] = thick_to_objc_metatype [[GIZMO_META]] : $@thick Gizmo.Type to $@objc_metatype Gizmo.Type
// CHECK-NEXT: [[GIZMO:%[0-9]+]] = alloc_ref_dynamic [objc] [[GIZMO_META_OBJC]] : $@objc_metatype Gizmo.Type, $Gizmo
// CHECK-NEXT: // function_ref
@@ -132,12 +132,12 @@
// CHECK-NEXT: [[OPT_OBJC:%.*]] = apply [[GETTER]]([[NS_G_BORROW]]) : $@convention(objc_method) (NSObject) -> Optional<@objc_metatype AnyObject.Type>
// CHECK-NEXT: switch_enum [[OPT_OBJC]] : $Optional<{{.*}}>, case #Optional.some!enumelt.1: [[SOME_BB:bb[0-9]+]], case #Optional.none!enumelt: [[NONE_BB:bb[0-9]+]]
//
- // CHECK: [[SOME_BB]]([[OBJC:%.*]] : @trivial $@objc_metatype AnyObject.Type):
+ // CHECK: [[SOME_BB]]([[OBJC:%.*]] : $@objc_metatype AnyObject.Type):
// CHECK-NEXT: [[THICK:%.*]] = objc_to_thick_metatype [[OBJC]]
// CHECK: [[T0:%.*]] = enum $Optional<@thick AnyObject.Type>, #Optional.some!enumelt.1, [[THICK]]
- // CHECK: bb{{.*}}(%{{.*}} : @trivial $Optional<@thick AnyObject.Type>):
+ // CHECK: bb{{.*}}(%{{.*}} : $Optional<@thick AnyObject.Type>):
// CHECK: destroy_value [[NS_G_COPY]] : $NSObject
- // CHECK: bb{{.*}}([[RES:%.*]] : @trivial $@thick AnyObject.Type):
+ // CHECK: bb{{.*}}([[RES:%.*]] : $@thick AnyObject.Type):
// CHECK-NOT: destroy_value [[G]] : $Gizmo
// CHECK-NEXT: return [[RES]] : $@thick AnyObject.Type
return g.classProp
@@ -153,12 +153,12 @@
// CHECK-NEXT: [[OPT_OBJC:%.*]] = apply [[GETTER]]([[NS_G_BORROW]]) : $@convention(objc_method) (NSObject) -> Optional<@objc_metatype NSAnsing.Type>
// CHECK-NEXT: switch_enum [[OPT_OBJC]] : $Optional<{{.*}}>, case #Optional.some!enumelt.1: [[SOME_BB:bb[0-9]+]], case #Optional.none!enumelt: [[NONE_BB:bb[0-9]+]]
//
- // CHECK: [[SOME_BB]]([[OBJC:%.*]] : @trivial $@objc_metatype NSAnsing.Type):
+ // CHECK: [[SOME_BB]]([[OBJC:%.*]] : $@objc_metatype NSAnsing.Type):
// CHECK-NEXT: [[THICK:%.*]] = objc_to_thick_metatype [[OBJC]]
// CHECK: [[T0:%.*]] = enum $Optional<@thick NSAnsing.Type>, #Optional.some!enumelt.1, [[THICK]]
- // CHECK: bb{{.*}}(%{{.*}} : @trivial $Optional<@thick NSAnsing.Type>):
+ // CHECK: bb{{.*}}(%{{.*}} : $Optional<@thick NSAnsing.Type>):
// CHECK: destroy_value [[NS_G_COPY]] : $NSObject
- // CHECK: bb{{.*}}([[RES:%.*]] : @trivial $@thick NSAnsing.Type):
+ // CHECK: bb{{.*}}([[RES:%.*]] : $@thick NSAnsing.Type):
// CHECK: [[OPENED:%.*]] = open_existential_metatype [[RES]]
// CHECK: [[RES_ANY:%.*]] = init_existential_metatype [[OPENED]]
// CHECK-NOT: destroy_value [[G]] : $Gizmo
diff --git a/test/SILGen/objc_properties.swift b/test/SILGen/objc_properties.swift
index e64c089..56eaf40 100644
--- a/test/SILGen/objc_properties.swift
+++ b/test/SILGen/objc_properties.swift
@@ -34,7 +34,7 @@
// rdar://15858869 - However, direct access only applies to (implicit or
// explicit) 'self' ivar references, not ALL ivar refs.
// CHECK-LABEL: sil hidden @$s15objc_properties1AC{{[_0-9a-zA-Z]*}}fc
- // CHECK: bb0(%0 : @owned $A, %1 : @trivial $Int, [[OLD_SELF:%.*]] : @owned $A):
+ // CHECK: bb0(%0 : @owned $A, %1 : $Int, [[OLD_SELF:%.*]] : @owned $A):
// CHECK: [[SELF:%[0-9]+]] = mark_uninitialized [rootself] [[OLD_SELF]] : $A
init(other : A, x : Int) {
// CHECK: [[BORROWED_SELF:%.*]] = begin_borrow [[SELF]]
@@ -171,7 +171,7 @@
// CHECK: } // end sil function '$s15objc_properties12HasUnmanagedC3refs0D0VyyXlGSgvgTo'
// CHECK-LABEL: sil hidden [thunk] @$s15objc_properties12HasUnmanagedC3refs0D0VyyXlGSgvsTo
- // CHECK: bb0([[NEW_VALUE:%.*]] : @trivial $Optional<Unmanaged<AnyObject>>, [[SELF:%.*]] : @unowned $HasUnmanaged):
+ // CHECK: bb0([[NEW_VALUE:%.*]] : $Optional<Unmanaged<AnyObject>>, [[SELF:%.*]] : @unowned $HasUnmanaged):
// CHECK-NEXT: [[SELF_COPY:%.*]] = copy_value [[SELF]] : $HasUnmanaged
// CHECK-NEXT: [[BORROWED_SELF_COPY:%.*]] = begin_borrow [[SELF_COPY]]
// CHECK-NEXT: // function_ref
diff --git a/test/SILGen/objc_protocols.swift b/test/SILGen/objc_protocols.swift
index 214bbe8..f811cee 100644
--- a/test/SILGen/objc_protocols.swift
+++ b/test/SILGen/objc_protocols.swift
@@ -249,7 +249,7 @@
// CHECK-LABEL: sil hidden @$s14objc_protocols28testInitializableExistential_1iAA0D0_pAaD_pXp_SitF : $@convention(thin) (@thick Initializable.Type, Int) -> @owned Initializable {
func testInitializableExistential(_ im: Initializable.Type, i: Int) -> Initializable {
- // CHECK: bb0([[META:%[0-9]+]] : @trivial $@thick Initializable.Type, [[I:%[0-9]+]] : @trivial $Int):
+ // CHECK: bb0([[META:%[0-9]+]] : $@thick Initializable.Type, [[I:%[0-9]+]] : $Int):
// CHECK: [[I2_BOX:%[0-9]+]] = alloc_box ${ var Initializable }
// CHECK: [[PB:%.*]] = project_box [[I2_BOX]]
// CHECK: [[ARCHETYPE_META:%[0-9]+]] = open_existential_metatype [[META]] : $@thick Initializable.Type to $@thick (@opened([[N:".*"]]) Initializable).Type
diff --git a/test/SILGen/objc_thunks.swift b/test/SILGen/objc_thunks.swift
index a4e45f7..d508a83 100644
--- a/test/SILGen/objc_thunks.swift
+++ b/test/SILGen/objc_thunks.swift
@@ -10,7 +10,7 @@
class Hoozit : Gizmo {
@objc func typical(_ x: Int, y: Gizmo) -> Gizmo { return y }
// CHECK-LABEL: sil hidden [thunk] @$s11objc_thunks6HoozitC7typical_1ySo5GizmoCSi_AGtFTo : $@convention(objc_method) (Int, Gizmo, Hoozit) -> @autoreleased Gizmo {
- // CHECK: bb0([[X:%.*]] : @trivial $Int, [[Y:%.*]] : @unowned $Gizmo, [[THIS:%.*]] : @unowned $Hoozit):
+ // CHECK: bb0([[X:%.*]] : $Int, [[Y:%.*]] : @unowned $Gizmo, [[THIS:%.*]] : @unowned $Hoozit):
// CHECK-NEXT: [[Y_COPY:%.*]] = copy_value [[Y]]
// CHECK-NEXT: [[THIS_COPY:%.*]] = copy_value [[THIS]]
// CHECK-NEXT: [[BORROWED_Y_COPY:%.*]] = begin_borrow [[Y_COPY]]
@@ -41,7 +41,7 @@
// NS_CONSUMED 'gizmo' argument by inheritance
override class func consume(_ gizmo: Gizmo?) { }
// CHECK-LABEL: sil hidden [thunk] @$s11objc_thunks6HoozitC7consumeyySo5GizmoCSgFZTo : $@convention(objc_method) (@owned Optional<Gizmo>, @objc_metatype Hoozit.Type) -> () {
- // CHECK: bb0([[GIZMO:%.*]] : @owned $Optional<Gizmo>, [[THIS:%.*]] : @trivial $@objc_metatype Hoozit.Type):
+ // CHECK: bb0([[GIZMO:%.*]] : @owned $Optional<Gizmo>, [[THIS:%.*]] : $@objc_metatype Hoozit.Type):
// CHECK-NEXT: [[BORROWED_GIZMO:%.*]] = begin_borrow [[GIZMO]]
// CHECK-NEXT: [[THICK_THIS:%[0-9]+]] = objc_to_thick_metatype [[THIS]] : $@objc_metatype Hoozit.Type to $@thick Hoozit.Type
// CHECK: [[NATIVE:%.*]] = function_ref @$s11objc_thunks6HoozitC7consumeyySo5GizmoCSgFZ : $@convention(method) (@guaranteed Optional<Gizmo>, @thick Hoozit.Type) -> ()
@@ -381,7 +381,7 @@
@objc subscript (i: Int) -> Hoozit {
// Getter
// CHECK-LABEL: sil hidden [thunk] @$s11objc_thunks6HoozitCyACSicigTo : $@convention(objc_method) (Int, Hoozit) -> @autoreleased Hoozit
- // CHECK: bb0([[I:%[0-9]+]] : @trivial $Int, [[SELF:%[0-9]+]] : @unowned $Hoozit):
+ // CHECK: bb0([[I:%[0-9]+]] : $Int, [[SELF:%[0-9]+]] : @unowned $Hoozit):
// CHECK-NEXT: [[SELF_COPY:%.*]] = copy_value [[SELF]] : $Hoozit
// CHECK-NEXT: [[BORROWED_SELF_COPY:%.*]] = begin_borrow [[SELF_COPY]]
// CHECK-NEXT: // function_ref
@@ -396,7 +396,7 @@
// Setter
// CHECK-LABEL: sil hidden [thunk] @$s11objc_thunks6HoozitCyACSicisTo : $@convention(objc_method) (Hoozit, Int, Hoozit) -> ()
- // CHECK: bb0([[VALUE:%[0-9]+]] : @unowned $Hoozit, [[I:%[0-9]+]] : @trivial $Int, [[SELF:%[0-9]+]] : @unowned $Hoozit):
+ // CHECK: bb0([[VALUE:%[0-9]+]] : @unowned $Hoozit, [[I:%[0-9]+]] : $Int, [[SELF:%[0-9]+]] : @unowned $Hoozit):
// CHECK: [[VALUE_COPY:%.*]] = copy_value [[VALUE]] : $Hoozit
// CHECK: [[SELF_COPY:%.*]] = copy_value [[SELF]] : $Hoozit
// CHECK: [[BORROWED_SELF_COPY:%.*]] = begin_borrow [[SELF_COPY]]
@@ -578,7 +578,7 @@
// Noescape verification relies on there not being a retain/release in order to
// work in the presence of a objective c throwing implementation function.
// CHECK: sil {{.*}} @$sIeg_IyB_TR
-// CHECK: bb0([[T0:%.*]] : @trivial $*@block_storage @callee_guaranteed () -> ()):
+// CHECK: bb0([[T0:%.*]] : $*@block_storage @callee_guaranteed () -> ()):
// CHECK-NEXT: [[T1:%.*]] = project_block_storage [[T0]]
// CHECK-NEXT: [[T2:%.*]] = load_borrow [[T1]]
// CHECK-NEXT: [[T3:%.*]] = apply [[T2]]()
diff --git a/test/SILGen/objc_witnesses.swift b/test/SILGen/objc_witnesses.swift
index 8b1e04b..7a1b931 100644
--- a/test/SILGen/objc_witnesses.swift
+++ b/test/SILGen/objc_witnesses.swift
@@ -38,7 +38,7 @@
}
// CHECK: sil private [transparent] [thunk] @$sSo5GizmoC14objc_witnesses5BellsA2cDP{{[_0-9a-zA-Z]*}}fCTW
-// CHECK: bb0([[SELF:%[0-9]+]] : @trivial $*Gizmo, [[I:%[0-9]+]] : @trivial $Int, [[META:%[0-9]+]] : @trivial $@thick Gizmo.Type):
+// CHECK: bb0([[SELF:%[0-9]+]] : $*Gizmo, [[I:%[0-9]+]] : $Int, [[META:%[0-9]+]] : $@thick Gizmo.Type):
// CHECK: [[INIT:%[0-9]+]] = function_ref @$sSo5GizmoC{{[_0-9a-zA-Z]*}}fC : $@convention(method) (Int, @thick Gizmo.Type) -> @owned Optional<Gizmo>
// CHECK: [[IUO_RESULT:%[0-9]+]] = apply [[INIT]]([[I]], [[META]]) : $@convention(method) (Int, @thick Gizmo.Type) -> @owned Optional<Gizmo>
diff --git a/test/SILGen/opaque_ownership.swift b/test/SILGen/opaque_ownership.swift
index e14ce6f..6254e36 100644
--- a/test/SILGen/opaque_ownership.swift
+++ b/test/SILGen/opaque_ownership.swift
@@ -44,7 +44,7 @@
// Test unsafe_bitwise_cast nontrivial ownership.
// ---
// CHECK-LABEL: sil @$ss13unsafeBitCast_2toq_x_q_mtr0_lF : $@convention(thin) <T, U> (@in_guaranteed T, @thick U.Type) -> @out U {
-// CHECK: bb0([[ARG0:%.*]] : @guaranteed $T, [[ARG1:%.*]] : @trivial $@thick U.Type):
+// CHECK: bb0([[ARG0:%.*]] : @guaranteed $T, [[ARG1:%.*]] : $@thick U.Type):
// CHECK: [[ARG_COPY:%.*]] = copy_value [[ARG0]] : $T
// CHECK: [[RESULT:%.*]] = unchecked_bitwise_cast [[ARG_COPY]] : $T to $U
// CHECK: [[RESULT_COPY:%.*]] = copy_value [[RESULT]] : $U
@@ -150,10 +150,10 @@
}
}
-// Test ownership of multi-case Enum values in the context of @trivial to @in thunks.
+// Test ownership of multi-case Enum values in the context of to @in thunks.
// ---
// CHECK-LABEL: sil shared [transparent] [serialized] [thunk] @$ss17FloatingPointSignOSQsSQ2eeoiySbx_xtFZTW : $@convention(witness_method: Equatable) (@in_guaranteed FloatingPointSign, @in_guaranteed FloatingPointSign, @thick FloatingPointSign.Type) -> Bool {
-// CHECK: bb0(%0 : @trivial $FloatingPointSign, %1 : @trivial $FloatingPointSign, %2 : @trivial $@thick FloatingPointSign.Type):
+// CHECK: bb0(%0 : $FloatingPointSign, %1 : $FloatingPointSign, %2 : $@thick FloatingPointSign.Type):
// CHECK: %3 = function_ref @$ss2eeoiySbx_xtSYRzSQ8RawValueRpzlF : $@convention(thin) <τ_0_0 where τ_0_0 : RawRepresentable, τ_0_0.RawValue : Equatable> (@in_guaranteed τ_0_0, @in_guaranteed τ_0_0) -> Bool
// CHECK: %4 = apply %3<FloatingPointSign>(%0, %1) : $@convention(thin) <τ_0_0 where τ_0_0 : RawRepresentable, τ_0_0.RawValue : Equatable> (@in_guaranteed τ_0_0, @in_guaranteed τ_0_0) -> Bool
// CHECK: return %4 : $Bool
diff --git a/test/SILGen/opaque_values_silgen_lib.swift b/test/SILGen/opaque_values_silgen_lib.swift
index 70d529a..5294e08 100644
--- a/test/SILGen/opaque_values_silgen_lib.swift
+++ b/test/SILGen/opaque_values_silgen_lib.swift
@@ -42,7 +42,7 @@
// Test emitBuiltinCastReference
// ---
// CHECK-LABEL: sil hidden @$ss21s030__________refCast_2toq_x_q_mtr0_lF : $@convention(thin) <T, U> (@in_guaranteed T, @thick U.Type) -> @out U {
-// CHECK: bb0([[ARG:%.*]] : @guaranteed $T, %1 : @trivial $@thick U.Type):
+// CHECK: bb0([[ARG:%.*]] : @guaranteed $T, %1 : $@thick U.Type):
// CHECK: [[COPY:%.*]] = copy_value [[ARG]] : $T
// CHECK: [[SRC:%.*]] = alloc_stack $T
// CHECK: store [[COPY]] to [init] [[SRC]] : $*T
@@ -61,13 +61,13 @@
// Init of Empty protocol + Builtin.NativeObject enum (including opaque tuples as a return value)
// ---
// CHECK-LABEL: sil shared [transparent] @$ss9PAndSEnumO1AyABs6EmptyP_p_SStcABmF : $@convention(method) (@in EmptyP, @owned String, @thin PAndSEnum.Type) -> @out PAndSEnum {
-// CHECK: bb0([[ARG0:%.*]] : @owned $EmptyP, [[ARG1:%.*]] : @owned $String, [[ARG2:%.*]] : @trivial $@thin PAndSEnum.Type):
+// CHECK: bb0([[ARG0:%.*]] : @owned $EmptyP, [[ARG1:%.*]] : @owned $String, [[ARG2:%.*]] : $@thin PAndSEnum.Type):
// CHECK: [[RTUPLE:%.*]] = tuple ([[ARG0]] : $EmptyP, [[ARG1]] : $String)
// CHECK: [[RETVAL:%.*]] = enum $PAndSEnum, #PAndSEnum.A!enumelt.1, [[RTUPLE]] : $(EmptyP, String)
// CHECK: return [[RETVAL]] : $PAndSEnum
// CHECK-LABEL: } // end sil function '$ss9PAndSEnumO1AyABs6EmptyP_p_SStcABmF'
// CHECK-LABEL: sil shared [transparent] [thunk] @$ss9PAndSEnumO1AyABs6EmptyP_p_SStcABmFTc : $@convention(thin) (@thin PAndSEnum.Type) -> @owned @callee_guaranteed (@in_guaranteed EmptyP, @guaranteed String) -> @out PAndSEnum {
-// CHECK: bb0([[ARG:%.*]] : @trivial $@thin PAndSEnum.Type):
+// CHECK: bb0([[ARG:%.*]] : $@thin PAndSEnum.Type):
// CHECK: [[RETVAL:%.*]] = partial_apply [callee_guaranteed] {{.*}}([[ARG]]) : $@convention(method) (@in EmptyP, @owned String, @thin PAndSEnum.Type) -> @out PAndSEnum
// CHECK: [[CANONICAL_THUNK_FN:%.*]] = function_ref @$ss6EmptyP_pSSs9PAndSEnumOIegixr_sAA_pSSACIegngr_TR : $@convention(thin) (@in_guaranteed EmptyP, @guaranteed String, @guaranteed @callee_guaranteed (@in EmptyP, @owned String) -> @out PAndSEnum) -> @out PAndSEnum
// CHECK: [[CANONICAL_THUNK:%.*]] = partial_apply [callee_guaranteed] [[CANONICAL_THUNK_FN]]([[RETVAL]])
diff --git a/test/SILGen/optional-cast.swift b/test/SILGen/optional-cast.swift
index 1519692..ef6893c 100644
--- a/test/SILGen/optional-cast.swift
+++ b/test/SILGen/optional-cast.swift
@@ -155,7 +155,7 @@
// <rdar://problem/17013042> T! <-> T? conversions should not produce a diamond
// CHECK-LABEL: sil hidden @$s4main07opt_to_B8_trivialySiSgACF
-// CHECK: bb0(%0 : @trivial $Optional<Int>):
+// CHECK: bb0(%0 : $Optional<Int>):
// CHECK-NEXT: debug_value %0 : $Optional<Int>, let, name "x"
// CHECK-NEXT: return %0 : $Optional<Int>
// CHECK-NEXT:}
@@ -173,7 +173,7 @@
func opt_to_opt_reference(_ x : C!) -> C? { return x }
// CHECK-LABEL: sil hidden @$s4main07opt_to_B12_addressOnly{{[_0-9a-zA-Z]*}}F
-// CHECK: bb0(%0 : @trivial $*Optional<T>, %1 : @trivial $*Optional<T>):
+// CHECK: bb0(%0 : $*Optional<T>, %1 : $*Optional<T>):
// CHECK-NEXT: debug_value_addr %1 : $*Optional<T>, let, name "x"
// CHECK-NEXT: copy_addr %1 to [initialization] %0
// CHECK-NOT: destroy_addr %1
@@ -185,7 +185,7 @@
func f(_ a : T?) {}
// CHECK-LABEL: sil hidden @$s4main21TestAddressOnlyStructV8testCall{{[_0-9a-zA-Z]*}}F
- // CHECK: bb0(%0 : @trivial $*Optional<T>, %1 : @trivial $TestAddressOnlyStruct<T>):
+ // CHECK: bb0(%0 : $*Optional<T>, %1 : $TestAddressOnlyStruct<T>):
// CHECK: apply {{.*}}<T>(%0, %1)
func testCall(_ a : T!) {
f(a)
@@ -193,7 +193,7 @@
}
// CHECK-LABEL: sil hidden @$s4main35testContextualInitOfNonAddrOnlyTypeyySiSgF
-// CHECK: bb0(%0 : @trivial $Optional<Int>):
+// CHECK: bb0(%0 : $Optional<Int>):
// CHECK-NEXT: debug_value %0 : $Optional<Int>, let, name "a"
// CHECK-NEXT: [[X:%.*]] = alloc_box ${ var Optional<Int> }, var, name "x"
// CHECK-NEXT: [[PB:%.*]] = project_box [[X]]
diff --git a/test/SILGen/partial_apply_generic.swift b/test/SILGen/partial_apply_generic.swift
index 09e4b40..9f4282c 100644
--- a/test/SILGen/partial_apply_generic.swift
+++ b/test/SILGen/partial_apply_generic.swift
@@ -47,7 +47,7 @@
}
// CHECK-LABEL: sil shared [thunk] @$s21partial_apply_generic3FooP12instanceFunc{{[_0-9a-zA-Z]*}}F
-// CHECK: bb0([[ARG:%.*]] : @trivial $*Self):
+// CHECK: bb0([[ARG:%.*]] : $*Self):
// CHECK: [[REF:%.*]] = witness_method $Self, #Foo.instanceFunc!1
// CHECK-NEXT: [[STACK:%.*]] = alloc_stack $Self
// CHECK-NEXT: copy_addr [[ARG]] to [initialization] [[STACK]]
@@ -82,7 +82,7 @@
// curry thunk of Foo.makesSelfNonCanonical<A where ...> (A1) -> ()
// CHECK-LABEL: sil shared [thunk] @$s21partial_apply_generic3FooP21makesSelfNonCanonicalyyqd__7CuddlesQyd__RszAA5PandaRd__lFTc : $@convention(thin) <Self><T where Self == T.Cuddles, T : Panda> (@in_guaranteed Self) -> @owned @callee_guaranteed (@in_guaranteed T) -> () {
-// CHECK: bb0([[ARG:%.*]] : @trivial $*Self):
+// CHECK: bb0([[ARG:%.*]] : $*Self):
// CHECK: [[REF:%.*]] = witness_method $Self, #Foo.makesSelfNonCanonical!1 : <Self><T where Self == T.Cuddles, T : Panda> (Self) -> (T) -> () : $@convention(witness_method: Foo) <τ_0_0><τ_1_0 where τ_0_0 == τ_1_0.Cuddles, τ_1_0 : Panda> (@in_guaranteed τ_1_0, @in_guaranteed τ_0_0) -> ()
// CHECK-NEXT: [[STACK:%.*]] = alloc_stack $Self
// CHECK-NEXT: copy_addr [[ARG]] to [initialization] [[STACK]] : $*Self
diff --git a/test/SILGen/partial_apply_protocol.swift b/test/SILGen/partial_apply_protocol.swift
index 3df3c37..14cc282 100644
--- a/test/SILGen/partial_apply_protocol.swift
+++ b/test/SILGen/partial_apply_protocol.swift
@@ -42,7 +42,7 @@
}
// CHECK-LABEL: sil shared [transparent] [serializable] [reabstraction_thunk] @$sxIegr_22partial_apply_protocol8Clonable_pIegr_AaBRzlTR : $@convention(thin) <τ_0_0 where τ_0_0 : Clonable> (@guaranteed @callee_guaranteed () -> @out τ_0_0) -> @out Clonable
-// CHECK: bb0(%0 : @trivial $*Clonable, %1 : @guaranteed $@callee_guaranteed () -> @out τ_0_0):
+// CHECK: bb0(%0 : $*Clonable, %1 : @guaranteed $@callee_guaranteed () -> @out τ_0_0):
// CHECK-NEXT: [[INNER_RESULT:%.*]] = alloc_stack $τ_0_0
// CHECK-NEXT: apply %1([[INNER_RESULT]])
// CHECK-NEXT: [[OUTER_RESULT:%.*]] = init_existential_addr %0
@@ -54,7 +54,7 @@
// FIXME: This is horribly inefficient, too much alloc_stack / copy_addr!
// CHECK-LABEL: sil shared [transparent] [serializable] [reabstraction_thunk] @$sxSgIegr_22partial_apply_protocol8Clonable_pSgIegr_AbCRzlTR : $@convention(thin) <τ_0_0 where τ_0_0 : Clonable> (@guaranteed @callee_guaranteed () -> @out Optional<τ_0_0>) -> @out Optional<Clonable>
-// CHECK: bb0(%0 : @trivial $*Optional<Clonable>, %1 : @guaranteed $@callee_guaranteed () -> @out Optional<τ_0_0>):
+// CHECK: bb0(%0 : $*Optional<Clonable>, %1 : @guaranteed $@callee_guaranteed () -> @out Optional<τ_0_0>):
// CHECK-NEXT: [[INNER_RESULT:%.*]] = alloc_stack $Optional<τ_0_0>
// CHECK-NEXT: apply %1([[INNER_RESULT]])
// CHECK-NEXT: [[OUTER_RESULT:%.*]] = alloc_stack $Optional<Clonable>
@@ -132,7 +132,7 @@
}
// CHECK-LABEL: sil shared [transparent] [serializable] [reabstraction_thunk] @$sxqd__Iegnr_x22partial_apply_protocol8Clonable_pIegnr_AaBRd__r__lTR : $@convention(thin) <τ_0_0><τ_1_0 where τ_1_0 : Clonable> (@in_guaranteed τ_0_0, @guaranteed @callee_guaranteed (@in_guaranteed τ_0_0) -> @out τ_1_0) -> @out Clonable
-// CHECK: bb0(%0 : @trivial $*Clonable, %1 : @trivial $*τ_0_0, %2 : @guaranteed $@callee_guaranteed (@in_guaranteed τ_0_0) -> @out τ_1_0):
+// CHECK: bb0(%0 : $*Clonable, %1 : $*τ_0_0, %2 : @guaranteed $@callee_guaranteed (@in_guaranteed τ_0_0) -> @out τ_1_0):
// CHECK-NEXT: [[INNER_RESULT:%.*]] = alloc_stack $τ_1_0
// CHECK-NEXT: apply %2([[INNER_RESULT]], %1)
// CHECK-NEXT: [[OUTER_RESULT:%.*]] = init_existential_addr %0
@@ -142,14 +142,14 @@
// CHECK-NEXT: return [[EMPTY]]
// CHECK-LABEL: sil shared [transparent] [serializable] [reabstraction_thunk] @$sxqd__Iegr_Iegno_x22partial_apply_protocol8Clonable_pIegr_Iegno_AaBRd__r__lTR : $@convention(thin) <τ_0_0><τ_1_0 where τ_1_0 : Clonable> (@in_guaranteed τ_0_0, @guaranteed @callee_guaranteed (@in_guaranteed τ_0_0) -> @owned @callee_guaranteed () -> @out τ_1_0) -> @owned @callee_guaranteed () -> @out Clonable
-// CHECK: bb0(%0 : @trivial $*τ_0_0, %1 : @guaranteed $@callee_guaranteed (@in_guaranteed τ_0_0) -> @owned @callee_guaranteed () -> @out τ_1_0):
+// CHECK: bb0(%0 : $*τ_0_0, %1 : @guaranteed $@callee_guaranteed (@in_guaranteed τ_0_0) -> @owned @callee_guaranteed () -> @out τ_1_0):
// CHECK-NEXT: [[RES:%.*]] = apply %1(%0)
// CHECK: [[THUNK_FN:%.*]] = function_ref @$sqd__Iegr_22partial_apply_protocol8Clonable_pIegr_AaBRd__r__lTR
// CHECK-NEXT: [[RESULT:%.*]] = partial_apply [callee_guaranteed] [[THUNK_FN]]<τ_0_0, τ_1_0>([[RES]])
// CHECK-NEXT: return [[RESULT]]
// CHECK-LABEL: sil shared [transparent] [serializable] [reabstraction_thunk] @$sqd__Iegr_22partial_apply_protocol8Clonable_pIegr_AaBRd__r__lTR : $@convention(thin) <τ_0_0><τ_1_0 where τ_1_0 : Clonable> (@guaranteed @callee_guaranteed () -> @out τ_1_0) -> @out Clonable {
-// CHECK: bb0(%0 : @trivial $*Clonable, %1 : @guaranteed $@callee_guaranteed () -> @out τ_1_0):
+// CHECK: bb0(%0 : $*Clonable, %1 : @guaranteed $@callee_guaranteed () -> @out τ_1_0):
// CHECK-NEXT: [[INNER_RESULT:%.*]] = alloc_stack $τ_1_0
// CHECK-NEXT: apply %1([[INNER_RESULT]])
// CHECK-NEXT: [[OUTER_RESULT:%.*]] = init_existential_addr %0
diff --git a/test/SILGen/partial_apply_super.swift b/test/SILGen/partial_apply_super.swift
index cce3f6d..d86ab40 100644
--- a/test/SILGen/partial_apply_super.swift
+++ b/test/SILGen/partial_apply_super.swift
@@ -79,7 +79,7 @@
}
// CHECK-LABEL: sil hidden @$s19partial_apply_super5ChildC25callFinalSuperClassMethodyyFZ : $@convention(method) (@thick Child.Type) -> ()
- // CHECK: bb0([[ARG:%.*]] : @trivial $@thick Child.Type):
+ // CHECK: bb0([[ARG:%.*]] : $@thick Child.Type):
// CHECK: [[CASTED_SELF:%.*]] = upcast [[ARG]] : $@thick Child.Type to $@thick Parent.Type
// CHECK: [[SUPER_METHOD:%.*]] = function_ref @$s19partial_apply_super6ParentC16finalClassMethodyyFZTc : $@convention(thin) (@thick Parent.Type) -> @owned @callee_guaranteed () -> ()
// CHECK: [[APPLIED_SELF:%.*]] = apply [[SUPER_METHOD]]([[CASTED_SELF]]) : $@convention(thin) (@thick Parent.Type) -> @owned @callee_guaranteed () -> ()
diff --git a/test/SILGen/pointer_conversion.swift b/test/SILGen/pointer_conversion.swift
index 5812a8e..74df8ef 100644
--- a/test/SILGen/pointer_conversion.swift
+++ b/test/SILGen/pointer_conversion.swift
@@ -22,7 +22,7 @@
func takesOptOptConstRawPointer(_ x: UnsafeRawPointer??, and: Int) {}
// CHECK-LABEL: sil hidden @$s18pointer_conversion0A9ToPointeryySpySiG_SPySiGSvtF
-// CHECK: bb0([[MP:%.*]] : @trivial $UnsafeMutablePointer<Int>, [[CP:%.*]] : @trivial $UnsafePointer<Int>, [[MRP:%.*]] : @trivial $UnsafeMutableRawPointer):
+// CHECK: bb0([[MP:%.*]] : $UnsafeMutablePointer<Int>, [[CP:%.*]] : $UnsafePointer<Int>, [[MRP:%.*]] : $UnsafeMutableRawPointer):
func pointerToPointer(_ mp: UnsafeMutablePointer<Int>,
_ cp: UnsafePointer<Int>, _ mrp: UnsafeMutableRawPointer) {
@@ -319,7 +319,7 @@
// CHECK: [[OPTPTR:%.*]] = enum $Optional<UnsafePointer<Int>>, #Optional.some!enumelt.1, [[DEP]]
// CHECK: dealloc_stack [[TEMP]]
// CHECK: br [[CONT_BB:bb[0-9]+]]([[OPTPTR]] : $Optional<UnsafePointer<Int>>, [[OWNER]] : $Optional<AnyObject>)
- // CHECK: [[CONT_BB]]([[OPTPTR:%.*]] : @trivial $Optional<UnsafePointer<Int>>, [[OWNER:%.*]] : @owned $Optional<AnyObject>):
+ // CHECK: [[CONT_BB]]([[OPTPTR:%.*]] : $Optional<UnsafePointer<Int>>, [[OWNER:%.*]] : @owned $Optional<AnyObject>):
// CHECK: [[OPTDEP:%.*]] = mark_dependence [[OPTPTR]] : $Optional<UnsafePointer<Int>> on [[OWNER]]
// CHECK: [[TAKES:%.*]] = function_ref @$s18pointer_conversion20takesOptConstPointer_3andySPySiGSg_SitF
// CHECK: apply [[TAKES]]([[OPTDEP]], [[RESULT1]])
@@ -351,11 +351,11 @@
// CHECK: [[OPTPTR:%.*]] = enum $Optional<UnsafePointer<Int>>, #Optional.some!enumelt.1, [[DEP]]
// CHECK: dealloc_stack [[TEMP]]
// CHECK: br [[SOME_SOME_CONT_BB:bb[0-9]+]]([[OPTPTR]] : $Optional<UnsafePointer<Int>>, [[OWNER]] : $Optional<AnyObject>)
- // CHECK: [[SOME_SOME_CONT_BB]]([[OPTPTR:%.*]] : @trivial $Optional<UnsafePointer<Int>>, [[OWNER:%.*]] : @owned $Optional<AnyObject>):
+ // CHECK: [[SOME_SOME_CONT_BB]]([[OPTPTR:%.*]] : $Optional<UnsafePointer<Int>>, [[OWNER:%.*]] : @owned $Optional<AnyObject>):
// CHECK: [[OPTDEP:%.*]] = mark_dependence [[OPTPTR]] : $Optional<UnsafePointer<Int>> on [[OWNER]]
// CHECK: [[OPTOPTPTR:%.*]] = enum $Optional<Optional<UnsafePointer<Int>>>, #Optional.some!enumelt.1, [[OPTDEP]]
// CHECK: br [[SOME_CONT_BB:bb[0-9]+]]([[OPTOPTPTR]] : $Optional<Optional<UnsafePointer<Int>>>, [[OWNER]] : $Optional<AnyObject>)
- // CHECK: [[SOME_CONT_BB]]([[OPTOPTPTR:%.*]] : @trivial $Optional<Optional<UnsafePointer<Int>>>, [[OWNER:%.*]] : @owned $Optional<AnyObject>):
+ // CHECK: [[SOME_CONT_BB]]([[OPTOPTPTR:%.*]] : $Optional<Optional<UnsafePointer<Int>>>, [[OWNER:%.*]] : @owned $Optional<AnyObject>):
// CHECK: [[OPTOPTDEP:%.*]] = mark_dependence [[OPTOPTPTR]] : $Optional<Optional<UnsafePointer<Int>>> on [[OWNER]]
// CHECK: [[TAKES:%.*]] = function_ref @$s18pointer_conversion08takesOptD12ConstPointer_3andySPySiGSgSg_SitF
// CHECK: apply [[TAKES]]([[OPTOPTDEP]], [[RESULT1]])
@@ -388,7 +388,7 @@
// CHECK: [[OPTPTR:%.*]] = enum $Optional<UnsafeRawPointer>, #Optional.some!enumelt.1, [[DEP]]
// CHECK: dealloc_stack [[TEMP]]
// CHECK: br [[CONT_BB:bb[0-9]+]]([[OPTPTR]] : $Optional<UnsafeRawPointer>, [[OWNER]] : $Optional<AnyObject>)
- // CHECK: [[CONT_BB]]([[OPTPTR:%.*]] : @trivial $Optional<UnsafeRawPointer>, [[OWNER:%.*]] : @owned $Optional<AnyObject>):
+ // CHECK: [[CONT_BB]]([[OPTPTR:%.*]] : $Optional<UnsafeRawPointer>, [[OWNER:%.*]] : @owned $Optional<AnyObject>):
// CHECK: [[OPTDEP:%.*]] = mark_dependence [[OPTPTR]] : $Optional<UnsafeRawPointer> on [[OWNER]]
// CHECK: [[TAKES:%.*]] = function_ref @$s18pointer_conversion23takesOptConstRawPointer_3andySVSg_SitF
// CHECK: apply [[TAKES]]([[OPTDEP]], [[RESULT1]])
@@ -420,11 +420,11 @@
// CHECK: [[OPTPTR:%.*]] = enum $Optional<UnsafeRawPointer>, #Optional.some!enumelt.1, [[DEP]]
// CHECK: dealloc_stack [[TEMP]]
// CHECK: br [[SOME_SOME_CONT_BB:bb[0-9]+]]([[OPTPTR]] : $Optional<UnsafeRawPointer>, [[OWNER]] : $Optional<AnyObject>)
- // CHECK: [[SOME_SOME_CONT_BB]]([[OPTPTR:%.*]] : @trivial $Optional<UnsafeRawPointer>, [[OWNER:%.*]] : @owned $Optional<AnyObject>):
+ // CHECK: [[SOME_SOME_CONT_BB]]([[OPTPTR:%.*]] : $Optional<UnsafeRawPointer>, [[OWNER:%.*]] : @owned $Optional<AnyObject>):
// CHECK: [[OPTDEP:%.*]] = mark_dependence [[OPTPTR]] : $Optional<UnsafeRawPointer> on [[OWNER]]
// CHECK: [[OPTOPTPTR:%.*]] = enum $Optional<Optional<UnsafeRawPointer>>, #Optional.some!enumelt.1, [[OPTDEP]]
// CHECK: br [[SOME_CONT_BB:bb[0-9]+]]([[OPTOPTPTR]] : $Optional<Optional<UnsafeRawPointer>>, [[OWNER]] : $Optional<AnyObject>)
- // CHECK: [[SOME_CONT_BB]]([[OPTOPTPTR:%.*]] : @trivial $Optional<Optional<UnsafeRawPointer>>, [[OWNER:%.*]] : @owned $Optional<AnyObject>):
+ // CHECK: [[SOME_CONT_BB]]([[OPTOPTPTR:%.*]] : $Optional<Optional<UnsafeRawPointer>>, [[OWNER:%.*]] : @owned $Optional<AnyObject>):
// CHECK: [[OPTOPTDEP:%.*]] = mark_dependence [[OPTOPTPTR]] : $Optional<Optional<UnsafeRawPointer>> on [[OWNER]]
// CHECK: [[TAKES:%.*]] = function_ref @$s18pointer_conversion08takesOptD15ConstRawPointer_3andySVSgSg_SitF
// CHECK: apply [[TAKES]]([[OPTOPTDEP]], [[RESULT1]])
diff --git a/test/SILGen/properties.swift b/test/SILGen/properties.swift
index f137c36..d153d83 100644
--- a/test/SILGen/properties.swift
+++ b/test/SILGen/properties.swift
@@ -8,7 +8,7 @@
func getInt() -> Int { return zero }
// CHECK-LABEL: sil hidden @{{.*}}physical_tuple_lvalue
-// CHECK: bb0(%0 : @trivial $Int):
+// CHECK: bb0(%0 : $Int):
func physical_tuple_lvalue(_ c: Int) {
var x : (Int, Int)
// CHECK: [[BOX:%[0-9]+]] = alloc_box ${ var (Int, Int) }
@@ -33,7 +33,7 @@
// CHECK-LABEL: sil hidden @$s10properties16tuple_assignment{{[_0-9a-zA-Z]*}}F
func tuple_assignment(_ a: inout Int, b: inout Int) {
- // CHECK: bb0([[A_ADDR:%[0-9]+]] : @trivial $*Int, [[B_ADDR:%[0-9]+]] : @trivial $*Int):
+ // CHECK: bb0([[A_ADDR:%[0-9]+]] : $*Int, [[B_ADDR:%[0-9]+]] : $*Int):
// CHECK: [[READ:%.*]] = begin_access [read] [unknown] [[B_ADDR]]
// CHECK: [[B:%[0-9]+]] = load [trivial] [[READ]]
// CHECK: [[READ:%.*]] = begin_access [read] [unknown] [[A_ADDR]]
@@ -47,7 +47,7 @@
// CHECK-LABEL: sil hidden @$s10properties18tuple_assignment_2{{[_0-9a-zA-Z]*}}F
func tuple_assignment_2(_ a: inout Int, b: inout Int, xy: (Int, Int)) {
- // CHECK: bb0([[A_ADDR:%[0-9]+]] : @trivial $*Int, [[B_ADDR:%[0-9]+]] : @trivial $*Int, [[X:%[0-9]+]] : @trivial $Int, [[Y:%[0-9]+]] : @trivial $Int):
+ // CHECK: bb0([[A_ADDR:%[0-9]+]] : $*Int, [[B_ADDR:%[0-9]+]] : $*Int, [[X:%[0-9]+]] : $Int, [[Y:%[0-9]+]] : $Int):
(a, b) = xy
// CHECK: [[XY2:%[0-9]+]] = tuple ([[X]] : $Int, [[Y]] : $Int)
// CHECK: ([[X:%[0-9]+]], [[Y:%[0-9]+]]) = destructure_tuple [[XY2]]
@@ -115,7 +115,7 @@
// CHECK-LABEL: sil hidden @$s10properties24physical_subclass_lvalue{{[_0-9a-zA-Z]*}}F
func physical_subclass_lvalue(_ r: RefSubclass, a: Int) {
- // CHECK: bb0([[ARG1:%.*]] : @guaranteed $RefSubclass, [[ARG2:%.*]] : @trivial $Int):
+ // CHECK: bb0([[ARG1:%.*]] : @guaranteed $RefSubclass, [[ARG2:%.*]] : $Int):
r.y = a
// CHECK: [[ARG1_COPY:%.*]] = copy_value [[ARG1]] : $RefSubclass
// CHECK: [[R_SUP:%[0-9]+]] = upcast [[ARG1_COPY]] : $RefSubclass to $Ref
@@ -172,7 +172,7 @@
// CHECK-LABEL: sil hidden @$s10properties18logical_struct_set{{[_0-9a-zA-Z]*}}F
func logical_struct_set(_ value: inout Val, z: Int) {
- // CHECK: bb0([[VAL:%[0-9]+]] : @trivial $*Val, [[Z:%[0-9]+]] : @trivial $Int):
+ // CHECK: bb0([[VAL:%[0-9]+]] : $*Val, [[Z:%[0-9]+]] : $Int):
value.z = z
// CHECK: [[WRITE:%.*]] = begin_access [modify] [unknown] [[VAL]]
// CHECK: [[Z_SET_METHOD:%[0-9]+]] = function_ref @$s10properties3ValV1z{{[_0-9a-zA-Z]*}}vs
@@ -182,7 +182,7 @@
// CHECK-LABEL: sil hidden @$s10properties27logical_struct_in_tuple_set{{[_0-9a-zA-Z]*}}F
func logical_struct_in_tuple_set(_ value: inout (Int, Val), z: Int) {
- // CHECK: bb0([[VAL:%[0-9]+]] : @trivial $*(Int, Val), [[Z:%[0-9]+]] : @trivial $Int):
+ // CHECK: bb0([[VAL:%[0-9]+]] : $*(Int, Val), [[Z:%[0-9]+]] : $Int):
value.1.z = z
// CHECK: [[WRITE:%.*]] = begin_access [modify] [unknown] [[VAL]]
// CHECK: [[VAL_1:%[0-9]+]] = tuple_element_addr [[WRITE]] : {{.*}}, 1
@@ -193,7 +193,7 @@
// CHECK-LABEL: sil hidden @$s10properties29logical_struct_in_reftype_set{{[_0-9a-zA-Z]*}}F
func logical_struct_in_reftype_set(_ value: inout Val, z1: Int) {
- // CHECK: bb0([[VAL:%[0-9]+]] : @trivial $*Val, [[Z1:%[0-9]+]] : @trivial $Int):
+ // CHECK: bb0([[VAL:%[0-9]+]] : $*Val, [[Z1:%[0-9]+]] : $Int):
value.ref.val_prop.z_tuple.1 = z1
// -- val.ref
// CHECK: [[READ:%.*]] = begin_access [read] [unknown] [[VAL]]
@@ -238,7 +238,7 @@
// CHECK-LABEL: sil hidden @$s10properties27tuple_in_logical_struct_set{{[_0-9a-zA-Z]*}}F
func tuple_in_logical_struct_set(_ value: inout Val, z1: Int) {
- // CHECK: bb0([[VAL:%[0-9]+]] : @trivial $*Val, [[Z1:%[0-9]+]] : @trivial $Int):
+ // CHECK: bb0([[VAL:%[0-9]+]] : $*Val, [[Z1:%[0-9]+]] : $Int):
value.z_tuple.1 = z1
// CHECK: [[WRITE:%.*]] = begin_access [modify] [unknown] [[VAL]]
// CHECK: [[Z_TUPLE_MATERIALIZED:%[0-9]+]] = alloc_stack $(Int, Int)
@@ -298,7 +298,7 @@
return prop
}
// CHECK-: sil private [[PROP_GET_CLOSURE]]
-// CHECK: bb0(%{{[0-9]+}} : @trivial $Int):
+// CHECK: bb0(%{{[0-9]+}} : $Int):
func logical_generic_local_get<T>(_ x: Int, _: T) {
var prop1: Int {
@@ -335,7 +335,7 @@
// CHECK: apply [[FUNC_REF]](%0)
}
// CHECK: sil private @$s10properties26logical_local_captured_get{{.*}}vg
-// CHECK: bb0(%{{[0-9]+}} : @trivial $Int):
+// CHECK: bb0(%{{[0-9]+}} : $Int):
func inout_arg(_ x: inout Int) {}
@@ -355,7 +355,7 @@
* reuses temporaries */
// CHECK-LABEL: sil hidden @$s10properties17val_subscript_get{{[_0-9a-zA-Z]*}}F : $@convention(thin) (@guaranteed Val, Int) -> Float
-// CHECK: bb0([[VVAL:%[0-9]+]] : @guaranteed $Val, [[I:%[0-9]+]] : @trivial $Int):
+// CHECK: bb0([[VVAL:%[0-9]+]] : @guaranteed $Val, [[I:%[0-9]+]] : $Int):
func val_subscript_get(_ v: Val, i: Int) -> Float {
return v[i]
// CHECK: [[SUBSCRIPT_GET_METHOD:%[0-9]+]] = function_ref @$s10properties3ValV{{[_0-9a-zA-Z]*}}ig
@@ -364,7 +364,7 @@
}
// CHECK-LABEL: sil hidden @$s10properties17val_subscript_set{{[_0-9a-zA-Z]*}}F
-// CHECK: bb0(%0 : @guaranteed $Val, [[I:%[0-9]+]] : @trivial $Int, [[X:%[0-9]+]] : @trivial $Float):
+// CHECK: bb0(%0 : @guaranteed $Val, [[I:%[0-9]+]] : $Int, [[X:%[0-9]+]] : $Float):
func val_subscript_set(_ v: Val, i: Int, x: Float) {
var v = v
v[i] = x
@@ -482,7 +482,7 @@
a = x
a = x
- // CHECK: bb0(%0 : @trivial $Int, %1 : @trivial $@thin DidSetWillSetTests.Type):
+ // CHECK: bb0(%0 : $Int, %1 : $@thin DidSetWillSetTests.Type):
// CHECK: [[SELF:%.*]] = mark_uninitialized [rootself]
// CHECK: [[PB_SELF:%.*]] = project_box [[SELF]]
// CHECK: [[WRITE:%.*]] = begin_access [modify] [unknown] [[PB_SELF]]
@@ -496,7 +496,7 @@
var a: Int {
// CHECK-LABEL: sil private @$s10properties010DidSetWillC5TestsV1a{{[_0-9a-zA-Z]*}}vw
willSet(newA) {
- // CHECK: bb0(%0 : @trivial $Int, %1 : @trivial $*DidSetWillSetTests):
+ // CHECK: bb0(%0 : $Int, %1 : $*DidSetWillSetTests):
// CHECK-NEXT: debug_value %0
// CHECK-NEXT: debug_value_addr %1 : $*DidSetWillSetTests
@@ -531,7 +531,7 @@
// CHECK-LABEL: sil private @$s10properties010DidSetWillC5TestsV1a{{[_0-9a-zA-Z]*}}vW
didSet {
- // CHECK: bb0(%0 : @trivial $Int, %1 : @trivial $*DidSetWillSetTests):
+ // CHECK: bb0(%0 : $Int, %1 : $*DidSetWillSetTests):
// CHECK-NEXT: debug
// CHECK-NEXT: debug_value_addr %1 : $*DidSetWillSetTests
@@ -563,14 +563,14 @@
// This is the synthesized getter and setter for the willset/didset variable.
// CHECK-LABEL: sil hidden [transparent] @$s10properties010DidSetWillC5TestsV1aSivg
- // CHECK: bb0(%0 : @trivial $DidSetWillSetTests):
+ // CHECK: bb0(%0 : $DidSetWillSetTests):
// CHECK-NEXT: debug_value %0
// CHECK-NEXT: %2 = struct_extract %0 : $DidSetWillSetTests, #DidSetWillSetTests.a
// CHECK-NEXT: return %2 : $Int{{.*}} // id: %3
// CHECK-LABEL: sil hidden @$s10properties010DidSetWillC5TestsV1aSivs
- // CHECK: bb0(%0 : @trivial $Int, %1 : @trivial $*DidSetWillSetTests):
+ // CHECK: bb0(%0 : $Int, %1 : $*DidSetWillSetTests):
// CHECK-NEXT: debug_value %0
// CHECK-NEXT: debug_value_addr %1
@@ -706,7 +706,7 @@
localproperty = arg
// Alloc and initialize the property to the argument value.
- // CHECK: bb0([[ARG:%[0-9]+]] : @trivial $Int)
+ // CHECK: bb0([[ARG:%[0-9]+]] : $Int)
// CHECK: [[BOX:%[0-9]+]] = alloc_box ${ var Int }
// CHECK: [[PB:%.*]] = project_box [[BOX]]
// CHECK: store [[ARG]] to [trivial] [[PB]]
@@ -716,7 +716,7 @@
// Ensure that setting the variable from within its own didSet doesn't recursively call didSet.
// CHECK-LABEL: sil private @$s10properties24local_observing_property{{[_0-9a-zA-Z]*}}SiF13localproperty{{[_0-9a-zA-Z]*}}SivW
-// CHECK: bb0(%0 : @trivial $Int, %1 : @guaranteed ${ var Int })
+// CHECK: bb0(%0 : $Int, %1 : @guaranteed ${ var Int })
// CHECK: [[POINTER:%.*]] = project_box %1 : ${ var Int }, 0
// CHECK: // function_ref properties.zero.unsafeMutableAddressor : Swift.Int
// CHECK-NEXT: [[ZEROFN:%.*]] = function_ref @$s10properties4zero{{[_0-9a-zA-Z]*}}vau
@@ -813,7 +813,7 @@
// CHECK: // setter of p #1 : Swift.Int in properties.propertyWithDidSetTakingOldValue()
// CHECK-NEXT: sil {{.*}} @$s10properties32propertyWithDidSetTakingOldValueyyF1pL_Sivs
-// CHECK: bb0([[ARG1:%.*]] : @trivial $Int, [[ARG2:%.*]] : @guaranteed ${ var Int }):
+// CHECK: bb0([[ARG1:%.*]] : $Int, [[ARG2:%.*]] : @guaranteed ${ var Int }):
// CHECK-NEXT: debug_value [[ARG1]] : $Int, let, name "newValue", argno 1
// CHECK-NEXT: [[ARG2_PB:%.*]] = project_box [[ARG2]]
// CHECK-NEXT: debug_value_addr [[ARG2_PB]] : $*Int, var, name "p", argno 2
diff --git a/test/SILGen/properties_swift4.swift b/test/SILGen/properties_swift4.swift
index aa80345..a45d855 100644
--- a/test/SILGen/properties_swift4.swift
+++ b/test/SILGen/properties_swift4.swift
@@ -15,7 +15,7 @@
var a: Int {
// CHECK-LABEL: sil private @$s10properties010DidSetWillC5TestsV1a{{[_0-9a-zA-Z]*}}vw
willSet(newA) {
- // CHECK: bb0(%0 : @trivial $Int, %1 : @trivial $*DidSetWillSetTests):
+ // CHECK: bb0(%0 : $Int, %1 : $*DidSetWillSetTests):
a = zero // reassign, but don't infinite loop.
diff --git a/test/SILGen/properties_swift5.swift b/test/SILGen/properties_swift5.swift
index 886dbc7..6775c9b 100644
--- a/test/SILGen/properties_swift5.swift
+++ b/test/SILGen/properties_swift5.swift
@@ -15,7 +15,7 @@
var a: Int {
// CHECK-LABEL: sil private @$s10properties010DidSetWillC5TestsV1a{{[_0-9a-zA-Z]*}}vw
willSet(newA) {
- // CHECK: bb0(%0 : @trivial $Int, %1 : @trivial $*DidSetWillSetTests):
+ // CHECK: bb0(%0 : $Int, %1 : $*DidSetWillSetTests):
a = zero // reassign, but don't infinite loop, as accessing on 'self'.
diff --git a/test/SILGen/property_abstraction.swift b/test/SILGen/property_abstraction.swift
index da76dc3..dd657c1 100644
--- a/test/SILGen/property_abstraction.swift
+++ b/test/SILGen/property_abstraction.swift
@@ -78,7 +78,7 @@
}
// CHECK-LABEL: sil hidden @$s20property_abstraction34getAddressOnlyReabstractedProperty{{[_0-9a-zA-Z]*}}F : $@convention(thin) (@in_guaranteed AddressOnlyLet<Int>) -> @owned @callee_guaranteed (Int) -> Int
-// CHECK: bb0([[ARG:%.*]] : @trivial $*AddressOnlyLet<Int>):
+// CHECK: bb0([[ARG:%.*]] : $*AddressOnlyLet<Int>):
// CHECK: [[CLOSURE_ADDR:%.*]] = struct_element_addr {{%.*}} : $*AddressOnlyLet<Int>, #AddressOnlyLet.f
// CHECK: [[CLOSURE_ORIG:%.*]] = load [copy] [[CLOSURE_ADDR]]
// CHECK: [[REABSTRACT:%.*]] = function_ref
@@ -134,7 +134,7 @@
factory.builder = { return MyClass() }
}
// CHECK: sil hidden @$s20property_abstraction10setBuilder{{[_0-9a-zA-Z]*}}F : $@convention(thin) <F where F : Factory, F.Product == MyClass> (@inout F) -> ()
-// CHECK: bb0(%0 : @trivial $*F):
+// CHECK: bb0(%0 : $*F):
// CHECK: [[F0:%.*]] = function_ref @$s20property_abstraction10setBuilder{{[_0-9a-zA-Z]*}} : $@convention(thin) () -> @owned MyClass
// CHECK: [[F1:%.*]] = thin_to_thick_function [[F0]]
// CHECK: [[REABSTRACTOR:%.*]] = function_ref @$s{{.*}}TR :
diff --git a/test/SILGen/property_behavior_init.swift b/test/SILGen/property_behavior_init.swift
index 91c4aac..ddc786a 100644
--- a/test/SILGen/property_behavior_init.swift
+++ b/test/SILGen/property_behavior_init.swift
@@ -25,7 +25,7 @@
// var xx: (Int, Int) __behavior diBehavior
// CHECK-LABEL: sil hidden @$s22property_behavior_init3FooV{{[_0-9a-zA-Z]*}}fC
- // CHECK: bb0([[X:%.*]] : @trivial $Int,
+ // CHECK: bb0([[X:%.*]] : $Int,
init(x: Int) {
// CHECK: [[MARKED_SELF_BOX:%.*]] = mark_uninitialized [rootself]
// CHECK: [[PB_BOX:%.*]] = project_box [[MARKED_SELF_BOX]]
diff --git a/test/SILGen/protocol_extensions.swift b/test/SILGen/protocol_extensions.swift
index 5beaf58..460af0e 100644
--- a/test/SILGen/protocol_extensions.swift
+++ b/test/SILGen/protocol_extensions.swift
@@ -12,7 +12,7 @@
extension P1 {
// CHECK-LABEL: sil hidden @$s19protocol_extensions2P1PAAE6extP1a{{[_0-9a-zA-Z]*}}F : $@convention(method) <Self where Self : P1> (@in_guaranteed Self) -> () {
- // CHECK: bb0([[SELF:%[0-9]+]] : @trivial $*Self):
+ // CHECK: bb0([[SELF:%[0-9]+]] : $*Self):
func extP1a() {
// CHECK: [[WITNESS:%[0-9]+]] = witness_method $Self, #P1.reqP1a!1 : {{.*}} : $@convention(witness_method: P1) <τ_0_0 where τ_0_0 : P1> (@in_guaranteed τ_0_0) -> ()
// CHECK-NEXT: apply [[WITNESS]]<Self>([[SELF]]) : $@convention(witness_method: P1) <τ_0_0 where τ_0_0 : P1> (@in_guaranteed τ_0_0) -> ()
@@ -21,7 +21,7 @@
}
// CHECK-LABEL: sil @$s19protocol_extensions2P1PAAE6extP1b{{[_0-9a-zA-Z]*}}F : $@convention(method) <Self where Self : P1> (@in_guaranteed Self) -> () {
- // CHECK: bb0([[SELF:%[0-9]+]] : @trivial $*Self):
+ // CHECK: bb0([[SELF:%[0-9]+]] : $*Self):
public func extP1b() {
// CHECK: [[FN:%[0-9]+]] = function_ref @$s19protocol_extensions2P1PAAE6extP1a{{[_0-9a-zA-Z]*}}F : $@convention(method) <τ_0_0 where τ_0_0 : P1> (@in_guaranteed τ_0_0) -> ()
// CHECK-NEXT: apply [[FN]]<Self>([[SELF]]) : $@convention(method) <τ_0_0 where τ_0_0 : P1> (@in_guaranteed τ_0_0) -> ()
@@ -41,7 +41,7 @@
// But here we have to do a witness method call:
// CHECK-LABEL: sil hidden @$s19protocol_extensions2P1PAAE13callSubscript{{[_0-9a-zA-Z]*}}F
- // CHECK: bb0(%0 : @trivial $*Self):
+ // CHECK: bb0(%0 : $*Self):
// CHECK: witness_method $Self, #P1.subscript!getter.1
// CHECK: return
return self[0]
@@ -71,7 +71,7 @@
// (modify test from above)
// CHECK-LABEL: sil private [transparent] [thunk] @$s19protocol_extensions1CCAA2P1A2aDPyS2iciMTW
-// CHECK: bb0(%0 : @trivial $Int, %1 : @trivial $*τ_0_0):
+// CHECK: bb0(%0 : $Int, %1 : $*τ_0_0):
// CHECK: function_ref @$s19protocol_extensions2P1PAAEyS2icig
// CHECK: return
@@ -97,7 +97,7 @@
func inout_func(_ n: inout Int) {}
// CHECK-LABEL: sil hidden @$s19protocol_extensions5testD_2dd1dyAA10MetaHolderV_AA1DCmAHtF : $@convention(thin) (MetaHolder, @thick D.Type, @guaranteed D) -> ()
-// CHECK: bb0([[M:%[0-9]+]] : @trivial $MetaHolder, [[DD:%[0-9]+]] : @trivial $@thick D.Type, [[D:%[0-9]+]] : @guaranteed $D):
+// CHECK: bb0([[M:%[0-9]+]] : $MetaHolder, [[DD:%[0-9]+]] : $@thick D.Type, [[D:%[0-9]+]] : @guaranteed $D):
func testD(_ m: MetaHolder, dd: D.Type, d: D) {
// CHECK: [[D2:%[0-9]+]] = alloc_box ${ var D }
// CHECK: [[RESULT:%.*]] = project_box [[D2]]
@@ -497,7 +497,7 @@
}
// CHECK-LABEL: sil hidden @$s19protocol_extensions17testExistentials1{{[_0-9a-zA-Z]*}}F
-// CHECK: bb0([[P:%[0-9]+]] : @trivial $*P1, [[B:%[0-9]+]] : @trivial $Bool, [[I:%[0-9]+]] : @trivial $Int64):
+// CHECK: bb0([[P:%[0-9]+]] : $*P1, [[B:%[0-9]+]] : $Bool, [[I:%[0-9]+]] : $Int64):
func testExistentials1(_ p1: P1, b: Bool, i: Int64) {
// CHECK: [[POPENED:%[0-9]+]] = open_existential_addr immutable_access [[P]] : $*P1 to $*@opened([[UUID:".*"]])
// CHECK: [[F1:%[0-9]+]] = function_ref @$s19protocol_extensions2P1PAAE2f1{{[_0-9a-zA-Z]*}}F
@@ -523,7 +523,7 @@
}
// CHECK-LABEL: sil hidden @$s19protocol_extensions17testExistentials2{{[_0-9a-zA-Z]*}}F
-// CHECK: bb0([[P:%[0-9]+]] : @trivial $*P1):
+// CHECK: bb0([[P:%[0-9]+]] : $*P1):
func testExistentials2(_ p1: P1) {
// CHECK: [[P1A:%[0-9]+]] = alloc_box ${ var P1 }
// CHECK: [[PB:%.*]] = project_box [[P1A]]
@@ -535,7 +535,7 @@
}
// CHECK-LABEL: sil hidden @$s19protocol_extensions23testExistentialsGetters{{[_0-9a-zA-Z]*}}F
-// CHECK: bb0([[P:%[0-9]+]] : @trivial $*P1):
+// CHECK: bb0([[P:%[0-9]+]] : $*P1):
func testExistentialsGetters(_ p1: P1) {
// CHECK: [[POPENED:%[0-9]+]] = open_existential_addr immutable_access [[P]] : $*P1 to $*@opened([[UUID:".*"]]) P1
// CHECK: copy_addr [[POPENED]] to [initialization] [[POPENED_COPY:%.*]] :
@@ -551,7 +551,7 @@
}
// CHECK-LABEL: sil hidden @$s19protocol_extensions22testExistentialSetters{{[_0-9a-zA-Z]*}}F
-// CHECK: bb0([[P:%[0-9]+]] : @trivial $*P1, [[B:%[0-9]+]] : @trivial $Bool):
+// CHECK: bb0([[P:%[0-9]+]] : $*P1, [[B:%[0-9]+]] : $Bool):
func testExistentialSetters(_ p1: P1, b: Bool) {
var p1 = p1
// CHECK: [[PBOX:%[0-9]+]] = alloc_box ${ var P1 }
@@ -584,7 +584,7 @@
}
// CHECK-LABEL: sil hidden @$s19protocol_extensions29testLogicalExistentialSetters{{[_0-9a-zA-Z]*}}F
-// CHECK: bb0([[HASP1:%[0-9]+]] : @trivial $*HasAP1, [[B:%[0-9]+]] : @trivial $Bool)
+// CHECK: bb0([[HASP1:%[0-9]+]] : $*HasAP1, [[B:%[0-9]+]] : $Bool)
func testLogicalExistentialSetters(_ hasAP1: HasAP1, _ b: Bool) {
var hasAP1 = hasAP1
// CHECK: [[HASP1_BOX:%[0-9]+]] = alloc_box ${ var HasAP1 }
@@ -691,7 +691,7 @@
extension InitRequirement {
// CHECK-LABEL: sil hidden @$s19protocol_extensions15InitRequirementPAAE1dxAA1DC_tcfC : $@convention(method) <Self where Self : InitRequirement> (@owned D, @thick Self.Type) -> @out Self
- // CHECK: bb0([[OUT:%.*]] : @trivial $*Self, [[ARG:%.*]] : @owned $D, [[SELF_TYPE:%.*]] : @trivial $@thick Self.Type):
+ // CHECK: bb0([[OUT:%.*]] : $*Self, [[ARG:%.*]] : @owned $D, [[SELF_TYPE:%.*]] : $@thick Self.Type):
init(d: D) {
// CHECK: [[SELF_BOX:%.*]] = alloc_box
// CHECK-NEXT: [[UNINIT_SELF:%.*]] = mark_uninitialized [delegatingself] [[SELF_BOX]]
@@ -713,7 +713,7 @@
}
// CHECK-LABEL: sil hidden @$s19protocol_extensions15InitRequirementPAAE2d2xAA1DC_tcfC : $@convention(method)
- // CHECK: bb0([[OUT:%.*]] : @trivial $*Self, [[ARG:%.*]] : @owned $D, [[SELF_TYPE:%.*]] : @trivial $@thick Self.Type):
+ // CHECK: bb0([[OUT:%.*]] : $*Self, [[ARG:%.*]] : @owned $D, [[SELF_TYPE:%.*]] : $@thick Self.Type):
init(d2: D) {
// CHECK: [[SELF_BOX:%.*]] = alloc_box
// CHECK-NEXT: [[UNINIT_SELF:%.*]] = mark_uninitialized [delegatingself] [[SELF_BOX]]
@@ -734,7 +734,7 @@
}
// CHECK-LABEL: sil hidden @$s19protocol_extensions15InitRequirementPAAE2c2xAA1CC_tcfC : $@convention(method)
- // CHECK: bb0([[OUT:%.*]] : @trivial $*Self, [[ARG:%.*]] : @owned $C, [[SELF_TYPE:%.*]] : @trivial $@thick Self.Type):
+ // CHECK: bb0([[OUT:%.*]] : $*Self, [[ARG:%.*]] : @owned $C, [[SELF_TYPE:%.*]] : $@thick Self.Type):
init(c2: C) {
// CHECK: [[SELF_BOX:%.*]] = alloc_box
// CHECK-NEXT: [[UNINIT_SELF:%.*]] = mark_uninitialized [delegatingself] [[SELF_BOX]]
@@ -764,7 +764,7 @@
extension ClassInitRequirement {
// CHECK-LABEL: sil hidden @$s19protocol_extensions20ClassInitRequirementPAAE{{[_0-9a-zA-Z]*}}fC : $@convention(method) <Self where Self : ClassInitRequirement> (@owned D, @thick Self.Type) -> @owned Self
- // CHECK: bb0([[ARG:%.*]] : @owned $D, [[SELF_TYPE:%.*]] : @trivial $@thick Self.Type):
+ // CHECK: bb0([[ARG:%.*]] : @owned $D, [[SELF_TYPE:%.*]] : $@thick Self.Type):
// CHECK: [[BORROWED_ARG:%.*]] = begin_borrow [[ARG]]
// CHECK: [[ARG_COPY:%.*]] = copy_value [[BORROWED_ARG]]
// CHECK: [[ARG_COPY_CAST:%.*]] = upcast [[ARG_COPY]]
@@ -791,7 +791,7 @@
extension ObjCInitRequirement {
// CHECK-LABEL: sil hidden @$s19protocol_extensions19ObjCInitRequirementPAAE{{[_0-9a-zA-Z]*}}fC : $@convention(method) <Self where Self : ObjCInitRequirement> (@owned OD, @thick Self.Type) -> @owned Self
- // CHECK: bb0([[ARG:%.*]] : @owned $OD, [[SELF_TYPE:%.*]] : @trivial $@thick Self.Type):
+ // CHECK: bb0([[ARG:%.*]] : @owned $OD, [[SELF_TYPE:%.*]] : $@thick Self.Type):
// CHECK: [[OBJC_SELF_TYPE:%.*]] = thick_to_objc_metatype [[SELF_TYPE]]
// CHECK: [[SELF:%.*]] = alloc_ref_dynamic [objc] [[OBJC_SELF_TYPE]] : $@objc_metatype Self.Type, $Self
// CHECK: [[BORROWED_ARG_1:%.*]] = begin_borrow [[ARG]]
@@ -818,7 +818,7 @@
extension ProtoDelegatesToObjC where Self : ObjCInitClass {
// CHECK-LABEL: sil hidden @$s19protocol_extensions20ProtoDelegatesToObjCPA2A0F10CInitClassC{{[_0-9a-zA-Z]*}}fC
- // CHECK: bb0([[STR:%[0-9]+]] : @owned $String, [[SELF_META:%[0-9]+]] : @trivial $@thick Self.Type):
+ // CHECK: bb0([[STR:%[0-9]+]] : @owned $String, [[SELF_META:%[0-9]+]] : $@thick Self.Type):
init(string: String) {
// CHECK: [[SELF_BOX:%[0-9]+]] = alloc_box $<τ_0_0 where τ_0_0 : ObjCInitClass, τ_0_0 : ProtoDelegatesToObjC> { var τ_0_0 } <Self>
// CHECK: [[MARKED_SELF_BOX:%[0-9]+]] = mark_uninitialized [delegatingself] [[SELF_BOX]]
@@ -842,7 +842,7 @@
extension ProtoDelegatesToRequired where Self : RequiredInitClass {
// CHECK-LABEL: sil hidden @$s19protocol_extensions24ProtoDelegatesToRequiredPA2A0F9InitClassC{{[_0-9a-zA-Z]*}}fC
- // CHECK: bb0([[STR:%[0-9]+]] : @owned $String, [[SELF_META:%[0-9]+]] : @trivial $@thick Self.Type):
+ // CHECK: bb0([[STR:%[0-9]+]] : @owned $String, [[SELF_META:%[0-9]+]] : $@thick Self.Type):
init(string: String) {
// CHECK: [[SELF_BOX:%[0-9]+]] = alloc_box $<τ_0_0 where τ_0_0 : RequiredInitClass, τ_0_0 : ProtoDelegatesToRequired> { var τ_0_0 } <Self>
// CHECK: [[MARKED_SELF_BOX:%[0-9]+]] = mark_uninitialized [delegatingself] [[SELF_BOX]]
diff --git a/test/SILGen/protocols.swift b/test/SILGen/protocols.swift
index faf84fc..885bb51 100644
--- a/test/SILGen/protocols.swift
+++ b/test/SILGen/protocols.swift
@@ -21,7 +21,7 @@
}
// CHECK-LABEL: sil hidden @{{.*}}use_subscript_rvalue_get
-// CHECK: bb0(%0 : @trivial $Int):
+// CHECK: bb0(%0 : $Int):
// CHECK: [[GLOB:%[0-9]+]] = global_addr @$s9protocols16subscriptableGetAA013SubscriptableC0_pvp : $*SubscriptableGet
// CHECK: [[READ:%.*]] = begin_access [read] [dynamic] [[GLOB]] : $*SubscriptableGet
// CHECK: [[PROJ:%[0-9]+]] = open_existential_addr immutable_access [[READ]] : $*SubscriptableGet to $*[[OPENED:@opened(.*) SubscriptableGet]]
@@ -43,7 +43,7 @@
}
// CHECK-LABEL: sil hidden @{{.*}}use_subscript_lvalue_get
-// CHECK: bb0(%0 : @trivial $Int):
+// CHECK: bb0(%0 : $Int):
// CHECK: [[GLOB:%[0-9]+]] = global_addr @$s9protocols19subscriptableGetSetAA013SubscriptablecD0_pvp : $*SubscriptableGetSet
// CHECK: [[READ:%.*]] = begin_access [read] [dynamic] [[GLOB]] : $*SubscriptableGetSet
// CHECK: [[PROJ:%[0-9]+]] = open_existential_addr immutable_access [[READ]] : $*SubscriptableGetSet to $*[[OPENED:@opened(.*) SubscriptableGetSet]]
@@ -61,7 +61,7 @@
}
// CHECK-LABEL: sil hidden @{{.*}}use_subscript_lvalue_set
-// CHECK: bb0(%0 : @trivial $Int):
+// CHECK: bb0(%0 : $Int):
// CHECK: [[GLOB:%[0-9]+]] = global_addr @$s9protocols19subscriptableGetSetAA013SubscriptablecD0_pvp : $*SubscriptableGetSet
// CHECK: [[READ:%.*]] = begin_access [modify] [dynamic] [[GLOB]] : $*SubscriptableGetSet
// CHECK: [[PROJ:%[0-9]+]] = open_existential_addr mutable_access [[READ]] : $*SubscriptableGetSet to $*[[OPENED:@opened(.*) SubscriptableGetSet]]
@@ -77,7 +77,7 @@
return generic[idx]
}
// CHECK-LABEL: sil hidden @{{.*}}use_subscript_archetype_rvalue_get
-// CHECK: bb0(%0 : @trivial $*T, %1 : @trivial $Int):
+// CHECK: bb0(%0 : $*T, %1 : $Int):
// CHECK: [[STACK:%[0-9]+]] = alloc_stack $T
// CHECK: copy_addr %0 to [initialization] [[STACK]]
// CHECK: [[METH:%[0-9]+]] = witness_method $T, #SubscriptableGet.subscript!getter.1
@@ -91,7 +91,7 @@
return generic[idx]
}
// CHECK-LABEL: sil hidden @{{.*}}use_subscript_archetype_lvalue_get
-// CHECK: bb0(%0 : @trivial $*T, %1 : @trivial $Int):
+// CHECK: bb0(%0 : $*T, %1 : $Int):
// CHECK: [[READ:%.*]] = begin_access [read] [unknown] %0 : $*T
// CHECK: [[GUARANTEEDSTACK:%[0-9]+]] = alloc_stack $T
// CHECK: copy_addr [[READ]] to [initialization] [[GUARANTEEDSTACK]] : $*T
@@ -107,7 +107,7 @@
generic[idx] = idx
}
// CHECK-LABEL: sil hidden @{{.*}}use_subscript_archetype_lvalue_set
-// CHECK: bb0(%0 : @trivial $*T, %1 : @trivial $Int):
+// CHECK: bb0(%0 : $*T, %1 : $Int):
// CHECK: [[WRITE:%.*]] = begin_access [modify] [unknown] %0 : $*T
// CHECK: [[METH:%[0-9]+]] = witness_method $T, #SubscriptableGetSet.subscript!setter.1
// CHECK-NEXT: apply [[METH]]<T>(%1, %1, [[WRITE]])
@@ -161,7 +161,7 @@
}
// CHECK-LABEL: sil hidden @{{.*}}use_property_lvalue_set
-// CHECK: bb0(%0 : @trivial $Int):
+// CHECK: bb0(%0 : $Int):
// CHECK: [[GLOB:%[0-9]+]] = global_addr @$s9protocols14propertyGetSetAA24PropertyWithGetterSetter_pvp : $*PropertyWithGetterSetter
// CHECK: [[READ:%.*]] = begin_access [modify] [dynamic] [[GLOB]] : $*PropertyWithGetterSetter
// CHECK: [[PROJ:%[0-9]+]] = open_existential_addr mutable_access [[READ]] : $*PropertyWithGetterSetter to $*[[OPENED:@opened(.*) PropertyWithGetterSetter]]
@@ -177,7 +177,7 @@
}
// CHECK-LABEL: sil hidden @{{.*}}use_property_archetype_rvalue_get
-// CHECK: bb0(%0 : @trivial $*T):
+// CHECK: bb0(%0 : $*T):
// CHECK: [[STACK:%[0-9]+]] = alloc_stack $T
// CHECK: copy_addr %0 to [initialization] [[STACK]]
// CHECK: [[METH:%[0-9]+]] = witness_method $T, #PropertyWithGetter.a!getter.1
@@ -192,7 +192,7 @@
}
// CHECK-LABEL: sil hidden @{{.*}}use_property_archetype_lvalue_get
-// CHECK: bb0(%0 : @trivial $*T):
+// CHECK: bb0(%0 : $*T):
// CHECK: [[STACK:%[0-9]+]] = alloc_stack $T
// CHECK: copy_addr %0 to [initialization] [[STACK]] : $*T
// CHECK: [[METH:%[0-9]+]] = witness_method $T, #PropertyWithGetterSetter.b!getter.1
@@ -206,7 +206,7 @@
generic.b = v
}
// CHECK-LABEL: sil hidden @{{.*}}use_property_archetype_lvalue_set
-// CHECK: bb0(%0 : @trivial $*T, %1 : @trivial $Int):
+// CHECK: bb0(%0 : $*T, %1 : $Int):
// CHECK: [[WRITE:%.*]] = begin_access [modify] [unknown] %0 : $*T
// CHECK: [[METH:%[0-9]+]] = witness_method $T, #PropertyWithGetterSetter.b!setter.1
// CHECK-NEXT: apply [[METH]]<T>(%1, [[WRITE]])
@@ -233,7 +233,7 @@
// CHECK: sil hidden @$s9protocols29use_initializable_existential{{[_0-9a-zA-Z]*}}F
func use_initializable_existential(_ im: Initializable.Type, i: Int) {
-// CHECK: bb0([[IM:%[0-9]+]] : @trivial $@thick Initializable.Type, [[I:%[0-9]+]] : @trivial $Int):
+// CHECK: bb0([[IM:%[0-9]+]] : $@thick Initializable.Type, [[I:%[0-9]+]] : $Int):
// CHECK: [[ARCHETYPE_META:%[0-9]+]] = open_existential_metatype [[IM]] : $@thick Initializable.Type to $@thick (@opened([[N:".*"]]) Initializable).Type
// CHECK: [[TEMP_VALUE:%[0-9]+]] = alloc_stack $Initializable
// CHECK: [[INIT_WITNESS:%[0-9]+]] = witness_method $@opened([[N]]) Initializable, #Initializable.init!allocator.1 : {{.*}}, [[ARCHETYPE_META]]{{.*}} : $@convention(witness_method: Initializable) <τ_0_0 where τ_0_0 : Initializable> (Int, @thick τ_0_0.Type) -> @out τ_0_0
@@ -261,7 +261,7 @@
// Make sure we are generating a protocol witness that calls the class method on
// ClassWithGetter.
// CHECK-LABEL: sil private [transparent] [thunk] @$s9protocols15ClassWithGetterCAA08PropertycD0A2aDP1aSivgTW : $@convention(witness_method: PropertyWithGetter) (@in_guaranteed ClassWithGetter) -> Int {
-// CHECK: bb0([[C:%.*]] : @trivial $*ClassWithGetter):
+// CHECK: bb0([[C:%.*]] : $*ClassWithGetter):
// CHECK-NEXT: [[CCOPY_LOADED:%.*]] = load_borrow %0
// CHECK-NEXT: [[FUN:%.*]] = class_method [[CCOPY_LOADED]] : $ClassWithGetter, #ClassWithGetter.a!getter.1 : (ClassWithGetter) -> () -> Int, $@convention(method) (@guaranteed ClassWithGetter) -> Int
// CHECK-NEXT: apply [[FUN]]([[CCOPY_LOADED]])
@@ -284,7 +284,7 @@
}
// CHECK-LABEL: sil private [transparent] [thunk] @$s9protocols21ClassWithGetterSetterCAA08PropertycdE0A2aDP1bSivgTW : $@convention(witness_method: PropertyWithGetterSetter) (@in_guaranteed ClassWithGetterSetter) -> Int {
-// CHECK: bb0([[C:%.*]] : @trivial $*ClassWithGetterSetter):
+// CHECK: bb0([[C:%.*]] : $*ClassWithGetterSetter):
// CHECK-NEXT: [[CCOPY_LOADED:%.*]] = load_borrow %0
// CHECK-NEXT: [[FUN:%.*]] = class_method [[CCOPY_LOADED]] : $ClassWithGetterSetter, #ClassWithGetterSetter.b!getter.1 : (ClassWithGetterSetter) -> () -> Int, $@convention(method) (@guaranteed ClassWithGetterSetter) -> Int
// CHECK-NEXT: apply [[FUN]]([[CCOPY_LOADED]])
@@ -318,7 +318,7 @@
return a
}
// CHECK-LABEL: sil hidden @$s9protocols24StructWithStoredPropertyV011methodUsingE0SiyF
- // CHECK: bb0(%0 : @trivial $StructWithStoredProperty):
+ // CHECK: bb0(%0 : $StructWithStoredProperty):
// CHECK-NEXT: debug_value %0
// CHECK-NEXT: %2 = struct_extract %0 : $StructWithStoredProperty, #StructWithStoredProperty.a
// CHECK-NEXT: return %2 : $Int
@@ -335,7 +335,7 @@
// correctness.
//
// CHECK-LABEL: sil private [transparent] [thunk] @$s9protocols24StructWithStoredPropertyVAA0eC6GetterA2aDP1aSivgTW : $@convention(witness_method: PropertyWithGetter) (@in_guaranteed StructWithStoredProperty) -> Int {
-// CHECK: bb0([[C:%.*]] : @trivial $*StructWithStoredProperty):
+// CHECK: bb0([[C:%.*]] : $*StructWithStoredProperty):
// CHECK-NEXT: [[CCOPY_LOADED:%.*]] = load [trivial] [[C]]
// CHECK-NEXT: function_ref
// CHECK-NEXT: [[FUN:%.*]] = function_ref @$s9protocols24StructWithStoredPropertyV1aSivg : $@convention(method) (StructWithStoredProperty) -> Int
@@ -362,7 +362,7 @@
}
// CHECK-LABEL: sil private [transparent] [thunk] @$s9protocols29StructWithStoredClassPropertyVAA0fC6GetterA2aDP1aSivgTW : $@convention(witness_method: PropertyWithGetter) (@in_guaranteed StructWithStoredClassProperty) -> Int {
-// CHECK: bb0([[C:%.*]] : @trivial $*StructWithStoredClassProperty):
+// CHECK: bb0([[C:%.*]] : $*StructWithStoredClassProperty):
// CHECK-NEXT: [[CCOPY_LOADED:%.*]] = load_borrow [[C]]
// CHECK-NEXT: function_ref
// CHECK-NEXT: [[FUN:%.*]] = function_ref @$s9protocols29StructWithStoredClassPropertyV1aSivg : $@convention(method) (@guaranteed StructWithStoredClassProperty) -> Int
diff --git a/test/SILGen/read_accessor.swift b/test/SILGen/read_accessor.swift
index 282c87c..fe41cfd 100644
--- a/test/SILGen/read_accessor.swift
+++ b/test/SILGen/read_accessor.swift
@@ -150,7 +150,7 @@
}
// Key-path getter for TestKeyPath.readable
// CHECK-LABEL: sil shared [thunk] @$s13read_accessor11TestKeyPathV8readableSSvpACTK
-// CHECK: bb0(%0 : @trivial $*String, %1 : @trivial $*TestKeyPath):
+// CHECK: bb0(%0 : $*String, %1 : $*TestKeyPath):
// CHECK-NEXT: [[SELF:%.*]] = load [trivial] %1
// CHECK-NEXT: // function_ref
// CHECK-NEXT: [[READ:%.*]] = function_ref @$s13read_accessor11TestKeyPathV8readableSSvr
diff --git a/test/SILGen/same_type_abstraction.swift b/test/SILGen/same_type_abstraction.swift
index 71fd07c..fac6258 100644
--- a/test/SILGen/same_type_abstraction.swift
+++ b/test/SILGen/same_type_abstraction.swift
@@ -29,7 +29,7 @@
extension MyProtocol where Data == (ReadData, ReadData) {
// CHECK-LABEL: sil hidden @$s21same_type_abstraction10MyProtocolPAA8ReadDataQz_AEt0G0RtzrlE07currentG0AE_AEtyF : $@convention(method) <Self where Self : MyProtocol, Self.Data == (Self.ReadData, Self.ReadData)> (@in_guaranteed Self) -> (@out Self.ReadData, @out Self.ReadData)
func currentData() -> Data {
- // CHECK: bb0(%0 : @trivial $*Self.ReadData, %1 : @trivial $*Self.ReadData, %2 : @trivial $*Self):
+ // CHECK: bb0(%0 : $*Self.ReadData, %1 : $*Self.ReadData, %2 : $*Self):
// CHECK: [[READ_FN:%.*]] = witness_method $Self, #MyProtocol.readData!1 : {{.*}} : $@convention(witness_method: MyProtocol) <τ_0_0 where τ_0_0 : MyProtocol> (@in_guaranteed τ_0_0) -> @out τ_0_0.ReadData
// CHECK: apply [[READ_FN]]<Self>(%0, %2) : $@convention(witness_method: MyProtocol) <τ_0_0 where τ_0_0 : MyProtocol> (@in_guaranteed τ_0_0) -> @out τ_0_0.ReadData
// CHECK: [[READ_FN:%.*]] = witness_method $Self, #MyProtocol.readData!1 : {{.*}} : $@convention(witness_method: MyProtocol) <τ_0_0 where τ_0_0 : MyProtocol> (@in_guaranteed τ_0_0) -> @out τ_0_0.ReadData
diff --git a/test/SILGen/shared.swift b/test/SILGen/shared.swift
index 72048ec..97c1cee 100644
--- a/test/SILGen/shared.swift
+++ b/test/SILGen/shared.swift
@@ -9,7 +9,7 @@
// CHECK-LABEL: sil hidden @$s6shared0A10_arguments7trivial5value3refySih_AA14ValueAggregateVhAA03RefG0ChtF : $@convention(thin) (Int, @guaranteed ValueAggregate, @guaranteed RefAggregate) -> ()
func shared_arguments(trivial : __shared Int, value : __shared ValueAggregate, ref : __shared RefAggregate) {
- // CHECK: bb0([[TRIVIAL_VAL:%[0-9]+]] : @trivial $Int, [[VALUE_VAL:%[0-9]+]] : @guaranteed $ValueAggregate, [[REF_VAL:%[0-9]+]] : @guaranteed $RefAggregate):
+ // CHECK: bb0([[TRIVIAL_VAL:%[0-9]+]] : $Int, [[VALUE_VAL:%[0-9]+]] : @guaranteed $ValueAggregate, [[REF_VAL:%[0-9]+]] : @guaranteed $RefAggregate):
// CHECK: [[COPY_VALUE_VAL:%[0-9]+]] = copy_value [[VALUE_VAL]] : $ValueAggregate
// CHECK: [[COPY_REF_VAL:%[0-9]+]] = copy_value [[REF_VAL]] : $RefAggregate
// CHECK: [[OWNED_FUNC:%[0-9]+]] = function_ref @$s6shared15owned_arguments7trivial5value3refySi_AA14ValueAggregateVAA03RefH0CtF
@@ -20,7 +20,7 @@
// CHECK-LABEL: sil hidden @$s6shared15owned_arguments7trivial5value3refySi_AA14ValueAggregateVAA03RefH0CtF : $@convention(thin) (Int, @owned ValueAggregate, @owned RefAggregate) -> ()
func owned_arguments(trivial : Int, value : ValueAggregate, ref : RefAggregate) {
- // CHECK: bb0([[TRIVIAL_VAL:%[0-9]+]] : @trivial $Int, [[VALUE_VAL:%[0-9]+]] : @owned $ValueAggregate, [[REF_VAL:%[0-9]+]] : @owned $RefAggregate):
+ // CHECK: bb0([[TRIVIAL_VAL:%[0-9]+]] : $Int, [[VALUE_VAL:%[0-9]+]] : @owned $ValueAggregate, [[REF_VAL:%[0-9]+]] : @owned $RefAggregate):
// CHECK: [[BORROW_VALUE_VAL:%[0-9]+]] = begin_borrow [[VALUE_VAL]] : $ValueAggregate
// CHECK: [[BORROW_REF_VAL:%[0-9]+]] = begin_borrow [[REF_VAL]] : $RefAggregate
// CHECK: [[SHARED_FUNC:%[0-9]+]] = function_ref @$s6shared0A10_arguments7trivial5value3refySih_AA14ValueAggregateVhAA03RefG0ChtF
@@ -35,7 +35,7 @@
// CHECK-LABEL: sil hidden @$s6shared0A17_argument_capture7trivial5value3refySih_AA14ValueAggregateVhAA03RefH0ChtF : $@convention(thin) (Int, @guaranteed ValueAggregate, @guaranteed RefAggregate) -> ()
func shared_argument_capture(trivial : __shared Int, value : __shared ValueAggregate, ref : __shared RefAggregate) {
- // CHECK: bb0([[TRIVIAL_VAL:%[0-9]+]] : @trivial $Int, [[VALUE_VAL:%[0-9]+]] : @guaranteed $ValueAggregate, [[REF_VAL:%[0-9]+]] : @guaranteed $RefAggregate):
+ // CHECK: bb0([[TRIVIAL_VAL:%[0-9]+]] : $Int, [[VALUE_VAL:%[0-9]+]] : @guaranteed $ValueAggregate, [[REF_VAL:%[0-9]+]] : @guaranteed $RefAggregate):
// CHECK: [[CLO_1:%[0-9]+]] = function_ref @$s6shared0A17_argument_capture7trivial5value3refySih_AA14ValueAggregateVhAA03RefH0ChtFyyXEfU_
// CHECK: {{%.*}} = apply [[CLO_1]]([[TRIVIAL_VAL]], [[VALUE_VAL]], [[REF_VAL]]) : $@convention(thin) (Int, @guaranteed ValueAggregate, @guaranteed RefAggregate) -> ()
_ = {
@@ -53,7 +53,7 @@
// ======== FIRST CLOSURE ==========
// CHECK-LABEL: sil private @$s6shared0A17_argument_capture7trivial5value3refySih_AA14ValueAggregateVhAA03RefH0ChtFyyXEfU_ : $@convention(thin) (Int, @guaranteed ValueAggregate, @guaranteed RefAggregate) -> ()
- // CHECK: bb0([[TRIVIAL_VAL:%[0-9]+]] : @trivial $Int, [[VALUE_VAL:%[0-9]+]] : @guaranteed $ValueAggregate, [[REF_VAL:%[0-9]+]] : @guaranteed $RefAggregate):
+ // CHECK: bb0([[TRIVIAL_VAL:%[0-9]+]] : $Int, [[VALUE_VAL:%[0-9]+]] : @guaranteed $ValueAggregate, [[REF_VAL:%[0-9]+]] : @guaranteed $RefAggregate):
// CHECK: [[SHARED_CALL:%[0-9]+]] = function_ref @$s6shared0A10_arguments7trivial5value3refySih_AA14ValueAggregateVhAA03RefG0ChtF : $@convention(thin) (Int, @guaranteed ValueAggregate, @guaranteed RefAggregate) -> ()
// CHECK: {{%.*}} = apply [[SHARED_CALL]]([[TRIVIAL_VAL]], [[VALUE_VAL]], [[REF_VAL]]) : $@convention(thin) (Int, @guaranteed ValueAggregate, @guaranteed RefAggregate) -> ()
// CHECK: } // end sil function '$s6shared0A17_argument_capture7trivial5value3refySih_AA14ValueAggregateVhAA03RefH0ChtFyyXEfU_'
@@ -61,7 +61,7 @@
// ======== SECOND CLOSURE ==========
// CHECK-LABEL: sil private @$s6shared0A17_argument_capture7trivial5value3refySih_AA14ValueAggregateVhAA03RefH0ChtFyyXEfU0_ : $@convention(thin) (Int, @guaranteed ValueAggregate, @guaranteed RefAggregate) -> () {
- // CHECK: bb0([[TRIVIAL_VAL:%[0-9]+]] : @trivial $Int, [[VALUE_VAL:%[0-9]+]] : @guaranteed $ValueAggregate, [[REF_VAL:%[0-9]+]] : @guaranteed $RefAggregate):
+ // CHECK: bb0([[TRIVIAL_VAL:%[0-9]+]] : $Int, [[VALUE_VAL:%[0-9]+]] : @guaranteed $ValueAggregate, [[REF_VAL:%[0-9]+]] : @guaranteed $RefAggregate):
// CHECK: [[COPY_BORROW_VALUE_VAL:%[0-9]+]] = copy_value [[VALUE_VAL]] : $ValueAggregate
// CHECK: [[COPY_BORROW_REF_VAL:%[0-9]+]] = copy_value [[REF_VAL]] : $RefAggregate
// CHECK: [[OWNED_CALL:%[0-9]+]] = function_ref @$s6shared15owned_arguments7trivial5value3refySi_AA14ValueAggregateVAA03RefH0CtF : $@convention(thin) (Int, @owned ValueAggregate, @owned RefAggregate) -> ()
@@ -71,7 +71,7 @@
// CHECK-LABEL: sil hidden @$s6shared0A20_to_owned_conversionyyySih_AA14ValueAggregateVhAA03RefF0ChtXEF : $@convention(thin) (@noescape @callee_guaranteed (Int, @guaranteed ValueAggregate, @guaranteed RefAggregate) -> ()) -> ()
func shared_to_owned_conversion(_ f : (__shared Int, __shared ValueAggregate, __shared RefAggregate) -> Void) {
- // CHECK: bb0([[UNUSED_FUNC:%[0-9]+]] : @trivial $@noescape @callee_guaranteed (Int, @guaranteed ValueAggregate, @guaranteed RefAggregate) -> ()):
+ // CHECK: bb0([[UNUSED_FUNC:%[0-9]+]] : $@noescape @callee_guaranteed (Int, @guaranteed ValueAggregate, @guaranteed RefAggregate) -> ()):
// CHECK: [[OWNED_THUNK:%[0-9]+]] = function_ref @$s6shared0A20_to_owned_conversionyyySih_AA14ValueAggregateVhAA03RefF0ChtXEFySi_AdFtXEfU_ : $@convention(thin) (Int, @owned ValueAggregate, @owned RefAggregate) -> ()
// CHECK: [[CONVERT:%.*]] = convert_function [[OWNED_THUNK]]
// CHECK: [[THICK_OWNED_THUNK:%[0-9]+]] = thin_to_thick_function [[CONVERT]] : $@convention(thin) @noescape (Int, @owned ValueAggregate, @owned RefAggregate) -> () to $@noescape @callee_guaranteed (Int, @owned ValueAggregate, @owned RefAggregate) -> ()
@@ -86,7 +86,7 @@
// ======== REABSTRACTION THUNK =========
// CHECK-LABEL: sil shared [transparent] [serializable] [reabstraction_thunk] @$sSi6shared14ValueAggregateVAA03RefC0CIgyxx_SiAcEIegygg_TR : $@convention(thin) (Int, @guaranteed ValueAggregate, @guaranteed RefAggregate, @noescape @callee_guaranteed (Int, @owned ValueAggregate, @owned RefAggregate) -> ()) -> ()
- // CHECK: bb0([[TRIVIAL_VAL:%[0-9]+]] : @trivial $Int, [[VALUE_VAL:%[0-9]+]] : @guaranteed $ValueAggregate, [[REF_VAL:%[0-9]+]] : @guaranteed $RefAggregate, [[FUNC:%[0-9]+]] : @trivial $@noescape @callee_guaranteed (Int, @owned ValueAggregate, @owned RefAggregate) -> ()):
+ // CHECK: bb0([[TRIVIAL_VAL:%[0-9]+]] : $Int, [[VALUE_VAL:%[0-9]+]] : @guaranteed $ValueAggregate, [[REF_VAL:%[0-9]+]] : @guaranteed $RefAggregate, [[FUNC:%[0-9]+]] : $@noescape @callee_guaranteed (Int, @owned ValueAggregate, @owned RefAggregate) -> ()):
// CHECK: [[COPY_VALUE_VAL:%[0-9]+]] = copy_value [[VALUE_VAL]] : $ValueAggregate
// CHECK: [[COPY_REF_VAL:%[0-9]+]] = copy_value [[REF_VAL]] : $RefAggregate
// CHECK: {{%.*}} = apply [[FUNC]]([[TRIVIAL_VAL]], [[COPY_VALUE_VAL]], [[COPY_REF_VAL]]) : $@noescape @callee_guaranteed (Int, @owned ValueAggregate, @owned RefAggregate) -> ()
@@ -97,7 +97,7 @@
// CHECK-LABEL: sil hidden @$s6shared09owned_to_A11_conversionyyySi_AA14ValueAggregateVAA03RefF0CtXEF : $@convention(thin) (@noescape @callee_guaranteed (Int, @owned ValueAggregate, @owned RefAggregate) -> ()) -> ()
func owned_to_shared_conversion(_ f : (Int, ValueAggregate, RefAggregate) -> Void) {
- // CHECK: bb0([[UNUSED_FUNC:%[0-9]+]] : @trivial $@noescape @callee_guaranteed (Int, @owned ValueAggregate, @owned RefAggregate) -> ()):
+ // CHECK: bb0([[UNUSED_FUNC:%[0-9]+]] : $@noescape @callee_guaranteed (Int, @owned ValueAggregate, @owned RefAggregate) -> ()):
// CHECK: [[SHARED_THUNK:%[0-9]+]] = function_ref @$s6shared09owned_to_A11_conversionyyySi_AA14ValueAggregateVAA03RefF0CtXEFySih_ADhAFhtXEfU_ : $@convention(thin) (Int, @guaranteed ValueAggregate, @guaranteed RefAggregate) -> ()
// CHECK: [[CONVERT:%.*]] = convert_function [[SHARED_THUNK]]
// CHECK: [[THICK_SHARED_THUNK:%[0-9]+]] = thin_to_thick_function [[CONVERT]] : $@convention(thin) @noescape (Int, @guaranteed ValueAggregate, @guaranteed RefAggregate) -> () to $@noescape @callee_guaranteed (Int, @guaranteed ValueAggregate, @guaranteed RefAggregate) -> ()
@@ -112,7 +112,7 @@
// ======== REABSTRACTION THUNK =========
// CHECK-LABEL: sil shared [transparent] [serializable] [reabstraction_thunk] @$sSi6shared14ValueAggregateVAA03RefC0CIgygg_SiAcEIegyxx_TR : $@convention(thin) (Int, @owned ValueAggregate, @owned RefAggregate, @noescape @callee_guaranteed (Int, @guaranteed ValueAggregate, @guaranteed RefAggregate) -> ()) -> ()
- // CHECK: bb0([[TRIVIAL_VAL:%[0-9]+]] : @trivial $Int, [[VALUE_VAL:%[0-9]+]] : @owned $ValueAggregate, [[REF_VAL:%[0-9]+]] : @owned $RefAggregate, [[FUNC:%[0-9]+]] : @trivial $@noescape @callee_guaranteed (Int, @guaranteed ValueAggregate, @guaranteed RefAggregate) -> ()):
+ // CHECK: bb0([[TRIVIAL_VAL:%[0-9]+]] : $Int, [[VALUE_VAL:%[0-9]+]] : @owned $ValueAggregate, [[REF_VAL:%[0-9]+]] : @owned $RefAggregate, [[FUNC:%[0-9]+]] : $@noescape @callee_guaranteed (Int, @guaranteed ValueAggregate, @guaranteed RefAggregate) -> ()):
// CHECK: [[BORROW_VALUE_VAL:%[0-9]+]] = begin_borrow [[VALUE_VAL]] : $ValueAggregate
// CHECK: [[BORROW_REF_VAL:%[0-9]+]] = begin_borrow [[REF_VAL]] : $RefAggregate
// CHECK: {{%.*}} = apply [[FUNC]]([[TRIVIAL_VAL]], [[BORROW_VALUE_VAL]], [[BORROW_REF_VAL]]) : $@noescape @callee_guaranteed (Int, @guaranteed ValueAggregate, @guaranteed RefAggregate) -> ()
@@ -133,7 +133,7 @@
// CHECK-LABEL: sil hidden @$s6shared3FooV21methodSharedArguments7trivial5value3refySih_AA14ValueAggregateVhAA03RefJ0ChtF : $@convention(method) (Int, @guaranteed ValueAggregate, @guaranteed RefAggregate, @guaranteed Foo) -> () {
func methodSharedArguments(trivial : __shared Int, value : __shared ValueAggregate, ref : __shared RefAggregate) {
- // CHECK: bb0([[TRIVIAL_VAL:%[0-9]+]] : @trivial $Int, [[VALUE_VAL:%[0-9]+]] : @guaranteed $ValueAggregate, [[REF_VAL:%[0-9]+]] : @guaranteed $RefAggregate, [[SELF:%[0-9]+]] : @guaranteed $Foo):
+ // CHECK: bb0([[TRIVIAL_VAL:%[0-9]+]] : $Int, [[VALUE_VAL:%[0-9]+]] : @guaranteed $ValueAggregate, [[REF_VAL:%[0-9]+]] : @guaranteed $RefAggregate, [[SELF:%[0-9]+]] : @guaranteed $Foo):
// CHECK: [[COPY_VALUE_VAL:%[0-9]+]] = copy_value [[VALUE_VAL]] : $ValueAggregate
// CHECK: [[COPY_REF_VAL:%[0-9]+]] = copy_value [[REF_VAL]] : $RefAggregate
// CHECK: [[OWNED_FUNC:%[0-9]+]] = function_ref @$s6shared3FooV20methodOwnedArguments7trivial5value3refySi_AA14ValueAggregateVAA03RefJ0CtF
@@ -144,7 +144,7 @@
// CHECK-LABEL: sil hidden @$s6shared3FooV20methodOwnedArguments7trivial5value3refySi_AA14ValueAggregateVAA03RefJ0CtF : $@convention(method) (Int, @owned ValueAggregate, @owned RefAggregate, @guaranteed Foo) -> () {
func methodOwnedArguments(trivial : Int, value : ValueAggregate, ref : RefAggregate) {
- // CHECK: bb0([[TRIVIAL_VAL:%[0-9]+]] : @trivial $Int, [[VALUE_VAL:%[0-9]+]] : @owned $ValueAggregate, [[REF_VAL:%[0-9]+]] : @owned $RefAggregate, [[SELF:%[0-9]+]] : @guaranteed $Foo):
+ // CHECK: bb0([[TRIVIAL_VAL:%[0-9]+]] : $Int, [[VALUE_VAL:%[0-9]+]] : @owned $ValueAggregate, [[REF_VAL:%[0-9]+]] : @owned $RefAggregate, [[SELF:%[0-9]+]] : @guaranteed $Foo):
// CHECK: [[BORROW_VALUE_VAL:%[0-9]+]] = begin_borrow [[VALUE_VAL]] : $ValueAggregate
// CHECK: [[BORROW_REF_VAL:%[0-9]+]] = begin_borrow [[REF_VAL]] : $RefAggregate
// CHECK: [[SHARED_FUNC:%[0-9]+]] = function_ref @$s6shared3FooV21methodSharedArguments7trivial5value3refySih_AA14ValueAggregateVhAA03RefJ0ChtF
@@ -159,7 +159,7 @@
// CHECK-LABEL: sil hidden @$s6shared3FooV21staticSharedArguments7trivial5value3refySih_AA14ValueAggregateVhAA03RefJ0ChtFZ : $@convention(method) (Int, @guaranteed ValueAggregate, @guaranteed RefAggregate, @thin Foo.Type) -> () {
static func staticSharedArguments(trivial : __shared Int, value : __shared ValueAggregate, ref : __shared RefAggregate) {
- // CHECK: bb0([[TRIVIAL_VAL:%[0-9]+]] : @trivial $Int, [[VALUE_VAL:%[0-9]+]] : @guaranteed $ValueAggregate, [[REF_VAL:%[0-9]+]] : @guaranteed $RefAggregate, [[SELF_METATYPE:%[0-9]+]] : @trivial $@thin Foo.Type):
+ // CHECK: bb0([[TRIVIAL_VAL:%[0-9]+]] : $Int, [[VALUE_VAL:%[0-9]+]] : @guaranteed $ValueAggregate, [[REF_VAL:%[0-9]+]] : @guaranteed $RefAggregate, [[SELF_METATYPE:%[0-9]+]] : $@thin Foo.Type):
// CHECK: [[COPY_VALUE_VAL:%[0-9]+]] = copy_value [[VALUE_VAL]] : $ValueAggregate
// CHECK: [[COPY_REF_VAL:%[0-9]+]] = copy_value [[REF_VAL]] : $RefAggregate
// CHECK: [[OWNED_FUNC:%[0-9]+]] = function_ref @$s6shared3FooV20staticOwnedArguments7trivial5value3refySi_AA14ValueAggregateVAA03RefJ0CtFZ
@@ -169,7 +169,7 @@
}
// CHECK-LABEL: sil hidden @$s6shared3FooV20staticOwnedArguments7trivial5value3refySi_AA14ValueAggregateVAA03RefJ0CtFZ : $@convention(method) (Int, @owned ValueAggregate, @owned RefAggregate, @thin Foo.Type) -> () {
static func staticOwnedArguments(trivial : Int, value : ValueAggregate, ref : RefAggregate) {
- // CHECK: bb0([[TRIVIAL_VAL:%[0-9]+]] : @trivial $Int, [[VALUE_VAL:%[0-9]+]] : @owned $ValueAggregate, [[REF_VAL:%[0-9]+]] : @owned $RefAggregate, [[SELF_METATYPE:%[0-9]+]] : @trivial $@thin Foo.Type):
+ // CHECK: bb0([[TRIVIAL_VAL:%[0-9]+]] : $Int, [[VALUE_VAL:%[0-9]+]] : @owned $ValueAggregate, [[REF_VAL:%[0-9]+]] : @owned $RefAggregate, [[SELF_METATYPE:%[0-9]+]] : $@thin Foo.Type):
// CHECK: [[BORROW_VALUE_VAL:%[0-9]+]] = begin_borrow [[VALUE_VAL]] : $ValueAggregate
// CHECK: [[BORROW_REF_VAL:%[0-9]+]] = begin_borrow [[REF_VAL]] : $RefAggregate
// CHECK: [[SHARED_FUNC:%[0-9]+]] = function_ref @$s6shared3FooV21staticSharedArguments7trivial5value3refySih_AA14ValueAggregateVhAA03RefJ0ChtFZ
diff --git a/test/SILGen/statements.swift b/test/SILGen/statements.swift
index a48707b..0003835 100644
--- a/test/SILGen/statements.swift
+++ b/test/SILGen/statements.swift
@@ -199,7 +199,7 @@
// <rdar://problem/13549626>
// CHECK-LABEL: sil hidden @$s10statements14return_from_if{{[_0-9a-zA-Z]*}}F
func return_from_if(_ a: Bool) -> Int {
- // CHECK: bb0(%0 : @trivial $Bool):
+ // CHECK: bb0(%0 : $Bool):
// CHECK: cond_br {{.*}}, [[THEN:bb[0-9]+]], [[ELSE:bb[0-9]+]]
if a {
// CHECK: [[THEN]]:
@@ -211,7 +211,7 @@
return 0
}
// CHECK-NOT: function_ref @foo
- // CHECK: [[EPILOG]]([[RET:%.*]] : @trivial $Int):
+ // CHECK: [[EPILOG]]([[RET:%.*]] : $Int):
// CHECK: return [[RET]]
foo() // expected-warning {{will never be executed}}
}
@@ -578,12 +578,12 @@
// CHECK-LABEL: sil hidden @$s10statements20testRequireOptional1yS2iSgF
-// CHECK: bb0([[ARG:%.*]] : @trivial $Optional<Int>):
+// CHECK: bb0([[ARG:%.*]] : $Optional<Int>):
// CHECK-NEXT: debug_value [[ARG]] : $Optional<Int>, let, name "a"
// CHECK-NEXT: switch_enum [[ARG]] : $Optional<Int>, case #Optional.some!enumelt.1: [[SOME:bb[0-9]+]], case #Optional.none!enumelt: [[NONE:bb[0-9]+]]
func testRequireOptional1(_ a : Int?) -> Int {
- // CHECK: [[SOME]]([[PAYLOAD:%.*]] : @trivial $Int):
+ // CHECK: [[SOME]]([[PAYLOAD:%.*]] : $Int):
// CHECK-NEXT: debug_value [[PAYLOAD]] : $Int, let, name "t"
// CHECK-NEXT: return [[PAYLOAD]] : $Int
guard let t = a else { abort() }
@@ -660,7 +660,7 @@
// CHECK-LABEL: sil hidden @$s10statements22let_else_tuple_bindingyS2i_SitSgF
func let_else_tuple_binding(_ a : (Int, Int)?) -> Int {
- // CHECK: bb0([[ARG:%.*]] : @trivial $Optional<(Int, Int)>):
+ // CHECK: bb0([[ARG:%.*]] : $Optional<(Int, Int)>):
// CHECK-NEXT: debug_value [[ARG]] : $Optional<(Int, Int)>, let, name "a"
// CHECK-NEXT: switch_enum [[ARG]] : $Optional<(Int, Int)>, case #Optional.some!enumelt.1: [[SOME_BB:bb[0-9]+]], case #Optional.none!enumelt: [[NONE_BB:bb[0-9]+]]
@@ -668,7 +668,7 @@
_ = y
return x
- // CHECK: [[SOME_BB]]([[PAYLOAD:%.*]] : @trivial $(Int, Int)):
+ // CHECK: [[SOME_BB]]([[PAYLOAD:%.*]] : $(Int, Int)):
// CHECK-NEXT: ([[PAYLOAD_1:%.*]], [[PAYLOAD_2:%.*]]) = destructure_tuple [[PAYLOAD]]
// CHECK-NEXT: debug_value [[PAYLOAD_1]] : $Int, let, name "x"
// CHECK-NEXT: debug_value [[PAYLOAD_2]] : $Int, let, name "y"
diff --git a/test/SILGen/struct_resilience.swift b/test/SILGen/struct_resilience.swift
index dc85336..456dced 100644
--- a/test/SILGen/struct_resilience.swift
+++ b/test/SILGen/struct_resilience.swift
@@ -8,7 +8,7 @@
// Resilient structs are always address-only
// CHECK-LABEL: sil hidden @$s17struct_resilience26functionWithResilientTypes_1f010resilient_A04SizeVAF_A2FXEtF : $@convention(thin) (@in_guaranteed Size, @noescape @callee_guaranteed (@in_guaranteed Size) -> @out Size) -> @out Size
-// CHECK: bb0(%0 : @trivial $*Size, %1 : @trivial $*Size, %2 : @trivial $@noescape @callee_guaranteed (@in_guaranteed Size) -> @out Size):
+// CHECK: bb0(%0 : $*Size, %1 : $*Size, %2 : $@noescape @callee_guaranteed (@in_guaranteed Size) -> @out Size):
func functionWithResilientTypes(_ s: Size, f: (Size) -> Size) -> Size {
// Stored properties of resilient structs from outside our resilience
@@ -56,7 +56,7 @@
// Fixed-layout structs may be trivial or loadable
// CHECK-LABEL: sil hidden @$s17struct_resilience28functionWithFixedLayoutTypes_1f010resilient_A05PointVAF_A2FXEtF : $@convention(thin) (Point, @noescape @callee_guaranteed (Point) -> Point) -> Point
-// CHECK: bb0(%0 : @trivial $Point, %1 : @trivial $@noescape @callee_guaranteed (Point) -> Point):
+// CHECK: bb0(%0 : $Point, %1 : $@noescape @callee_guaranteed (Point) -> Point):
func functionWithFixedLayoutTypes(_ p: Point, f: (Point) -> Point) -> Point {
// Stored properties of fixed layout structs are accessed directly
@@ -78,7 +78,7 @@
// Fixed-layout struct with resilient stored properties is still address-only
// CHECK-LABEL: sil hidden @$s17struct_resilience39functionWithFixedLayoutOfResilientTypes_1f010resilient_A09RectangleVAF_A2FXEtF : $@convention(thin) (@in_guaranteed Rectangle, @noescape @callee_guaranteed (@in_guaranteed Rectangle) -> @out Rectangle) -> @out Rectangle
-// CHECK: bb0(%0 : @trivial $*Rectangle, %1 : @trivial $*Rectangle, %2 : @trivial $@noescape @callee_guaranteed (@in_guaranteed Rectangle) -> @out Rectangle):
+// CHECK: bb0(%0 : $*Rectangle, %1 : $*Rectangle, %2 : $@noescape @callee_guaranteed (@in_guaranteed Rectangle) -> @out Rectangle):
func functionWithFixedLayoutOfResilientTypes(_ r: Rectangle, f: (Rectangle) -> Rectangle) -> Rectangle {
return f(r)
}
@@ -188,7 +188,7 @@
}
// CHECK-LABEL: sil hidden [transparent] @$s17struct_resilience27internalTransparentFunctionySiAA6MySizeVF : $@convention(thin) (@in_guaranteed MySize) -> Int
-// CHECK: bb0([[ARG:%.*]] : @trivial $*MySize):
+// CHECK: bb0([[ARG:%.*]] : $*MySize):
@_transparent func internalTransparentFunction(_ s: MySize) -> Int {
// The body of an internal transparent function will not be inlined into
diff --git a/test/SILGen/subclass_existentials.swift b/test/SILGen/subclass_existentials.swift
index a30da43..9fc6ae9 100644
--- a/test/SILGen/subclass_existentials.swift
+++ b/test/SILGen/subclass_existentials.swift
@@ -251,7 +251,7 @@
derived: Derived,
baseAndPType: (Base<Int> & P).Type,
derivedType: Derived.Type) {
- // CHECK: bb0([[ARG0:%.*]] : @guaranteed $Base<Int> & P, [[ARG1:%.*]] : @guaranteed $Derived, [[ARG2:%.*]] : @trivial $@thick (Base<Int> & P).Type, [[ARG3:%.*]] : @trivial $@thick Derived.Type):
+ // CHECK: bb0([[ARG0:%.*]] : @guaranteed $Base<Int> & P, [[ARG1:%.*]] : @guaranteed $Derived, [[ARG2:%.*]] : $@thick (Base<Int> & P).Type, [[ARG3:%.*]] : $@thick Derived.Type):
// CHECK: [[COPIED:%.*]] = copy_value [[ARG0]] : $Base<Int> & P
// CHECK-NEXT: checked_cast_br [[COPIED]] : $Base<Int> & P to $Derived
let _ = baseAndP as? Derived
@@ -338,7 +338,7 @@
baseTAndP_concrete: Base<T> & P,
baseIntAndP_concrete: Base<Int> & P) {
- // CHECK: ([[ARG0:%.*]] : @trivial $*S, [[ARG1:%.*]] : @trivial $*T, [[ARG2:%.*]] : @trivial $*PT, [[ARG3:%.*]] : @guaranteed $BaseT, [[ARG4:%.*]] : @guaranteed $BaseInt, [[ARG5:%.*]] : @guaranteed $BaseTAndP, [[ARG6:%.*]] : @guaranteed $BaseIntAndP, [[ARG7:%.*]] : @guaranteed $DerivedT, [[ARG8:%.*]] : @guaranteed $Derived & R, [[ARG9:%.*]] : @guaranteed $Base<T> & P, [[ARG10:%.*]] : @guaranteed $Base<Int> & P)
+ // CHECK: ([[ARG0:%.*]] : $*S, [[ARG1:%.*]] : $*T, [[ARG2:%.*]] : $*PT, [[ARG3:%.*]] : @guaranteed $BaseT, [[ARG4:%.*]] : @guaranteed $BaseInt, [[ARG5:%.*]] : @guaranteed $BaseTAndP, [[ARG6:%.*]] : @guaranteed $BaseIntAndP, [[ARG7:%.*]] : @guaranteed $DerivedT, [[ARG8:%.*]] : @guaranteed $Derived & R, [[ARG9:%.*]] : @guaranteed $Base<T> & P, [[ARG10:%.*]] : @guaranteed $Base<Int> & P)
// CHECK: [[COPY:%.*]] = alloc_stack $S
// CHECK-NEXT: copy_addr %0 to [initialization] [[COPY]] : $*S
diff --git a/test/SILGen/super.swift b/test/SILGen/super.swift
index 54698aa..920c4ef 100644
--- a/test/SILGen/super.swift
+++ b/test/SILGen/super.swift
@@ -110,7 +110,7 @@
// CHECK-LABEL: sil @$s5super22ChildToResilientParentC11classMethodyyFZ : $@convention(method) (@thick ChildToResilientParent.Type) -> ()
public override class func classMethod() {
- // CHECK: bb0([[METASELF:%.*]] : @trivial $@thick ChildToResilientParent.Type):
+ // CHECK: bb0([[METASELF:%.*]] : $@thick ChildToResilientParent.Type):
// CHECK: [[UPCAST_METASELF:%.*]] = upcast [[METASELF]]
// CHECK: [[FUNC:%.*]] = super_method [[SELF]] : $@thick ChildToResilientParent.Type, #ResilientOutsideParent.classMethod!1 : (ResilientOutsideParent.Type) -> () -> (), $@convention(method) (@thick ResilientOutsideParent.Type) -> ()
// CHECK: apply [[FUNC]]([[UPCAST_METASELF]])
@@ -120,7 +120,7 @@
// CHECK-LABEL: sil @$s5super22ChildToResilientParentC11returnsSelfACXDyFZ : $@convention(method) (@thick ChildToResilientParent.Type) -> @owned ChildToResilientParent
public class func returnsSelf() -> Self {
- // CHECK: bb0([[METASELF:%.*]] : @trivial $@thick ChildToResilientParent.Type):
+ // CHECK: bb0([[METASELF:%.*]] : $@thick ChildToResilientParent.Type):
// CHECK: [[CAST_METASELF:%.*]] = unchecked_trivial_bit_cast [[METASELF]] : $@thick ChildToResilientParent.Type to $@thick @dynamic_self ChildToResilientParent.Type
// CHECK: [[UPCAST_CAST_METASELF:%.*]] = upcast [[CAST_METASELF]] : $@thick @dynamic_self ChildToResilientParent.Type to $@thick ResilientOutsideParent.Type
// CHECK: [[FUNC:%.*]] = super_method [[METASELF]] : $@thick ChildToResilientParent.Type, #ResilientOutsideParent.classMethod!1 : (ResilientOutsideParent.Type) -> () -> ()
@@ -148,7 +148,7 @@
// CHECK-LABEL: sil @$s5super18ChildToFixedParentC11classMethodyyFZ : $@convention(method) (@thick ChildToFixedParent.Type) -> ()
public override class func classMethod() {
- // CHECK: bb0([[SELF:%.*]] : @trivial $@thick ChildToFixedParent.Type):
+ // CHECK: bb0([[SELF:%.*]] : $@thick ChildToFixedParent.Type):
// CHECK: [[UPCAST_SELF:%.*]] = upcast [[SELF]]
// CHECK: [[FUNC:%.*]] = super_method [[SELF]] : $@thick ChildToFixedParent.Type, #OutsideParent.classMethod!1 : (OutsideParent.Type) -> () -> (), $@convention(method) (@thick OutsideParent.Type) -> ()
// CHECK: apply [[FUNC]]([[UPCAST_SELF]])
@@ -158,7 +158,7 @@
// CHECK-LABEL: sil @$s5super18ChildToFixedParentC11returnsSelfACXDyFZ : $@convention(method) (@thick ChildToFixedParent.Type) -> @owned ChildToFixedParent
public class func returnsSelf() -> Self {
- // CHECK: bb0([[SELF:%.*]] : @trivial $@thick ChildToFixedParent.Type):
+ // CHECK: bb0([[SELF:%.*]] : $@thick ChildToFixedParent.Type):
// CHECK: [[FIRST_CAST:%.*]] = unchecked_trivial_bit_cast [[SELF]]
// CHECK: [[SECOND_CAST:%.*]] = upcast [[FIRST_CAST]]
// CHECK: [[FUNC:%.*]] = super_method [[SELF]] : $@thick ChildToFixedParent.Type, #OutsideParent.classMethod!1 : (OutsideParent.Type) -> () -> ()
diff --git a/test/SILGen/switch.swift b/test/SILGen/switch.swift
index 0d15cb6..b1f904c 100644
--- a/test/SILGen/switch.swift
+++ b/test/SILGen/switch.swift
@@ -950,7 +950,7 @@
func testLabeledScalarPayload(_ lsp: LabeledScalarPayload) -> Any {
// CHECK: switch_enum {{%.*}}, case #LabeledScalarPayload.Payload!enumelt.1: bb1
switch lsp {
- // CHECK: bb1([[TUPLE:%.*]] : @trivial $(name: Int)):
+ // CHECK: bb1([[TUPLE:%.*]] : $(name: Int)):
// CHECK: [[X:%.*]] = destructure_tuple [[TUPLE]]
// CHECK: [[ANY_X_ADDR:%.*]] = init_existential_addr {{%.*}}, $Int
// CHECK: store [[X]] to [trivial] [[ANY_X_ADDR]]
@@ -982,7 +982,7 @@
case let x?:
return 0
- // CHECK: [[SOMEBB]](%3 : @trivial $Int):
+ // CHECK: [[SOMEBB]](%3 : $Int):
// CHECK-NEXT: debug_value %3 : $Int, let, name "x"
// CHECK: integer_literal $Builtin.IntLiteral, 0
@@ -1004,7 +1004,7 @@
case let x?:
return 0
- // CHECK: [[SOMEBB]](%3 : @trivial $Int):
+ // CHECK: [[SOMEBB]](%3 : $Int):
// CHECK-NEXT: debug_value %3 : $Int, let, name "x"
// CHECK: integer_literal $Builtin.IntLiteral, 0
@@ -1022,7 +1022,7 @@
switch(base, filter) {
case (.some(let base), .some(let filter)):
- // CHECK: bb2(%10 : @trivial $Int):
+ // CHECK: bb2(%10 : $Int):
// CHECK-NEXT: debug_value %8 : $Int, let, name "base"
// CHECK-NEXT: debug_value %10 : $Int, let, name "filter"
print("both: \(base), \(filter)")
@@ -1031,11 +1031,11 @@
// CHECK-NEXT: debug_value %8 : $Int, let, name "base"
// CHECK-NEXT: br bb6(%8 : $Int)
- // CHECK: bb5([[OTHER_BASE:%.*]] : @trivial $Int)
+ // CHECK: bb5([[OTHER_BASE:%.*]] : $Int)
// CHECK-NEXT: debug_value [[OTHER_BASE]] : $Int, let, name "base"
// CHECK-NEXT: br bb6([[OTHER_BASE]] : $Int)
- // CHECK: bb6([[ARG:%.*]] : @trivial $Int):
+ // CHECK: bb6([[ARG:%.*]] : $Int):
print("single: \(base)")
default:
print("default")
@@ -1050,7 +1050,7 @@
func testUninhabitedSwitchScrutinee() {
func test1(x : MyNever) {
- // CHECK: bb0(%0 : @trivial $MyNever):
+ // CHECK: bb0(%0 : $MyNever):
// CHECK-NEXT: debug_value %0 : $MyNever, let, name "x"
// CHECK-NEXT: unreachable
switch x {
@@ -1060,7 +1060,7 @@
}
}
func test2(x : Never) {
- // CHECK: bb0(%0 : @trivial $Never):
+ // CHECK: bb0(%0 : $Never):
// CHECK-NEXT: debug_value %0 : $Never, let, name "x"
// CHECK-NEXT: unreachable
switch (x, x) {}
diff --git a/test/SILGen/switch_fallthrough.swift b/test/SILGen/switch_fallthrough.swift
index ed4e782..2f1b68a 100644
--- a/test/SILGen/switch_fallthrough.swift
+++ b/test/SILGen/switch_fallthrough.swift
@@ -152,7 +152,7 @@
// CHECK: debug_value [[SECOND_N:%.*]] : $Int, let, name "n"
// CHECK: br [[CASE2]]([[SECOND_N]] : $Int)
- // CHECK: [[CASE2]]([[INCOMING_N:%.*]] : @trivial $Int):
+ // CHECK: [[CASE2]]([[INCOMING_N:%.*]] : $Int):
// CHECK: [[Z:%.*]] = function_ref @$s18switch_fallthrough1zyySiF
// CHECK apply [[Z]]([[INCOMING_N]]) : $@convention(thin) (Int) -> ()
// CHECK: br [[CONT:bb[0-9]+]]
diff --git a/test/SILGen/switch_var.swift b/test/SILGen/switch_var.swift
index 3ea2ca6..ddcefc3 100644
--- a/test/SILGen/switch_var.swift
+++ b/test/SILGen/switch_var.swift
@@ -541,7 +541,7 @@
// CHECK: [[SECOND_MATCH_CASE]]:
// CHECK: debug_value [[SECOND_X:%.*]] :
// CHECK: br [[CASE_BODY]]([[SECOND_X]] : $Int)
- // CHECK: [[CASE_BODY]]([[BODY_VAR:%.*]] : @trivial $Int):
+ // CHECK: [[CASE_BODY]]([[BODY_VAR:%.*]] : $Int):
// CHECK: [[A:%.*]] = function_ref @$s10switch_var1a1xySi_tF
// CHECK: apply [[A]]([[BODY_VAR]])
a(x: x)
@@ -571,7 +571,7 @@
// CHECK: cond_br {{%.*}}, [[SECOND_MATCH_CASE:bb[0-9]+]], [[SECOND_FAIL:bb[0-9]+]]
// CHECK: [[SECOND_MATCH_CASE]]:
// CHECK: br [[CASE_BODY]]([[FIRST]] : $Int)
- // CHECK: [[CASE_BODY]]([[BODY_VAR:%.*]] : @trivial $Int):
+ // CHECK: [[CASE_BODY]]([[BODY_VAR:%.*]] : $Int):
// CHECK: [[A:%.*]] = function_ref @$s10switch_var1a1xySi_tF
// CHECK: apply [[A]]([[BODY_VAR]])
a(x: x)
@@ -594,19 +594,19 @@
switch f {
// CHECK: switch_enum {{%.*}} : $Foo, case #Foo.A!enumelt.1: [[A:bb[0-9]+]], case #Foo.B!enumelt.1: [[B:bb[0-9]+]], case #Foo.C!enumelt.1: [[C:bb[0-9]+]]
case .A(let x, let n), .B(let n, let x), .C(_, let x, let n):
- // CHECK: [[A]]([[A_TUP:%.*]] : @trivial $(Int, Double)):
+ // CHECK: [[A]]([[A_TUP:%.*]] : $(Int, Double)):
// CHECK: ([[A_X:%.*]], [[A_N:%.*]]) = destructure_tuple [[A_TUP]]
// CHECK: br [[CASE_BODY:bb[0-9]+]]([[A_X]] : $Int, [[A_N]] : $Double)
- // CHECK: [[B]]([[B_TUP:%.*]] : @trivial $(Double, Int)):
+ // CHECK: [[B]]([[B_TUP:%.*]] : $(Double, Int)):
// CHECK: ([[B_N:%.*]], [[B_X:%.*]]) = destructure_tuple [[B_TUP]]
// CHECK: br [[CASE_BODY]]([[B_X]] : $Int, [[B_N]] : $Double)
- // CHECK: [[C]]([[C_TUP:%.*]] : @trivial $(Int, Int, Double)):
+ // CHECK: [[C]]([[C_TUP:%.*]] : $(Int, Int, Double)):
// CHECK: ([[C__:%.*]], [[C_X:%.*]], [[C_N:%.*]]) = destructure_tuple [[C_TUP]]
// CHECK: br [[CASE_BODY]]([[C_X]] : $Int, [[C_N]] : $Double)
- // CHECK: [[CASE_BODY]]([[BODY_X:%.*]] : @trivial $Int, [[BODY_N:%.*]] : @trivial $Double):
+ // CHECK: [[CASE_BODY]]([[BODY_X:%.*]] : $Int, [[BODY_N:%.*]] : $Double):
// CHECK: [[FUNC_A:%.*]] = function_ref @$s10switch_var1a1xySi_tF
// CHECK: apply [[FUNC_A]]([[BODY_X]])
a(x: x)
@@ -624,26 +624,26 @@
switch b {
// CHECK: switch_enum {{%.*}} : $Bar, case #Bar.Y!enumelt.1: [[Y:bb[0-9]+]], case #Bar.Z!enumelt.1: [[Z:bb[0-9]+]]
case .Y(.A(let x, _), _), .Y(.B(_, let x), _), .Y(.C, let x), .Z(let x, _):
- // CHECK: [[Y]]([[Y_TUP:%.*]] : @trivial $(Foo, Int)):
+ // CHECK: [[Y]]([[Y_TUP:%.*]] : $(Foo, Int)):
// CHECK: ([[Y_F:%.*]], [[Y_X:%.*]]) = destructure_tuple [[Y_TUP]]
// CHECK: switch_enum [[Y_F]] : $Foo, case #Foo.A!enumelt.1: [[A:bb[0-9]+]], case #Foo.B!enumelt.1: [[B:bb[0-9]+]], case #Foo.C!enumelt.1: [[C:bb[0-9]+]]
- // CHECK: [[A]]([[A_TUP:%.*]] : @trivial $(Int, Double)):
+ // CHECK: [[A]]([[A_TUP:%.*]] : $(Int, Double)):
// CHECK: ([[A_X:%.*]], [[A_N:%.*]]) = destructure_tuple [[A_TUP]]
// CHECK: br [[CASE_BODY:bb[0-9]+]]([[A_X]] : $Int)
- // CHECK: [[B]]([[B_TUP:%.*]] : @trivial $(Double, Int)):
+ // CHECK: [[B]]([[B_TUP:%.*]] : $(Double, Int)):
// CHECK: ([[B_N:%.*]], [[B_X:%.*]]) = destructure_tuple [[B_TUP]]
// CHECK: br [[CASE_BODY]]([[B_X]] : $Int)
- // CHECK: [[C]]({{%.*}} : @trivial $(Int, Int, Double)):
+ // CHECK: [[C]]({{%.*}} : $(Int, Int, Double)):
// CHECK: br [[CASE_BODY]]([[Y_X]] : $Int)
- // CHECK: [[Z]]([[Z_TUP:%.*]] : @trivial $(Int, Foo)):
+ // CHECK: [[Z]]([[Z_TUP:%.*]] : $(Int, Foo)):
// CHECK: ([[Z_X:%.*]], [[Z_F:%.*]]) = destructure_tuple [[Z_TUP]]
// CHECK: br [[CASE_BODY]]([[Z_X]] : $Int)
- // CHECK: [[CASE_BODY]]([[BODY_X:%.*]] : @trivial $Int):
+ // CHECK: [[CASE_BODY]]([[BODY_X:%.*]] : $Int):
// CHECK: [[FUNC_A:%.*]] = function_ref @$s10switch_var1a1xySi_tF
// CHECK: apply [[FUNC_A]]([[BODY_X]])
a(x: x)
@@ -658,26 +658,26 @@
switch b {
// CHECK: switch_enum {{%.*}} : $Bar, case #Bar.Y!enumelt.1: [[Y:bb[0-9]+]], case #Bar.Z!enumelt.1: [[Z:bb[0-9]+]]
case .Y(.A(var x, _), _), .Y(.B(_, var x), _), .Y(.C, var x), .Z(var x, _):
- // CHECK: [[Y]]([[Y_TUP:%.*]] : @trivial $(Foo, Int)):
+ // CHECK: [[Y]]([[Y_TUP:%.*]] : $(Foo, Int)):
// CHECK: ([[Y_F:%.*]], [[Y_X:%.*]]) = destructure_tuple [[Y_TUP]]
// CHECK: switch_enum [[Y_F]] : $Foo, case #Foo.A!enumelt.1: [[A:bb[0-9]+]], case #Foo.B!enumelt.1: [[B:bb[0-9]+]], case #Foo.C!enumelt.1: [[C:bb[0-9]+]]
- // CHECK: [[A]]([[A_TUP:%.*]] : @trivial $(Int, Double)):
+ // CHECK: [[A]]([[A_TUP:%.*]] : $(Int, Double)):
// CHECK: ([[A_X:%.*]], [[A_N:%.*]]) = destructure_tuple [[A_TUP]]
// CHECK: br [[CASE_BODY:bb[0-9]+]]([[A_X]] : $Int)
- // CHECK: [[B]]([[B_TUP:%.*]] : @trivial $(Double, Int)):
+ // CHECK: [[B]]([[B_TUP:%.*]] : $(Double, Int)):
// CHECK: ([[B_N:%.*]], [[B_X:%.*]]) = destructure_tuple [[B_TUP]]
// CHECK: br [[CASE_BODY]]([[B_X]] : $Int)
- // CHECK: [[C]]({{%.*}} : @trivial $(Int, Int, Double)):
+ // CHECK: [[C]]({{%.*}} : $(Int, Int, Double)):
// CHECK: br [[CASE_BODY]]([[Y_X]] : $Int)
- // CHECK: [[Z]]([[Z_TUP:%.*]] : @trivial $(Int, Foo)):
+ // CHECK: [[Z]]([[Z_TUP:%.*]] : $(Int, Foo)):
// CHECK: ([[Z_X:%.*]], [[Z_F:%.*]]) = destructure_tuple [[Z_TUP]]
// CHECK: br [[CASE_BODY]]([[Z_X]] : $Int)
- // CHECK: [[CASE_BODY]]([[BODY_X:%.*]] : @trivial $Int):
+ // CHECK: [[CASE_BODY]]([[BODY_X:%.*]] : $Int):
// CHECK: store [[BODY_X]] to [trivial] [[BOX_X:%.*]] : $*Int
// CHECK: [[WRITE:%.*]] = begin_access [modify] [unknown] [[BOX_X]]
// CHECK: [[FUNC_AAA:%.*]] = function_ref @$s10switch_var3aaa1xySiz_tF
diff --git a/test/SILGen/toplevel.swift b/test/SILGen/toplevel.swift
index ac718d1..7e6e983 100644
--- a/test/SILGen/toplevel.swift
+++ b/test/SILGen/toplevel.swift
@@ -8,7 +8,7 @@
// CHECK-LABEL: sil @main
-// CHECK: bb0({{%.*}} : @trivial $Int32, {{%.*}} : @trivial $UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>):
+// CHECK: bb0({{%.*}} : $Int32, {{%.*}} : $UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>):
// -- initialize x
// CHECK: alloc_global @$s8toplevel1xSiv
diff --git a/test/SILGen/toplevel_errors.swift b/test/SILGen/toplevel_errors.swift
index e15385c..9d5a2e2 100644
--- a/test/SILGen/toplevel_errors.swift
+++ b/test/SILGen/toplevel_errors.swift
@@ -16,7 +16,7 @@
// CHECK: builtin "willThrow"([[ERR2]] : $Error)
// CHECK: br bb2([[ERR2]] : $Error)
-// CHECK: bb1([[T0:%.*]] : @trivial $Int32):
+// CHECK: bb1([[T0:%.*]] : $Int32):
// CHECK: return [[T0]] : $Int32
// CHECK: bb2([[T0:%.*]] : @owned $Error):
diff --git a/test/SILGen/tuples.swift b/test/SILGen/tuples.swift
index 187649d..8b2697a 100644
--- a/test/SILGen/tuples.swift
+++ b/test/SILGen/tuples.swift
@@ -132,7 +132,7 @@
// formed with isGuaranteed set.
extension P {
// CHECK-LABEL: sil hidden @$s6tuples1PPAAE12immutableUse5tupleyAA1CC5index_x5valuet_tFZ
- // CHECK: bb0([[TUP0:%.*]] : @guaranteed $C, [[TUP1:%.*]] : @trivial $*Self
+ // CHECK: bb0([[TUP0:%.*]] : @guaranteed $C, [[TUP1:%.*]] : $*Self
// Allocate space for the RValue.
// CHECK: [[RVALUE:%.*]] = alloc_stack $(index: C, value: Self), let, name "tuple"
//
diff --git a/test/SILGen/types.swift b/test/SILGen/types.swift
index ec258e5..6ee46d4 100644
--- a/test/SILGen/types.swift
+++ b/test/SILGen/types.swift
@@ -7,7 +7,7 @@
// Methods have method calling convention.
// CHECK-LABEL: sil hidden @$s5types1CC3foo1xySi_tF : $@convention(method) (Int, @guaranteed C) -> () {
func foo(x x: Int) {
- // CHECK: bb0([[X:%[0-9]+]] : @trivial $Int, [[THIS:%[0-9]+]] : @guaranteed $C):
+ // CHECK: bb0([[X:%[0-9]+]] : $Int, [[THIS:%[0-9]+]] : @guaranteed $C):
member = x
// CHECK-NOT: copy_value
@@ -25,7 +25,7 @@
mutating
func foo(x x: Int) {
var x = x
- // CHECK: bb0([[X:%[0-9]+]] : @trivial $Int, [[THIS:%[0-9]+]] : @trivial $*S):
+ // CHECK: bb0([[X:%[0-9]+]] : $Int, [[THIS:%[0-9]+]] : $*S):
member = x
// CHECK: [[XBOX:%[0-9]+]] = alloc_box ${ var Int }
// CHECK: [[XADDR:%[0-9]+]] = project_box [[XBOX]]
diff --git a/test/SILGen/unmanaged_ownership.swift b/test/SILGen/unmanaged_ownership.swift
index 3cf642f..e304982 100644
--- a/test/SILGen/unmanaged_ownership.swift
+++ b/test/SILGen/unmanaged_ownership.swift
@@ -30,7 +30,7 @@
}
// CHECK-LABEL: sil hidden @$ss3set6holderys6HolderVz_tF : $@convention(thin) (@inout Holder) -> () {
-// CHECK: bb0([[ADDR:%.*]] : @trivial $*Holder):
+// CHECK: bb0([[ADDR:%.*]] : $*Holder):
// CHECK: [[T0:%.*]] = function_ref @$ss1CC{{[_0-9a-zA-Z]*}}fC
// CHECK: [[C:%.*]] = apply [[T0]](
// CHECK-NEXT: [[WRITE:%.*]] = begin_access [modify] [unknown] [[ADDR]] : $*Holder
@@ -45,7 +45,7 @@
return holder.value
}
// CHECK-LABEL: sil hidden @$ss3get6holders1CCs6HolderVz_tF : $@convention(thin) (@inout Holder) -> @owned C {
-// CHECK: bb0([[ADDR:%.*]] : @trivial $*Holder):
+// CHECK: bb0([[ADDR:%.*]] : $*Holder):
// CHECK-NEXT: debug_value_addr %0 : $*Holder, var, name "holder", argno 1
// CHECK-NEXT: [[READ:%.*]] = begin_access [read] [unknown] [[ADDR]] : $*Holder
// CHECK-NEXT: [[T0:%.*]] = struct_element_addr [[READ]] : $*Holder, #Holder.value
@@ -59,7 +59,7 @@
return fn().value
}
// CHECK-LABEL: sil hidden @$ss7project2fns1CCs6HolderVyXE_tF : $@convention(thin) (@noescape @callee_guaranteed () -> Holder) -> @owned C {
-// CHECK: bb0([[FN:%.*]] : @trivial $@noescape @callee_guaranteed () -> Holder):
+// CHECK: bb0([[FN:%.*]] : $@noescape @callee_guaranteed () -> Holder):
// CHECK-NEXT: debug_value
// CHECK-NEXT: [[T0:%.*]] = apply [[FN]]()
// CHECK-NEXT: [[T1:%.*]] = struct_extract [[T0]] : $Holder, #Holder.value
diff --git a/test/SILGen/unowned.swift b/test/SILGen/unowned.swift
index 001f013..60e11be 100644
--- a/test/SILGen/unowned.swift
+++ b/test/SILGen/unowned.swift
@@ -12,7 +12,7 @@
}
_ = A(x: C())
// CHECK-LABEL: sil hidden @$s7unowned1AV{{[_0-9a-zA-Z]*}}fC
-// CHECK: bb0([[X:%.*]] : @owned $C, %1 : @trivial $@thin A.Type):
+// CHECK: bb0([[X:%.*]] : @owned $C, %1 : $@thin A.Type):
// CHECK: [[X_UNOWNED:%.*]] = ref_to_unowned [[X]] : $C to $@sil_unowned C
// CHECK: [[X_UNOWNED_COPY:%.*]] = copy_value [[X_UNOWNED]]
// CHECK: destroy_value [[X]]
@@ -29,7 +29,7 @@
}
_ = AddressOnly(x: C(), p: X())
// CHECK-LABEL: sil hidden @$s7unowned11AddressOnlyV{{[_0-9a-zA-Z]*}}fC
-// CHECK: bb0([[RET:%.*]] : @trivial $*AddressOnly, [[X:%.*]] : @owned $C, {{.*}}):
+// CHECK: bb0([[RET:%.*]] : $*AddressOnly, [[X:%.*]] : @owned $C, {{.*}}):
// CHECK: [[X_ADDR:%.*]] = struct_element_addr [[RET]] : $*AddressOnly, #AddressOnly.x
// CHECK: [[X_UNOWNED:%.*]] = ref_to_unowned [[X]] : $C to $@sil_unowned C
// CHECK: [[X_UNOWNED_COPY:%.*]] = copy_value [[X_UNOWNED]] : $@sil_unowned C
diff --git a/test/SILGen/value_ownership.swift b/test/SILGen/value_ownership.swift
index 069796a..17f755e 100644
--- a/test/SILGen/value_ownership.swift
+++ b/test/SILGen/value_ownership.swift
@@ -30,7 +30,7 @@
// Check the elided witness' thunk has the right conventions and borrows where necessary
// CHECK-LABEL: @$s15value_ownership7WitnessVAA14OwnershipProtoA2aDP6elidedyySS_SShSSntFTW : $@convention(witness_method: OwnershipProto) (@guaranteed String, @guaranteed String, @owned String, @in Witness) -> ()
-// CHECK: bb0([[DEFAULT2DEFAULT:%.*]] : @guaranteed $String, [[SHARED2DEFAULT:%.*]] : @guaranteed $String, [[OWNED2DEFAULT:%.*]] : @owned $String, [[WITNESS_VALUE:%.*]] : @trivial $*Witness):
+// CHECK: bb0([[DEFAULT2DEFAULT:%.*]] : @guaranteed $String, [[SHARED2DEFAULT:%.*]] : @guaranteed $String, [[OWNED2DEFAULT:%.*]] : @owned $String, [[WITNESS_VALUE:%.*]] : $*Witness):
// CHECK: [[LOAD_WITNESS:%.*]] = load [take] [[WITNESS_VALUE]] : $*Witness
// CHECK: [[BORROW_WITNESS:%.*]] = begin_borrow [[LOAD_WITNESS]]
// CHECK: [[WITNESS_FUNC:%.*]] = function_ref @$s15value_ownership7WitnessV6elidedyySS_S2StF
@@ -44,7 +44,7 @@
// Check that the explicit witness' thunk doesn't copy or borrow
// CHECK-LABEL: @$s15value_ownership7WitnessVAA14OwnershipProtoA2aDP8explicityySS_SShSSntFTW : $@convention(witness_method: OwnershipProto) (@guaranteed String, @guaranteed String, @owned String, @in Witness) -> () {
-// CHECK: bb0([[ARG0:%.*]] : @guaranteed $String, [[ARG1:%.*]] : @guaranteed $String, [[ARG2:%.*]] : @owned $String, [[WITNESS_VALUE:%.*]] : @trivial $*Witness):
+// CHECK: bb0([[ARG0:%.*]] : @guaranteed $String, [[ARG1:%.*]] : @guaranteed $String, [[ARG2:%.*]] : @owned $String, [[WITNESS_VALUE:%.*]] : $*Witness):
// CHECK-NEXT: [[LOAD_WITNESS:%.*]] = load [take] [[WITNESS_VALUE]] : $*Witness
// CHECK-NEXT: // function_ref Witness.explicit(_:_:_:)
// CHECK-NEXT: [[WITNESS_FUNC:%.*]] = function_ref @$s15value_ownership7WitnessV8explicityySS_SShSSntF
diff --git a/test/SILGen/without_actually_escaping.swift b/test/SILGen/without_actually_escaping.swift
index 7bbbd6c..a3ffa76 100644
--- a/test/SILGen/without_actually_escaping.swift
+++ b/test/SILGen/without_actually_escaping.swift
@@ -5,7 +5,7 @@
// CHECK-LABEL: sil hidden @$s25without_actually_escaping9letEscape1fyycyyXE_tF
func letEscape(f: () -> ()) -> () -> () {
- // CHECK: bb0([[ARG:%.*]] : @trivial $@noescape @callee_guaranteed () -> ()):
+ // CHECK: bb0([[ARG:%.*]] : $@noescape @callee_guaranteed () -> ()):
// CHECK: [[THUNK:%.*]] = function_ref @$sIg_Ieg_TR : $@convention(thin) (@noescape @callee_guaranteed () -> ()) -> ()
// TODO: Use a canary wrapper instead of just copying the nonescaping value
// CHECK: [[ESCAPABLE_COPY:%.*]] = partial_apply [callee_guaranteed] [[THUNK]]([[ARG]])
@@ -23,7 +23,7 @@
// CHECK-LABEL: sil shared [transparent] [serializable] [reabstraction_thunk] [without_actually_escaping] @$sIg_Ieg_TR : $@convention(thin) (@noescape @callee_guaranteed () -> ()) -> () {
// CHECK-LABEL: sil hidden @$s25without_actually_escaping14letEscapeThrow1fyycyycyKXE_tKF
-// CHECK: bb0([[ARG:%.*]] : @trivial $@noescape @callee_guaranteed () -> (@owned @callee_guaranteed () -> (), @error Error)):
+// CHECK: bb0([[ARG:%.*]] : $@noescape @callee_guaranteed () -> (@owned @callee_guaranteed () -> (), @error Error)):
// CHECK: [[CVT:%.*]] = function_ref @$sIeg_s5Error_pIgozo_Ieg_sAA_pIegozo_TR
// CHECK: [[CLOSURE:%.*]] = partial_apply [callee_guaranteed] [[CVT]]([[ARG]])
// CHECK: [[MD:%.*]] = mark_dependence [[CLOSURE]] : {{.*}} on [[ARG]]
diff --git a/test/SILGen/witnesses.swift b/test/SILGen/witnesses.swift
index 4b22c67..2c5d40d 100644
--- a/test/SILGen/witnesses.swift
+++ b/test/SILGen/witnesses.swift
@@ -100,7 +100,7 @@
mutating
func selfTypes(x: ConformingStruct) -> ConformingStruct { return x }
// CHECK-LABEL: sil private [transparent] [thunk] @$s9witnesses16ConformingStructVAA1XA2aDP9selfTypes{{[_0-9a-zA-Z]*}}FTW : $@convention(witness_method: X) (@in_guaranteed ConformingStruct, @inout ConformingStruct) -> @out ConformingStruct {
- // CHECK: bb0(%0 : @trivial $*ConformingStruct, %1 : @trivial $*ConformingStruct, %2 : @trivial $*ConformingStruct):
+ // CHECK: bb0(%0 : $*ConformingStruct, %1 : $*ConformingStruct, %2 : $*ConformingStruct):
// CHECK-NEXT: %3 = load [trivial] %1 : $*ConformingStruct
// CHECK-NEXT: // function_ref
// CHECK-NEXT: %4 = function_ref @$s9witnesses16ConformingStructV9selfTypes{{[_0-9a-zA-Z]*}}F : $@convention(method) (ConformingStruct, @inout ConformingStruct) -> ConformingStruct
@@ -113,7 +113,7 @@
mutating
func loadable(x: Loadable) -> Loadable { return x }
// CHECK-LABEL: sil private [transparent] [thunk] @$s9witnesses16ConformingStructVAA1XA2aDP8loadable{{[_0-9a-zA-Z]*}}FTW : $@convention(witness_method: X) (Loadable, @inout ConformingStruct) -> Loadable {
- // CHECK: bb0(%0 : @trivial $Loadable, %1 : @trivial $*ConformingStruct):
+ // CHECK: bb0(%0 : $Loadable, %1 : $*ConformingStruct):
// CHECK-NEXT: // function_ref
// CHECK-NEXT: %2 = function_ref @$s9witnesses16ConformingStructV8loadable{{[_0-9a-zA-Z]*}}F : $@convention(method) (Loadable, @inout ConformingStruct) -> Loadable
// CHECK-NEXT: %3 = apply %2(%0, %1) : $@convention(method) (Loadable, @inout ConformingStruct) -> Loadable
@@ -123,7 +123,7 @@
mutating
func addrOnly(x: AddrOnly) -> AddrOnly { return x }
// CHECK-LABEL: sil private [transparent] [thunk] @$s9witnesses16ConformingStructVAA1XA2aDP8addrOnly{{[_0-9a-zA-Z]*}}FTW : $@convention(witness_method: X) (@in_guaranteed AddrOnly, @inout ConformingStruct) -> @out AddrOnly {
- // CHECK: bb0(%0 : @trivial $*AddrOnly, %1 : @trivial $*AddrOnly, %2 : @trivial $*ConformingStruct):
+ // CHECK: bb0(%0 : $*AddrOnly, %1 : $*AddrOnly, %2 : $*ConformingStruct):
// CHECK-NEXT: // function_ref
// CHECK-NEXT: %3 = function_ref @$s9witnesses16ConformingStructV8addrOnly{{[_0-9a-zA-Z]*}}F : $@convention(method) (@in_guaranteed AddrOnly, @inout ConformingStruct) -> @out AddrOnly
// CHECK-NEXT: %4 = apply %3(%0, %1, %2) : $@convention(method) (@in_guaranteed AddrOnly, @inout ConformingStruct) -> @out AddrOnly
@@ -134,7 +134,7 @@
mutating
func generic<C>(x: C) -> C { return x }
// CHECK-LABEL: sil private [transparent] [thunk] @$s9witnesses16ConformingStructVAA1XA2aDP7generic{{[_0-9a-zA-Z]*}}FTW : $@convention(witness_method: X) <τ_0_0> (@in_guaranteed τ_0_0, @inout ConformingStruct) -> @out τ_0_0 {
- // CHECK: bb0(%0 : @trivial $*τ_0_0, %1 : @trivial $*τ_0_0, %2 : @trivial $*ConformingStruct):
+ // CHECK: bb0(%0 : $*τ_0_0, %1 : $*τ_0_0, %2 : $*ConformingStruct):
// CHECK-NEXT: // function_ref
// CHECK-NEXT: %3 = function_ref @$s9witnesses16ConformingStructV7generic{{[_0-9a-zA-Z]*}}F : $@convention(method) <τ_0_0> (@in_guaranteed τ_0_0, @inout ConformingStruct) -> @out τ_0_0
// CHECK-NEXT: %4 = apply %3<τ_0_0>(%0, %1, %2) : $@convention(method) <τ_0_0> (@in_guaranteed τ_0_0, @inout ConformingStruct) -> @out τ_0_0
@@ -144,7 +144,7 @@
mutating
func classes<C2: Classes>(x: C2) -> C2 { return x }
// CHECK-LABEL: sil private [transparent] [thunk] @$s9witnesses16ConformingStructVAA1XA2aDP7classes{{[_0-9a-zA-Z]*}}FTW : $@convention(witness_method: X) <τ_0_0 where τ_0_0 : Classes> (@guaranteed τ_0_0, @inout ConformingStruct) -> @owned τ_0_0 {
- // CHECK: bb0(%0 : @guaranteed $τ_0_0, %1 : @trivial $*ConformingStruct):
+ // CHECK: bb0(%0 : @guaranteed $τ_0_0, %1 : $*ConformingStruct):
// CHECK-NEXT: // function_ref
// CHECK-NEXT: %2 = function_ref @$s9witnesses16ConformingStructV7classes{{[_0-9a-zA-Z]*}}F : $@convention(method) <τ_0_0 where τ_0_0 : Classes> (@guaranteed τ_0_0, @inout ConformingStruct) -> @owned τ_0_0
// CHECK-NEXT: %3 = apply %2<τ_0_0>(%0, %1) : $@convention(method) <τ_0_0 where τ_0_0 : Classes> (@guaranteed τ_0_0, @inout ConformingStruct) -> @owned τ_0_0
@@ -153,7 +153,7 @@
}
func <~>(_ x: ConformingStruct, y: ConformingStruct) -> ConformingStruct { return x }
// CHECK-LABEL: sil private [transparent] [thunk] @$s9witnesses16ConformingStructVAA1XA2aDP3ltgoi{{[_0-9a-zA-Z]*}}FZTW : $@convention(witness_method: X) (@in_guaranteed ConformingStruct, @in_guaranteed ConformingStruct, @thick ConformingStruct.Type) -> @out ConformingStruct {
-// CHECK: bb0([[ARG1:%.*]] : @trivial $*ConformingStruct, [[ARG2:%.*]] : @trivial $*ConformingStruct, [[ARG3:%.*]] : @trivial $*ConformingStruct, [[ARG4:%.*]] : @trivial $@thick ConformingStruct.Type):
+// CHECK: bb0([[ARG1:%.*]] : $*ConformingStruct, [[ARG2:%.*]] : $*ConformingStruct, [[ARG3:%.*]] : $*ConformingStruct, [[ARG4:%.*]] : $@thick ConformingStruct.Type):
// CHECK-NEXT: [[LOADED_ARG2:%.*]] = load [trivial] [[ARG2]] : $*ConformingStruct
// CHECK-NEXT: [[LOADED_ARG3:%.*]] = load [trivial] [[ARG3]] : $*ConformingStruct
// CHECK-NEXT: // function_ref
@@ -167,7 +167,7 @@
final class ConformingClass : X {
func selfTypes(x: ConformingClass) -> ConformingClass { return x }
// CHECK-LABEL: sil private [transparent] [thunk] @$s9witnesses15ConformingClassCAA1XA2aDP9selfTypes{{[_0-9a-zA-Z]*}}FTW : $@convention(witness_method: X) (@in_guaranteed ConformingClass, @inout ConformingClass) -> @out ConformingClass {
- // CHECK: bb0([[ARG1:%.*]] : @trivial $*ConformingClass, [[ARG2:%.*]] : @trivial $*ConformingClass, [[ARG3:%.*]] : @trivial $*ConformingClass):
+ // CHECK: bb0([[ARG1:%.*]] : $*ConformingClass, [[ARG2:%.*]] : $*ConformingClass, [[ARG3:%.*]] : $*ConformingClass):
// -- load and copy_value 'self' from inout witness 'self' parameter
// CHECK: [[ARG2_LOADED:%.*]] = load_borrow [[ARG2]] : $*ConformingClass
// CHECK: [[ARG3_LOADED:%.*]] = load_borrow [[ARG3]] : $*ConformingClass
@@ -198,7 +198,7 @@
mutating
func selfTypes(x: ConformingAOStruct) -> ConformingAOStruct { return x }
// CHECK-LABEL: sil private [transparent] [thunk] @$s9witnesses18ConformingAOStructVAA1XA2aDP9selfTypes{{[_0-9a-zA-Z]*}}FTW : $@convention(witness_method: X) (@in_guaranteed ConformingAOStruct, @inout ConformingAOStruct) -> @out ConformingAOStruct {
- // CHECK: bb0(%0 : @trivial $*ConformingAOStruct, %1 : @trivial $*ConformingAOStruct, %2 : @trivial $*ConformingAOStruct):
+ // CHECK: bb0(%0 : $*ConformingAOStruct, %1 : $*ConformingAOStruct, %2 : $*ConformingAOStruct):
// CHECK-NEXT: // function_ref
// CHECK-NEXT: %3 = function_ref @$s9witnesses18ConformingAOStructV9selfTypes{{[_0-9a-zA-Z]*}}F : $@convention(method) (@in_guaranteed ConformingAOStruct, @inout ConformingAOStruct) -> @out ConformingAOStruct
// CHECK-NEXT: %4 = apply %3(%0, %1, %2) : $@convention(method) (@in_guaranteed ConformingAOStruct, @inout ConformingAOStruct) -> @out ConformingAOStruct
@@ -216,7 +216,7 @@
mutating
func selfTypes<E>(x: E) -> E { return x }
// CHECK-LABEL: sil private [transparent] [thunk] @$s9witnesses23ConformsWithMoreGenericVAA1XA2aDP9selfTypes{{[_0-9a-zA-Z]*}}FTW : $@convention(witness_method: X) (@in_guaranteed ConformsWithMoreGeneric, @inout ConformsWithMoreGeneric) -> @out ConformsWithMoreGeneric {
- // CHECK: bb0(%0 : @trivial $*ConformsWithMoreGeneric, %1 : @trivial $*ConformsWithMoreGeneric, %2 : @trivial $*ConformsWithMoreGeneric):
+ // CHECK: bb0(%0 : $*ConformsWithMoreGeneric, %1 : $*ConformsWithMoreGeneric, %2 : $*ConformsWithMoreGeneric):
// CHECK-NEXT: // function_ref
// CHECK-NEXT: [[WITNESS_FN:%.*]] = function_ref @$s9witnesses23ConformsWithMoreGenericV9selfTypes{{[_0-9a-zA-Z]*}}F : $@convention(method) <τ_0_0> (@in_guaranteed τ_0_0, @inout ConformsWithMoreGeneric) -> @out τ_0_0
// CHECK-NEXT: [[RESULT:%.*]] = apply [[WITNESS_FN]]<ConformsWithMoreGeneric>(%0, %1, %2) : $@convention(method) <τ_0_0> (@in_guaranteed τ_0_0, @inout ConformsWithMoreGeneric) -> @out τ_0_0
@@ -227,7 +227,7 @@
mutating
func addrOnly<G>(x: G) -> G { return x }
// CHECK-LABEL: sil private [transparent] [thunk] @$s9witnesses23ConformsWithMoreGenericVAA1XA2aDP8addrOnly{{[_0-9a-zA-Z]*}}FTW : $@convention(witness_method: X) (@in_guaranteed AddrOnly, @inout ConformsWithMoreGeneric) -> @out AddrOnly {
- // CHECK: bb0(%0 : @trivial $*AddrOnly, %1 : @trivial $*AddrOnly, %2 : @trivial $*ConformsWithMoreGeneric):
+ // CHECK: bb0(%0 : $*AddrOnly, %1 : $*AddrOnly, %2 : $*ConformsWithMoreGeneric):
// CHECK-NEXT: // function_ref
// CHECK-NEXT: %3 = function_ref @$s9witnesses23ConformsWithMoreGenericV8addrOnly{{[_0-9a-zA-Z]*}}F : $@convention(method) <τ_0_0> (@in_guaranteed τ_0_0, @inout ConformsWithMoreGeneric) -> @out τ_0_0
// CHECK-NEXT: %4 = apply %3<AddrOnly>(%0, %1, %2) : $@convention(method) <τ_0_0> (@in_guaranteed τ_0_0, @inout ConformsWithMoreGeneric) -> @out τ_0_0
@@ -238,7 +238,7 @@
mutating
func generic<H>(x: H) -> H { return x }
// CHECK-LABEL: sil private [transparent] [thunk] @$s9witnesses23ConformsWithMoreGenericVAA1XA2aDP7generic{{[_0-9a-zA-Z]*}}FTW : $@convention(witness_method: X) <τ_0_0> (@in_guaranteed τ_0_0, @inout ConformsWithMoreGeneric) -> @out τ_0_0 {
- // CHECK: bb0(%0 : @trivial $*τ_0_0, %1 : @trivial $*τ_0_0, %2 : @trivial $*ConformsWithMoreGeneric):
+ // CHECK: bb0(%0 : $*τ_0_0, %1 : $*τ_0_0, %2 : $*ConformsWithMoreGeneric):
// CHECK-NEXT: // function_ref
// CHECK-NEXT: %3 = function_ref @$s9witnesses23ConformsWithMoreGenericV7generic{{[_0-9a-zA-Z]*}}F : $@convention(method) <τ_0_0> (@in_guaranteed τ_0_0, @inout ConformsWithMoreGeneric) -> @out τ_0_0
// CHECK-NEXT: %4 = apply %3<τ_0_0>(%0, %1, %2) : $@convention(method) <τ_0_0> (@in_guaranteed τ_0_0, @inout ConformsWithMoreGeneric) -> @out τ_0_0
@@ -249,7 +249,7 @@
mutating
func classes<I>(x: I) -> I { return x }
// CHECK-LABEL: sil private [transparent] [thunk] @$s9witnesses23ConformsWithMoreGenericVAA1XA2aDP7classes{{[_0-9a-zA-Z]*}}FTW : $@convention(witness_method: X) <τ_0_0 where τ_0_0 : Classes> (@guaranteed τ_0_0, @inout ConformsWithMoreGeneric) -> @owned τ_0_0 {
- // CHECK: bb0([[ARG0:%.*]] : @guaranteed $τ_0_0, [[ARG1:%.*]] : @trivial $*ConformsWithMoreGeneric):
+ // CHECK: bb0([[ARG0:%.*]] : @guaranteed $τ_0_0, [[ARG1:%.*]] : $*ConformsWithMoreGeneric):
// CHECK-NEXT: [[SELF_BOX:%.*]] = alloc_stack $τ_0_0
// CHECK-NEXT: [[ARG0_COPY:%.*]] = copy_value [[ARG0]]
// CHECK-NEXT: store [[ARG0_COPY]] to [init] [[SELF_BOX]] : $*τ_0_0
@@ -266,7 +266,7 @@
}
func <~> <J: Y, K: Y>(_ x: J, y: K) -> K { return y }
// CHECK-LABEL: sil private [transparent] [thunk] @$s9witnesses23ConformsWithMoreGenericVAA1XA2aDP3ltgoi{{[_0-9a-zA-Z]*}}FZTW : $@convention(witness_method: X) (@in_guaranteed ConformsWithMoreGeneric, @in_guaranteed ConformsWithMoreGeneric, @thick ConformsWithMoreGeneric.Type) -> @out ConformsWithMoreGeneric {
-// CHECK: bb0(%0 : @trivial $*ConformsWithMoreGeneric, %1 : @trivial $*ConformsWithMoreGeneric, %2 : @trivial $*ConformsWithMoreGeneric, %3 : @trivial $@thick ConformsWithMoreGeneric.Type):
+// CHECK: bb0(%0 : $*ConformsWithMoreGeneric, %1 : $*ConformsWithMoreGeneric, %2 : $*ConformsWithMoreGeneric, %3 : $@thick ConformsWithMoreGeneric.Type):
// CHECK-NEXT: // function_ref
// CHECK-NEXT: [[WITNESS_FN:%.*]] = function_ref @$s9witnesses3ltgoi{{[_0-9a-zA-Z]*}}F : $@convention(thin) <τ_0_0, τ_0_1 where τ_0_0 : Y, τ_0_1 : Y> (@in_guaranteed τ_0_0, @in_guaranteed τ_0_1) -> @out τ_0_1
// CHECK-NEXT: [[RESULT:%.*]] = apply [[WITNESS_FN]]<ConformsWithMoreGeneric, ConformsWithMoreGeneric>(%0, %1, %2) : $@convention(thin) <τ_0_0, τ_0_1 where τ_0_0 : Y, τ_0_1 : Y> (@in_guaranteed τ_0_0, @in_guaranteed τ_0_1) -> @out τ_0_1
@@ -345,7 +345,7 @@
// CHECK-LABEL: sil private [transparent] [thunk] @$s9witnesses13FailableModelVAA0B11Requirement{{[_0-9a-zA-Z]*}}fCTW
// CHECK-LABEL: sil private [transparent] [thunk] @$s9witnesses13FailableModelVAA22IUOFailableRequirement{{[_0-9a-zA-Z]*}}fCTW
- // CHECK: bb0([[SELF:%[0-9]+]] : @trivial $*Optional<FailableModel>, [[FOO:%[0-9]+]] : @trivial $Int, [[META:%[0-9]+]] : @trivial $@thick FailableModel.Type):
+ // CHECK: bb0([[SELF:%[0-9]+]] : $*Optional<FailableModel>, [[FOO:%[0-9]+]] : $Int, [[META:%[0-9]+]] : $@thick FailableModel.Type):
// CHECK: [[FN:%.*]] = function_ref @$s9witnesses13FailableModelV{{[_0-9a-zA-Z]*}}fC
// CHECK: [[INNER:%.*]] = apply [[FN]](
// CHECK: store [[INNER]] to [trivial] [[SELF]]
@@ -355,11 +355,11 @@
struct IUOFailableModel : NonFailableRefinement, IUOFailableRequirement {
// CHECK-LABEL: sil private [transparent] [thunk] @$s9witnesses16IUOFailableModelVAA21NonFailableRefinement{{[_0-9a-zA-Z]*}}fCTW
- // CHECK: bb0([[SELF:%[0-9]+]] : @trivial $*IUOFailableModel, [[FOO:%[0-9]+]] : @trivial $Int, [[META:%[0-9]+]] : @trivial $@thick IUOFailableModel.Type):
+ // CHECK: bb0([[SELF:%[0-9]+]] : $*IUOFailableModel, [[FOO:%[0-9]+]] : $Int, [[META:%[0-9]+]] : $@thick IUOFailableModel.Type):
// CHECK: [[META:%[0-9]+]] = metatype $@thin IUOFailableModel.Type
// CHECK: [[INIT:%[0-9]+]] = function_ref @$s9witnesses16IUOFailableModelV{{[_0-9a-zA-Z]*}}fC : $@convention(method) (Int, @thin IUOFailableModel.Type) -> Optional<IUOFailableModel>
// CHECK: [[IUO_RESULT:%[0-9]+]] = apply [[INIT]]([[FOO]], [[META]]) : $@convention(method) (Int, @thin IUOFailableModel.Type) -> Optional<IUOFailableModel>
- // CHECK: bb2([[RESULT:%.*]] : @trivial $IUOFailableModel):
+ // CHECK: bb2([[RESULT:%.*]] : $IUOFailableModel):
// CHECK: store [[RESULT]] to [trivial] [[SELF]] : $*IUOFailableModel
// CHECK: return
init!(foo: Int) { return nil }
@@ -431,12 +431,12 @@
GenericParameterNameCollisionProtocol {
// CHECK-LABEL: sil private [transparent] [thunk] @$s9witnesses29GenericParameterNameCollisionVyxGAA0bcdE8ProtocolA2aEP3fooyyqd__lFTW : $@convention(witness_method: GenericParameterNameCollisionProtocol) <τ_0_0 where τ_0_0 : HasAssoc><τ_1_0> (@in_guaranteed τ_1_0, @in_guaranteed GenericParameterNameCollision<τ_0_0>) -> () {
- // CHECK: bb0(%0 : @trivial $*τ_1_0, %1 : @trivial $*GenericParameterNameCollision<τ_0_0>):
+ // CHECK: bb0(%0 : $*τ_1_0, %1 : $*GenericParameterNameCollision<τ_0_0>):
// CHECK: apply {{%.*}}<τ_0_0, τ_1_0>
func foo<U>(_ x: U) {}
// CHECK-LABEL: sil private [transparent] [thunk] @$s9witnesses29GenericParameterNameCollisionVyxGAA0bcdE8ProtocolA2aEP3baryy6Assoc2Qzqd__XElFTW : $@convention(witness_method: GenericParameterNameCollisionProtocol) <τ_0_0 where τ_0_0 : HasAssoc><τ_1_0> (@noescape @callee_guaranteed (@in_guaranteed τ_1_0) -> @out τ_0_0.Assoc, @in_guaranteed GenericParameterNameCollision<τ_0_0>) -> () {
- // CHECK: bb0(%0 : @trivial $@noescape @callee_guaranteed (@in_guaranteed τ_1_0) -> @out τ_0_0.Assoc, %1 : @trivial $*GenericParameterNameCollision<τ_0_0>):
+ // CHECK: bb0(%0 : $@noescape @callee_guaranteed (@in_guaranteed τ_1_0) -> @out τ_0_0.Assoc, %1 : $*GenericParameterNameCollision<τ_0_0>):
// CHECK: apply {{%.*}}<τ_0_0, τ_1_0>
func bar<V>(_ x: (V) -> T.Assoc) {}
}
@@ -460,7 +460,7 @@
// If the witness is in a base class of the conforming class, make sure we have a bit_cast in there:
// CHECK-LABEL: sil private [transparent] [thunk] @$s9witnesses34PropertyRequirementWitnessFromBaseCAA0bC0A2aDP5widthSivMTW : {{.*}} {
- // CHECK: bb0([[ARG2:%.*]] : @trivial $*PropertyRequirementWitnessFromBase):
+ // CHECK: bb0([[ARG2:%.*]] : $*PropertyRequirementWitnessFromBase):
// CHECK-NEXT: [[ARG2_LOADED:%[0-9][0-9]*]] = load_borrow [[ARG2]]
// CHECK-NEXT: [[CAST_ARG2_LOADED:%[0-9][0-9]*]] = upcast [[ARG2_LOADED]] : $PropertyRequirementWitnessFromBase to $PropertyRequirementBase
// CHECK-NEXT: [[METH:%.*]] = class_method [[CAST_ARG2_LOADED]] : $PropertyRequirementBase, #PropertyRequirementBase.width!modify.1
@@ -481,7 +481,7 @@
// CHECK-NEXT: return [[TUPLE]]
// CHECK-LABEL: sil private [transparent] [thunk] @$s9witnesses34PropertyRequirementWitnessFromBaseCAA0bC0A2aDP5depthSivMTW
- // CHECK: bb0([[ARG2:%.*]] : @trivial $*PropertyRequirementWitnessFromBase):
+ // CHECK: bb0([[ARG2:%.*]] : $*PropertyRequirementWitnessFromBase):
// CHECK: [[ARG2_LOADED:%[0-9][0-9]*]] = load_borrow [[ARG2]]
// CHECK: [[METH:%.*]] = class_method [[ARG2_LOADED]] : $PropertyRequirementWitnessFromBase, #PropertyRequirementWitnessFromBase.depth!modify.1
// CHECK-NEXT: ([[RES:%.*]], [[TOKEN:%.*]]) = begin_apply [[METH]]([[ARG2_LOADED]]) : $@yield_once @convention(method) (@guaranteed PropertyRequirementWitnessFromBase) -> @yields @inout Int
@@ -501,7 +501,7 @@
}
// CHECK-LABEL: sil private [transparent] [thunk] @$s9witnesses16GenericCrashableCyxGAA0C0A2aEP5crashyyFTW : $@convention(witness_method: Crashable) <τ_0_0> (@in_guaranteed GenericCrashable<τ_0_0>) -> ()
-// CHECK: bb0(%0 : @trivial $*GenericCrashable<τ_0_0>):
+// CHECK: bb0(%0 : $*GenericCrashable<τ_0_0>):
// CHECK-NEXT: [[SELF:%.*]] = load_borrow %0 : $*GenericCrashable<τ_0_0>
// CHECK-NEXT: [[BASE:%.*]] = upcast [[SELF]] : $GenericCrashable<τ_0_0> to $CrashableBase
// CHECK-NEXT: [[FN:%.*]] = class_method [[BASE]] : $CrashableBase, #CrashableBase.crash!1 : (CrashableBase) -> () -> (), $@convention(method) (@guaranteed CrashableBase) -> ()
@@ -532,7 +532,7 @@
}
// CHECK-LABEL: sil private [transparent] [thunk] @$s9witnesses13InoutFunctionVAA0bC3ReqA2aDP06updateC01xy1TQzycz_tFTW
-// CHECK: bb0(%0 : @trivial $*@callee_guaranteed () -> @out (), %1 : @trivial $*InoutFunction):
+// CHECK: bb0(%0 : $*@callee_guaranteed () -> @out (), %1 : $*InoutFunction):
// CHECK-NEXT: [[TEMP:%.*]] = alloc_stack $@callee_guaranteed () -> ()
// Reabstract the contents of the inout argument into the temporary.
// CHECK-NEXT: [[OLD_FN:%.*]] = load [take] %0
diff --git a/test/SILOptimizer/access_enforcement_selection.sil b/test/SILOptimizer/access_enforcement_selection.sil
index 306a724..5302140 100644
--- a/test/SILOptimizer/access_enforcement_selection.sil
+++ b/test/SILOptimizer/access_enforcement_selection.sil
@@ -7,7 +7,7 @@
// Test undef begin_access operands.
// CHECK-LABEL: sil hidden @undefStack : $@convention(thin) (Builtin.Int64) -> Builtin.Int64 {
-// CHECK: bb0(%0 : @trivial $Builtin.Int64):
+// CHECK: bb0(%0 : $Builtin.Int64):
// CHECK: bb1:
// CHECK: [[WRITE:%.*]] = begin_access [modify] [static] undef : $*Builtin.Int64
// CHECK: store %{{.*}} to [trivial] [[WRITE]] : $*Builtin.Int64
@@ -19,7 +19,7 @@
// CHECK: end_access [[READ]] : $*Builtin.Int64
// CHECK-LABEL: } // end sil function 'undefStack'
sil hidden @undefStack : $@convention(thin) (Builtin.Int64) -> Builtin.Int64 {
-bb0(%0 : @trivial $Builtin.Int64):
+bb0(%0 : $Builtin.Int64):
br bb1
bb1:
@@ -190,7 +190,7 @@
// CHECK: begin_access [read] [static]
// CHECK-LABEL: } // end sil function 'borrowedClosure'
sil @borrowedClosure : $@convention(thin) (@inout_aliasable Builtin.Int64) -> () {
-bb0(%0 : @trivial $*Builtin.Int64):
+bb0(%0 : $*Builtin.Int64):
%access = begin_access [read] [unknown] %0 : $*Builtin.Int64
%val = load [trivial] %access : $*Builtin.Int64
end_access %access : $*Builtin.Int64
@@ -222,7 +222,7 @@
}
sil @dontAssert : $@convention(thin) (Builtin.Int64) -> (@out Builtin.Int64) {
-bb0(%0 : @trivial $*Builtin.Int64, %1 : @trivial $Builtin.Int64):
+bb0(%0 : $*Builtin.Int64, %1 : $Builtin.Int64):
store %1 to [trivial] %0 : $*Builtin.Int64
%f = function_ref @closureCapturingByStorageAddress : $@convention(thin) (@inout_aliasable Builtin.Int64) -> ()
%closure = partial_apply %f(%0) : $@convention(thin) (@inout_aliasable Builtin.Int64) -> ()
@@ -230,7 +230,7 @@
}
sil [canonical] @serializedClosureCapturingByStorageAddress : $@convention(thin) (@inout_aliasable Builtin.Int64) -> () {
-bb0(%0 : @trivial $*Builtin.Int64):
+bb0(%0 : $*Builtin.Int64):
%2 = begin_access [read] [unknown] %0 : $*Builtin.Int64
%3 = load [trivial] %2 : $*Builtin.Int64
end_access %2 : $*Builtin.Int64
@@ -279,7 +279,7 @@
// CHECK-LABEL: sil @testDirectApplyNoescapeDynamic : $@convention(thin) (Builtin.Int64) -> () {
// CHECK-LABEL: // end sil function 'testDirectApplyNoescapeDynamic'
sil @testDirectApplyNoescapeDynamic : $@convention(thin) (Builtin.Int64) -> () {
-bb0(%0 : @trivial $Builtin.Int64):
+bb0(%0 : $Builtin.Int64):
%box = alloc_box ${ var Builtin.Int64 }, var, name "localVal"
%boxproj = project_box %box : ${ var Builtin.Int64 }, 0
@@ -317,7 +317,7 @@
// CHECK: begin_access [modify] [dynamic] %1 : $*Builtin.Int64
// CHECK-LABEL: end sil function 'directApplyNoescapeDynamicAppliedClosure'
sil private @directApplyNoescapeDynamicAppliedClosure : $@convention(thin) (@guaranteed @callee_guaranteed () -> (), @inout_aliasable Builtin.Int64) -> () {
-bb0(%0 : @guaranteed $@callee_guaranteed () -> (), %1 : @trivial $*Builtin.Int64):
+bb0(%0 : @guaranteed $@callee_guaranteed () -> (), %1 : $*Builtin.Int64):
%4 = begin_access [modify] [unknown] %1 : $*Builtin.Int64
%5 = function_ref @takesInoutAndClosure : $@convention(thin) (@inout Builtin.Int64, @guaranteed @callee_guaranteed () -> ()) -> ()
diff --git a/test/SILOptimizer/access_marker_verify.swift b/test/SILOptimizer/access_marker_verify.swift
index 57465e1..99992ee 100644
--- a/test/SILOptimizer/access_marker_verify.swift
+++ b/test/SILOptimizer/access_marker_verify.swift
@@ -51,7 +51,7 @@
}
// The verifier ignores the load of the self box.
// CHECK-LABEL: sil hidden @$s20access_marker_verify11StructOfIntVACycfC : $@convention(method) (@thin StructOfInt.Type) -> StructOfInt {
-// CHECK: bb0(%0 : @trivial $@thin StructOfInt.Type):
+// CHECK: bb0(%0 : $@thin StructOfInt.Type):
// CHECK: [[BOX:%.*]] = alloc_box ${ var StructOfInt }, var, name "self"
// CHECK: [[UNINIT:%.*]] = mark_uninitialized [rootself] [[BOX]] : ${ var StructOfInt }
// CHECK: [[PROJ:%.*]] = project_box [[UNINIT]] : ${ var StructOfInt }, 0
@@ -130,7 +130,7 @@
// CHECK-LABEL: } // end sil function '$s20access_marker_verify9SubHasIntCACycfc'
// CHECK-LABEL: sil hidden @$s20access_marker_verify9SubHasIntC1xACSi_tcfc : $@convention(method) (Int, @owned SubHasInt) -> @owned SubHasInt {
-// CHECK: bb0(%0 : @trivial $Int, %1 : @owned $SubHasInt):
+// CHECK: bb0(%0 : $Int, %1 : @owned $SubHasInt):
// CHECK: [[BOX:%.*]] = alloc_box ${ var SubHasInt }, let, name "self"
// CHECK: [[UNINIT:%.*]] = mark_uninitialized [derivedself] [[BOX]] : ${ var SubHasInt }
// CHECK: [[PROJ:%.*]] = project_box [[UNINIT]] : ${ var SubHasInt }, 0
@@ -187,7 +187,7 @@
}
}
// CHECK-LABEL: sil hidden @$s20access_marker_verify10SubWrapperCyAcA03IntE0Vcfc : $@convention(method) (IntWrapper, @owned SubWrapper) -> @owned SubWrapper {
-// CHECK: bb0(%0 : @trivial $IntWrapper, %1 : @owned $SubWrapper):
+// CHECK: bb0(%0 : $IntWrapper, %1 : @owned $SubWrapper):
// CHECK: alloc_box ${ var SubWrapper }, let, name "self"
// CHECK: mark_uninitialized [derivedself]
// CHECK: project_box
@@ -238,7 +238,7 @@
return lhs
}
// CHECK-LABEL: sil hidden @$s20access_marker_verify11testModifySyAA11StructOfIntVADF : $@convention(thin) (StructOfInt) -> StructOfInt {
-// CHECK: bb0(%0 : @trivial $StructOfInt):
+// CHECK: bb0(%0 : $StructOfInt):
// CHECK: alloc_box ${ var StructOfInt }, var, name "lhs"
// CHECK: mark_uninitialized [var]
// CHECK: project_box
@@ -263,7 +263,7 @@
return x
}
// CHECK-LABEL: sil hidden @$s20access_marker_verify14testInitLValue1pSiAA12HasIntGetter_p_tF : $@convention(thin) (@in_guaranteed HasIntGetter) -> Int {
-// CHECK: bb0(%0 : @trivial $*HasIntGetter):
+// CHECK: bb0(%0 : $*HasIntGetter):
// CHECK: alloc_box ${ var Int }, var, name "x"
// CHECK: [[PROJ:%.*]] = project_box
// CHECK: [[OPENED:%.*]] = open_existential_addr immutable_access %0
@@ -289,7 +289,7 @@
return lhs
}
// CHECK-LABEL: sil hidden @$s20access_marker_verify9testCopySyAA11StructOfIntVADF : $@convention(thin) (StructOfInt) -> StructOfInt {
-// CHECK: bb0(%0 : @trivial $StructOfInt):
+// CHECK: bb0(%0 : $StructOfInt):
// CHECK: alloc_stack $StructOfInt, let, name "lhs"
// CHECK: [[UNINIT:%.*]] = mark_uninitialized [var]
// CHECK-NOT: begin_access
@@ -304,7 +304,7 @@
return lhs.i
}
// CHECK-LABEL: sil hidden @$s20access_marker_verify16testLocalVarInitySiAA11StructOfIntVF : $@convention(thin) (StructOfInt) -> Int {
-// CHECK: bb0(%0 : @trivial $StructOfInt):
+// CHECK: bb0(%0 : $StructOfInt):
// CHECK: alloc_box ${ var StructOfInt }, var, name "lhs"
// CHECK: [[BOX:%.*]] = project_box
// CHECK: [[ACCESS:%.*]] = begin_access [modify] [unsafe] [[BOX]]
@@ -325,7 +325,7 @@
return GenericEnum(t: t)
}
// CHECK-LABEL: sil hidden @$s20access_marker_verify11GenericEnumO1tACyxGSgx_tcfC : $@convention(method) <T> (@in T, @thin GenericEnum<T>.Type) -> @out Optional<GenericEnum<T>> {
-// CHECK: bb0(%0 : @trivial $*Optional<GenericEnum<T>>, %1 : @trivial $*T, %2 : @trivial $@thin GenericEnum<T>.Type):
+// CHECK: bb0(%0 : $*Optional<GenericEnum<T>>, %1 : $*T, %2 : $@thin GenericEnum<T>.Type):
// CHECK: alloc_box $<τ_0_0> { var GenericEnum<τ_0_0> } <T>, var, name "self"
// CHECK: mark_uninitialized [delegatingself] %3 : $<τ_0_0> { var GenericEnum<τ_0_0> } <T>
// CHECK: [[PROJ:%.*]] = project_box
@@ -426,7 +426,7 @@
func enumLValueHelper(_: inout E, _: inout E) {}
// CHECK-LABEL: sil hidden @$s20access_marker_verify14testEnumLValue1syAA08StructOfE0Vz_tF : $@convention(thin) (@inout StructOfEnum) -> () {
-// CHECK: bb0(%0 : @trivial $*StructOfEnum):
+// CHECK: bb0(%0 : $*StructOfEnum):
// CHECK: begin_access [modify] [unknown] %0 : $*StructOfEnum
// CHECK: struct_element_addr %2 : $*StructOfEnum, #StructOfEnum.e
// CHECK: begin_access [modify] [unknown] %0 : $*StructOfEnum
@@ -532,7 +532,7 @@
}
}
// CHECK-LABEL: sil hidden @$s20access_marker_verify15OptionalWithMapO3mapyqd__Sgqd__xKXEKlF : $@convention(method) <Wrapped><U> (@noescape @callee_guaranteed (@in_guaranteed Wrapped) -> (@out U, @error Error), @in_guaranteed OptionalWithMap<Wrapped>) -> (@out Optional<U>, @error Error) {
-// CHECK: bb0(%0 : @trivial $*Optional<U>, %1 : @trivial $@noescape @callee_guaranteed (@in_guaranteed Wrapped) -> (@out U, @error Error), %2 : @trivial $*OptionalWithMap<Wrapped>):
+// CHECK: bb0(%0 : $*Optional<U>, %1 : $@noescape @callee_guaranteed (@in_guaranteed Wrapped) -> (@out U, @error Error), %2 : $*OptionalWithMap<Wrapped>):
// CHECK: [[STK:%.]] = alloc_stack $OptionalWithMap<Wrapped>
// CHECK-NOT: begin_access
// CHECK: copy_addr %2 to [initialization] [[STK]] : $*OptionalWithMap<Wrapped>
@@ -559,7 +559,7 @@
}
}
// CHECK-LABEL: sil hidden @$s20access_marker_verify14DelegatingInitV1iACSi_tcfC : $@convention(method) (Int, @thin DelegatingInit.Type) -> DelegatingInit {
-// CHECK: bb0(%0 : @trivial $Int, %1 : @trivial $@thin DelegatingInit.Type):
+// CHECK: bb0(%0 : $Int, %1 : $@thin DelegatingInit.Type):
// CHECK: alloc_box ${ var DelegatingInit }, var, name "self"
// CHECK: mark_uninitialized [rootself] %2 : ${ var DelegatingInit }
// CHECK: [[BOX:%.*]] = project_box
@@ -578,7 +578,7 @@
return p.pointee
}
// CHECK-LABEL: sil hidden @$s20access_marker_verify13testAddressor1pSiSPySiG_tF : $@convention(thin) (UnsafePointer<Int>) -> Int {
-// CHECK: bb0(%0 : @trivial $UnsafePointer<Int>):
+// CHECK: bb0(%0 : $UnsafePointer<Int>):
// CHECK: apply
// CHECK: struct_extract
// CHECK: [[ADR:%.*]] = pointer_to_address
@@ -640,7 +640,7 @@
}
}
// CHECK-LABEL: sil hidden @$s20access_marker_verify23GenericStructWithGetterV5valueAC5ValueVyx_Gvg : $@convention(method) <T> (@in_guaranteed GenericStructWithGetter<T>) -> GenericStructWithGetter<T>.Value {
-// CHECK: bb0(%0 : @trivial $*GenericStructWithGetter<T>):
+// CHECK: bb0(%0 : $*GenericStructWithGetter<T>):
// CHECK: [[ADR:%.*]] = struct_element_addr %0 : $*GenericStructWithGetter<T>, #GenericStructWithGetter.val
// CHECK-NOT: begin_access
// CHECK: load [trivial] [[ADR]] : $*Int
@@ -665,7 +665,7 @@
}
}
// CHECK-LABEL: sil hidden @$s20access_marker_verify16StructWithSetterV3inc0G3ValySi_tF : $@convention(method) (Int, @inout StructWithSetter) -> () {
-// CHECK: bb0(%0 : @trivial $Int, %1 : @trivial $*StructWithSetter):
+// CHECK: bb0(%0 : $Int, %1 : $*StructWithSetter):
// CHECK: [[FORMALACCESS:%.*]] = begin_access [modify] [unknown] %1
// CHECK: alloc_stack $Int
// CHECK: load [trivial] [[FORMALACCESS]] : $*StructWithSetter
@@ -695,7 +695,7 @@
increment(&l.cat)
}
// CHECK-LABEL: sil hidden @$s20access_marker_verify34inoutWriteOfLazyFinalClassProperty1lyAA0ghiJ0Cz_tF : $@convention(thin) (@inout LazyFinalClassProperty) -> () {
-// CHECK: bb0(%0 : @trivial $*LazyFinalClassProperty):
+// CHECK: bb0(%0 : $*LazyFinalClassProperty):
// CHECK: [[FORMALACCESS:%.*]] = begin_access [read] [unknown] %0 : $*LazyFinalClassProperty
// CHECK: load [copy] [[FORMALACCESS]] : $*LazyFinalClassProperty
// CHECK: end_access [[FORMALACCESS]] : $*LazyFinalClassProperty
@@ -721,7 +721,7 @@
return l.cat
}
// CHECK-LABEL: sil hidden @$s20access_marker_verify35inoutAccessOfLazyFinalClassProperty1lSiAA0ghiJ0Cz_tF : $@convention(thin) (@inout LazyFinalClassProperty) -> Int {
-// CHECK: bb0(%0 : @trivial $*LazyFinalClassProperty):
+// CHECK: bb0(%0 : $*LazyFinalClassProperty):
// CHECK: begin_access [read] [unknown] %0
// CHECK: load [copy]
// CHECK: end_access
@@ -739,7 +739,7 @@
var storedFunction: () -> Int = { 0 }
}
// CHECK-LABEL: sil private [transparent] [thunk] @$s20access_marker_verify1CCAA12AbstractableA2aDP14storedFunction6ResultQzycvMTW : $@yield_once @convention(witness_method: Abstractable) (@inout C) -> @yields @inout @callee_guaranteed () -> @out Int
-// CHECK: bb0(%0 : @trivial $*C):
+// CHECK: bb0(%0 : $*C):
// CHECK-NEXT: [[SELF:%.*]] = load_borrow %0 : $*C
// CHECK-NEXT: [[MODIFY:%.*]] = class_method [[SELF]] : $C, #C.storedFunction!modify.1
// CHECK-NEXT: ([[ADDR:%.*]], [[TOKEN:%.*]]) = begin_apply [[MODIFY]]([[SELF]])
@@ -833,7 +833,7 @@
return (p.c, p.c)
}
// CHECK-LABEL: sil hidden @$s20access_marker_verify14testMixedTuple1pAA9BaseClassC_yptAA03HasH6Getter_p_tF : $@convention(thin) (@in_guaranteed HasClassGetter) -> (@owned BaseClass, @out Any) {
-// CHECK: bb0(%0 : @trivial $*Any, %1 : @trivial $*HasClassGetter):
+// CHECK: bb0(%0 : $*Any, %1 : $*HasClassGetter):
// CHECK: [[P1:%.*]] = open_existential_addr immutable_access %1 : $*HasClassGetter to $*@opened
// CHECK: [[TEMP1:%.*]] = alloc_stack $@opened
// CHECK-NOT: begin_access
@@ -864,7 +864,7 @@
}
}
// CHECK-LABEL: sil hidden @$s20access_marker_verify13CanCastStructV5unboxqd__SgySHRd__lF : $@convention(method) <Base where Base : Hashable><T where T : Hashable> (@in_guaranteed CanCastStruct<Base>) -> @out Optional<T> {
-// CHECK: bb0(%0 : @trivial $*Optional<T>, %1 : @trivial $*CanCastStruct<Base>):
+// CHECK: bb0(%0 : $*Optional<T>, %1 : $*CanCastStruct<Base>):
// CHECK: [[OUT_ENUM:%.*3]] = init_enum_data_addr %0 : $*Optional<T>, #Optional.some!enumelt.1
// CHECK: [[TEMP_SUB:%.*]] = alloc_stack $Optional<CanCastStruct<T>>
// CHECK: [[TEMP_BASE:%.*]] = alloc_stack $CanCast
@@ -896,7 +896,7 @@
}
}
// CHECK-LABEL: sil hidden @$s20access_marker_verify19testOpenExistential1pyAA4PBar_p_tF : $@convention(thin) (@in_guaranteed PBar) -> () {
-// CHECK: bb0(%0 : @trivial $*PBar):
+// CHECK: bb0(%0 : $*PBar):
// CHECK: [[Q0:%.*]] = alloc_stack $Optional<Q>, let, name "q0"
// CHECK: [[PBAR:%.*]] = alloc_stack $PBar
// CHECK-NOT: begin_access
@@ -964,7 +964,7 @@
}
}
// CHECK-LABEL: sil hidden @$s20access_marker_verify8UsesSelfPAAE04testE01a1byx_xtFZ : $@convention(method) <Self where Self : UsesSelf> (@in_guaranteed Self, @in_guaranteed Self, @thick Self.Type) -> () {
-// CHECK: bb0(%0 : @trivial $*Self, %1 : @trivial $*Self, %2 : @trivial $@thick Self.Type):
+// CHECK: bb0(%0 : $*Self, %1 : $*Self, %2 : $@thick Self.Type):
// CHECK: apply %{{.*}}<Self>(%1, %0) : $@convention(witness_method: UsesSelf) <τ_0_0 where τ_0_0 : UsesSelf> (@in_guaranteed τ_0_0, @in_guaranteed τ_0_0) -> ()
// CHECK-LABEL: } // end sil function '$s20access_marker_verify8UsesSelfPAAE04testE01a1byx_xtFZ'
@@ -975,7 +975,7 @@
}
}
// CHECK-LABEL: sil hidden @$s20access_marker_verify16StructWithLayoutVACycfC : $@convention(method) (@thin StructWithLayout.Type) -> StructWithLayout {
-// CHECK: bb0(%0 : @trivial $@thin StructWithLayout.Type):
+// CHECK: bb0(%0 : $@thin StructWithLayout.Type):
// CHECK: alloc_box ${ var StructWithLayout }, var, name "self"
// CHECK: mark_uninitialized [rootself] %{{.*}} : ${ var StructWithLayout }
// CHECK: [[PROJ:%.*]] = project_box %{{.*}} : ${ var StructWithLayout }, 0
@@ -997,7 +997,7 @@
y.pointee = x
}
// CHECK-LABEL: sil hidden @$s20access_marker_verify15testPointerInit1x1yySi_SpySiGtF : $@convention(thin) (Int, UnsafeMutablePointer<Int>) -> () {
-// CHECK: bb0(%0 : @trivial $Int, %1 : @trivial $UnsafeMutablePointer<Int>):
+// CHECK: bb0(%0 : $Int, %1 : $UnsafeMutablePointer<Int>):
// call addressor
// CHECK: [[POINTEE:%.*]] = apply %{{.*}}<Int>(%1) : $@convention(method) <τ_0_0> (UnsafeMutablePointer<τ_0_0>) -> UnsafeMutablePointer<τ_0_0>
// CHECK: [[RAWPTR:%.*]] = struct_extract [[POINTEE]] : $UnsafeMutablePointer<Int>, #UnsafeMutablePointer._rawValue
diff --git a/test/SILOptimizer/access_marker_verify_objc.swift b/test/SILOptimizer/access_marker_verify_objc.swift
index ce26d33..a8f855a 100644
--- a/test/SILOptimizer/access_marker_verify_objc.swift
+++ b/test/SILOptimizer/access_marker_verify_objc.swift
@@ -48,7 +48,7 @@
// thunk for @callee_unowned @convention(block) (@unowned Int) -> (@unowned Int)
// CHECK-LABEL: sil shared [transparent] [serializable] [reabstraction_thunk] @$sS2iIyByd_S2iIegyd_TR : $@convention(thin) (Int, @guaranteed @convention(block) @noescape (Int) -> Int) -> Int {
-// CHECK: bb0(%0 : @trivial $Int, %1 : @guaranteed $@convention(block) @noescape (Int) -> Int):
+// CHECK: bb0(%0 : $Int, %1 : @guaranteed $@convention(block) @noescape (Int) -> Int):
// CHECK: %{{.*}} = apply %1(%0) : $@convention(block) @noescape (Int) -> Int
// CHECK: return %{{.*}} : $Int
// CHECK-LABEL: } // end sil function '$sS2iIyByd_S2iIegyd_TR'
@@ -56,7 +56,7 @@
// --- C global.
// The verifier should ignore this access.
// CHECK-LABEL: sil hidden @$s25access_marker_verify_objc14GlobalPropertyC14globalCFStringSo0H3RefavgZ : $@convention(method) (@thick GlobalProperty.Type) -> @owned CFString {
-// CHECK: bb0(%0 : @trivial $@thick GlobalProperty.Type):
+// CHECK: bb0(%0 : $@thick GlobalProperty.Type):
// CHECK: [[GA:%.*]] = global_addr @constCGlobal : $*Optional<CFString>
// CHECK: [[STR:%.*]] = load [copy] [[GA]] : $*Optional<CFString>
// CHECK: switch_enum [[STR]] : $Optional<CFString>, case #Optional.some!enumelt.1: [[SOMEBB:bb.*]], case #Optional.none!enumelt: bb{{.*}}
diff --git a/test/SILOptimizer/access_summary_analysis.sil b/test/SILOptimizer/access_summary_analysis.sil
index 8eb1a35..f057fb0 100644
--- a/test/SILOptimizer/access_summary_analysis.sil
+++ b/test/SILOptimizer/access_summary_analysis.sil
@@ -19,7 +19,7 @@
// CHECK-LABEL: @assignsToCapture
// CHECK-NEXT: ([modify], [])
sil private @assignsToCapture : $@convention(thin) (@inout_aliasable Int, Int) -> () {
-bb0(%0 : @trivial $*Int, %1: @trivial $Int):
+bb0(%0 : $*Int, %1: $Int):
%2 = begin_access [modify] [unknown] %0 : $*Int
assign %1 to %2 : $*Int
end_access %2 : $*Int
@@ -30,7 +30,7 @@
// CHECK-LABEL: @readsAndModifiesSameCapture
// CHECK-NEXT: ([modify])
sil private @readsAndModifiesSameCapture : $@convention(thin) (@inout_aliasable Int) -> () {
-bb0(%0 : @trivial $*Int):
+bb0(%0 : $*Int):
%1 = begin_access [read] [unknown] %0 : $*Int
end_access %1 : $*Int
%2 = begin_access [modify] [unknown] %0 : $*Int
@@ -42,7 +42,7 @@
// CHECK-LABEL: @readsAndModifiesSeparateCaptures
// CHECK-NEXT: ([read], [modify])
sil private @readsAndModifiesSeparateCaptures : $@convention(thin) (@inout_aliasable Int, @inout_aliasable Int) -> () {
-bb0(%0 : @trivial $*Int, %1 : @trivial $*Int):
+bb0(%0 : $*Int, %1 : $*Int):
%2 = begin_access [read] [unknown] %0 : $*Int
end_access %2 : $*Int
%3 = begin_access [modify] [unknown] %1 : $*Int
@@ -54,7 +54,7 @@
// CHECK-LABEL: @modifyInModifySubAccess
// CHECK-NEXT: ([modify])
sil private @modifyInModifySubAccess : $@convention(thin) (@inout_aliasable Int) -> () {
-bb0(%0 : @trivial $*Int):
+bb0(%0 : $*Int):
%1 = begin_access [modify] [unknown] %0 : $*Int
%2 = begin_access [modify] [unknown] %1 : $*Int
end_access %2 : $*Int
@@ -66,7 +66,7 @@
// CHECK-LABEL: @readInModifySubAccess
// CHECK-NEXT: ([modify])
sil private @readInModifySubAccess : $@convention(thin) (@inout_aliasable Int) -> () {
-bb0(%0 : @trivial $*Int):
+bb0(%0 : $*Int):
%1 = begin_access [modify] [unknown] %0 : $*Int
%2 = begin_access [read] [unknown] %1 : $*Int
end_access %2 : $*Int
@@ -78,7 +78,7 @@
// CHECK-LABEL: @accessSeparateStoredPropertiesOfSameCapture
// CHECK-NEXT: ([.f modify, .g read])
sil private @accessSeparateStoredPropertiesOfSameCapture : $@convention(thin) (@inout_aliasable StructWithStoredProperties) -> () {
-bb0(%0 : @trivial $*StructWithStoredProperties):
+bb0(%0 : $*StructWithStoredProperties):
%1 = begin_access [modify] [unknown] %0: $*StructWithStoredProperties
%2 = struct_element_addr %1 : $*StructWithStoredProperties, #StructWithStoredProperties.f
end_access %1 : $*StructWithStoredProperties
@@ -92,7 +92,7 @@
// CHECK-LABEL: @accessSeparateElementsOfSameCapture
// CHECK-NEXT: ([.0 modify, .1 read])
sil private @accessSeparateElementsOfSameCapture : $@convention(thin) (@inout_aliasable (Int, Int)) -> () {
-bb0(%0 : @trivial $*(Int, Int)):
+bb0(%0 : $*(Int, Int)):
%1 = begin_access [modify] [unknown] %0: $*(Int, Int)
%2 = tuple_element_addr %1 : $*(Int, Int), 0
end_access %1 : $*(Int, Int)
@@ -106,7 +106,7 @@
// CHECK-LABEL: @accessSeparateNestedStoredPropertiesOfSameCapture
// CHECK-NEXT: ([.a.f modify, .b.g modify])
sil private @accessSeparateNestedStoredPropertiesOfSameCapture : $@convention(thin) (@inout_aliasable StructWithStructWithStoredProperties) -> () {
-bb0(%0 : @trivial $*StructWithStructWithStoredProperties):
+bb0(%0 : $*StructWithStructWithStoredProperties):
%1 = begin_access [modify] [unknown] %0: $*StructWithStructWithStoredProperties
%2 = struct_element_addr %1 : $*StructWithStructWithStoredProperties, #StructWithStructWithStoredProperties.a
%3 = struct_element_addr %2 : $*StructWithStoredProperties, #StructWithStoredProperties.f
@@ -123,7 +123,7 @@
// CHECK-LABEL: @accessSeparateStoredPropertiesOfSameCaptureOppositeOfDeclarationOrder
// CHECK-NEXT: ([.f read, .g modify])
sil private @accessSeparateStoredPropertiesOfSameCaptureOppositeOfDeclarationOrder : $@convention(thin) (@inout_aliasable StructWithStoredProperties) -> () {
-bb0(%0 : @trivial $*StructWithStoredProperties):
+bb0(%0 : $*StructWithStoredProperties):
%1 = begin_access [modify] [unknown] %0: $*StructWithStoredProperties
%2 = struct_element_addr %1 : $*StructWithStoredProperties, #StructWithStoredProperties.g
end_access %1 : $*StructWithStoredProperties
@@ -137,7 +137,7 @@
// CHECK-LABEL: @accessAggregateDoesNotSubsumeAccessStoredProp
// CHECK-NEXT: ([modify, .g modify])
sil private @accessAggregateDoesNotSubsumeAccessStoredProp : $@convention(thin) (@inout_aliasable StructWithStoredProperties) -> () {
-bb0(%0 : @trivial $*StructWithStoredProperties):
+bb0(%0 : $*StructWithStoredProperties):
%1 = begin_access [modify] [unknown] %0: $*StructWithStoredProperties
end_access %1 : $*StructWithStoredProperties
%4 = begin_access [modify] [unknown] %0: $*StructWithStoredProperties
@@ -150,7 +150,7 @@
// CHECK-LABEL: @accessAggregateDoesNotSubsumeAccessStoredPropWithAggregateSecond
// CHECK-NEXT: ([modify, .f modify])
sil private @accessAggregateDoesNotSubsumeAccessStoredPropWithAggregateSecond : $@convention(thin) (@inout_aliasable StructWithStoredProperties) -> () {
-bb0(%0 : @trivial $*StructWithStoredProperties):
+bb0(%0 : $*StructWithStoredProperties):
%1 = begin_access [modify] [unknown] %0: $*StructWithStoredProperties
%2 = struct_element_addr %1 : $*StructWithStoredProperties, #StructWithStoredProperties.f
end_access %1 : $*StructWithStoredProperties
@@ -163,7 +163,7 @@
// CHECK-LABEL: @accessSameStoredPropertyOfSameCapture
// CHECK-NEXT: ([.f modify])
sil private @accessSameStoredPropertyOfSameCapture : $@convention(thin) (@inout_aliasable StructWithStoredProperties) -> () {
-bb0(%0 : @trivial $*StructWithStoredProperties):
+bb0(%0 : $*StructWithStoredProperties):
%1 = begin_access [read] [unknown] %0: $*StructWithStoredProperties
%2 = struct_element_addr %1 : $*StructWithStoredProperties, #StructWithStoredProperties.f
end_access %1 : $*StructWithStoredProperties
@@ -177,7 +177,7 @@
// CHECK-LABEL: @accessSeparateStoredPropertiesOfSameCaptureWithTSanInstrumentation
// CHECK-NEXT: ([.f modify, .g read])
sil private @accessSeparateStoredPropertiesOfSameCaptureWithTSanInstrumentation : $@convention(thin) (@inout_aliasable StructWithStoredProperties) -> () {
-bb0(%0 : @trivial $*StructWithStoredProperties):
+bb0(%0 : $*StructWithStoredProperties):
%1 = begin_access [modify] [unknown] %0: $*StructWithStoredProperties
%2 = builtin "tsanInoutAccess"(%1 : $*StructWithStoredProperties) : $()
%3 = struct_element_addr %1 : $*StructWithStoredProperties, #StructWithStoredProperties.f
@@ -197,7 +197,7 @@
// This mirrors the code pattern for materializeForSet on a struct stored
// property
sil private @addressToPointerOfStructElementAddr : $@convention(method) (@inout StructWithStoredProperties) -> (Builtin.RawPointer) {
-bb0(%1 : @trivial $*StructWithStoredProperties):
+bb0(%1 : $*StructWithStoredProperties):
%2 = struct_element_addr %1 : $*StructWithStoredProperties, #StructWithStoredProperties.f
%3 = address_to_pointer %2 : $*Int to $Builtin.RawPointer
return %3 : $(Builtin.RawPointer)
@@ -206,7 +206,7 @@
// CHECK-LABEL: @endUnpairedAccess
// CHECK-NEXT: ([])
sil private @endUnpairedAccess : $@convention(method) (@inout Builtin.UnsafeValueBuffer) -> () {
-bb0(%0 : @trivial $*Builtin.UnsafeValueBuffer):
+bb0(%0 : $*Builtin.UnsafeValueBuffer):
end_unpaired_access [dynamic] %0 : $*Builtin.UnsafeValueBuffer
%1 = tuple ()
return %1 : $()
@@ -215,7 +215,7 @@
// CHECK-LABEL: @tupleElementAddr
// CHECK-NEXT: ([modify])
sil private @tupleElementAddr : $@convention(thin) (@inout_aliasable (Int, Int)) -> () {
-bb0(%0 : @trivial $*(Int, Int)):
+bb0(%0 : $*(Int, Int)):
%1 = tuple_element_addr %0 : $*(Int, Int), 1
%2 = begin_access [modify] [unknown] %1 : $*Int
end_access %2 : $*Int
@@ -228,7 +228,7 @@
// CHECK-LABEL: @callClosureWithMissingBody
// CHECK-NEXT: ([], [])
sil private @callClosureWithMissingBody : $@convention(thin) (@inout_aliasable Int, Int) -> () {
-bb0(%0 : @trivial $*Int, %1 : @trivial $Int):
+bb0(%0 : $*Int, %1 : $Int):
%2 = function_ref @closureWithMissingBody : $@convention(thin) (@inout_aliasable Int, Int) -> ()
%3 = apply %2(%0, %1) : $@convention(thin) (@inout_aliasable Int, Int) -> () // no-crash
%4 = tuple ()
@@ -238,7 +238,7 @@
// CHECK-LABEL: @callClosureThatModifiesCapture
// CHECK-NEXT: ([modify], [])
sil private @callClosureThatModifiesCapture : $@convention(thin) (@inout_aliasable Int, Int) -> () {
-bb0(%0 : @trivial $*Int, %1 : @trivial $Int):
+bb0(%0 : $*Int, %1 : $Int):
%2 = function_ref @assignsToCapture : $@convention(thin) (@inout_aliasable Int, Int) -> ()
%3 = apply %2(%0, %1) : $@convention(thin) (@inout_aliasable Int, Int) -> ()
%4 = tuple ()
@@ -248,7 +248,7 @@
// CHECK-LABEL: @throwingClosureThatModifesCapture
// CHECK-NEXT: ([modify])
sil private @throwingClosureThatModifesCapture : $@convention(thin) (@inout_aliasable Int) -> @error Error {
-bb0(%0 : @trivial $*Int):
+bb0(%0 : $*Int):
%1 = begin_access [modify] [unknown] %0 : $*Int
end_access %1 : $*Int
%2 = tuple ()
@@ -257,10 +257,10 @@
// CHECK-LABEL: @callThrowingClosureThatModifiesCapture
// CHECK-NEXT: ([modify])
sil private @callThrowingClosureThatModifiesCapture : $@convention(thin) (@inout_aliasable Int) -> () {
-bb0(%0 : @trivial $*Int):
+bb0(%0 : $*Int):
%1 = function_ref @throwingClosureThatModifesCapture : $@convention(thin) (@inout_aliasable Int) -> @error Error
try_apply %1(%0) : $@convention(thin) (@inout_aliasable Int) -> @error Error, normal bb1, error bb2
-bb1(%3 : @trivial $()):
+bb1(%3 : $()):
%4 = tuple ()
return %4 : $()
bb2(%5: @owned $Error):
@@ -273,7 +273,7 @@
// CHECK-LABEL: @partialApplyPassedOffToFunction
// CHECK-NEXT: ([modify], [])
sil private @partialApplyPassedOffToFunction : $@convention(thin) (@inout_aliasable Int, Int) -> () {
-bb0(%0 : @trivial $*Int, %1: @trivial $Int):
+bb0(%0 : $*Int, %1: $Int):
%2 = function_ref @assignsToCapture : $@convention(thin) (@inout_aliasable Int, Int) -> ()
%3 = partial_apply %2(%0, %1) : $@convention(thin) (@inout_aliasable Int, Int) -> ()
%4 = function_ref @takesNoEscapeClosure : $@convention(thin) (@owned @callee_owned () -> ()) -> ()
@@ -288,7 +288,7 @@
// CHECK-LABEL: @hasThreeCapturesAndTakesArgument
// CHECK-NEXT: ([], [modify], [], [read])
sil private @hasThreeCapturesAndTakesArgument : $@convention(thin) (Int, @inout_aliasable Int, @inout_aliasable Int, @inout_aliasable Int) -> () {
-bb0(%0 : @trivial $Int, %1: @trivial $*Int, %2: @trivial $*Int, %3: @trivial $*Int):
+bb0(%0 : $Int, %1: $*Int, %2: $*Int, %3: $*Int):
%4 = begin_access [modify] [unknown] %1 : $*Int
end_access %4 : $*Int
%5 = begin_access [read] [unknown] %3 : $*Int
@@ -300,7 +300,7 @@
// CHECK-LABEL: @partialApplyOfClosureTakingArgumentPassedOffToFunction
// CHECK-NEXT: ([modify], [], [read])
sil private @partialApplyOfClosureTakingArgumentPassedOffToFunction : $@convention(thin) (@inout_aliasable Int, @inout_aliasable Int, @inout_aliasable Int) -> () {
-bb0(%0 : @trivial $*Int, %1 : @trivial $*Int, %2 : @trivial $*Int):
+bb0(%0 : $*Int, %1 : $*Int, %2 : $*Int):
%3 = function_ref @hasThreeCapturesAndTakesArgument : $@convention(thin) (Int, @inout_aliasable Int, @inout_aliasable Int, @inout_aliasable Int) -> ()
%4 = partial_apply %3(%0, %1, %2) : $@convention(thin) (Int, @inout_aliasable Int, @inout_aliasable Int, @inout_aliasable Int) -> ()
%5 = function_ref @takesNoEscapeClosureTakingArgument : $@convention(thin) (@owned @callee_owned (Int) -> ()) -> ()
@@ -312,7 +312,7 @@
// CHECK-LABEL: @partialApplyFollowedByConvertFunction
// CHECK-NEXT: ([modify], [], [read])
sil private @partialApplyFollowedByConvertFunction : $@convention(thin) (@inout_aliasable Int, @inout_aliasable Int, @inout_aliasable Int) -> () {
-bb0(%0 : @trivial $*Int, %1 : @trivial $*Int, %2 : @trivial $*Int):
+bb0(%0 : $*Int, %1 : $*Int, %2 : $*Int):
%3 = function_ref @hasThreeCapturesAndTakesArgument : $@convention(thin) (Int, @inout_aliasable Int, @inout_aliasable Int, @inout_aliasable Int) -> ()
%4 = partial_apply %3(%0, %1, %2) : $@convention(thin) (Int, @inout_aliasable Int, @inout_aliasable Int, @inout_aliasable Int) -> ()
%5 = convert_function %4 : $@callee_owned (Int) -> () to $@callee_owned (Int) -> @error Error
@@ -329,7 +329,7 @@
// CHECK-LABEL: @readsAndThrows
// CHECK-NEXT: ([read])
sil private @readsAndThrows : $@convention(thin) (@inout_aliasable Int) -> (Int, @error Error) {
-bb0(%0 : @trivial $*Int):
+bb0(%0 : $*Int):
%3 = begin_access [read] [unknown] %0 : $*Int
%4 = load [trivial] %3 : $*Int
end_access %3 : $*Int
@@ -339,7 +339,7 @@
// CHECK-LABEL: @passPartialApplyAsArgumentToPartialApply
// CHECK-NEXT: ([read])
sil hidden @passPartialApplyAsArgumentToPartialApply : $@convention(thin) (@inout_aliasable Int) -> () {
-bb0(%0 : @trivial $*Int):
+bb0(%0 : $*Int):
%2 = function_ref @takesAutoClosureReturningGeneric : $@convention(thin) <τ_0_0 where τ_0_0 : Equatable> (@owned @callee_owned () -> (@out τ_0_0, @error Error)) -> ()
%3 = function_ref @readsAndThrows : $@convention(thin) (@inout_aliasable Int) -> (Int, @error Error)
%4 = partial_apply %3(%0) : $@convention(thin) (@inout_aliasable Int) -> (Int, @error Error)
@@ -353,7 +353,7 @@
// CHECK-LABEL: @reads
// CHECK-NEXT: ([read])
sil private @reads : $@convention(thin) (@inout_aliasable Int) -> Int {
-bb0(%0 : @trivial $*Int):
+bb0(%0 : $*Int):
%3 = begin_access [read] [unknown] %0 : $*Int
%4 = load [trivial] %3 : $*Int
end_access %3 : $*Int
@@ -363,7 +363,7 @@
// CHECK-LABEL: @convertPartialApplyAndPassToPartialApply
// CHECK-NEXT: ([read])
sil hidden @convertPartialApplyAndPassToPartialApply : $@convention(thin) (@inout_aliasable Int) -> () {
-bb0(%0 : @trivial $*Int):
+bb0(%0 : $*Int):
%2 = function_ref @takesAutoClosureReturningGeneric : $@convention(thin) <τ_0_0 where τ_0_0 : Equatable> (@owned @callee_owned () -> (@out τ_0_0, @error Error)) -> ()
%3 = function_ref @reads : $@convention(thin) (@inout_aliasable Int) -> Int
%4 = partial_apply %3(%0) : $@convention(thin) (@inout_aliasable Int) -> Int
@@ -378,7 +378,7 @@
// CHECK-LABEL: @selfRecursion
// CHECK-NEXT: ([modify], [])
sil private @selfRecursion : $@convention(thin) (@inout_aliasable Int, Int) -> () {
-bb0(%0 : @trivial $*Int, %1 : @trivial $Int):
+bb0(%0 : $*Int, %1 : $Int):
%2 = function_ref @selfRecursion : $@convention(thin) (@inout_aliasable Int, Int) -> ()
%3 = apply %2(%0, %1) : $@convention(thin) (@inout_aliasable Int, Int) -> ()
%4 = begin_access [modify] [unknown] %0 : $*Int
@@ -390,7 +390,7 @@
// CHECK-LABEL: @callsMutuallyRecursive
// CHECK-NEXT: ([modify], [])
sil private @callsMutuallyRecursive : $@convention(thin) (@inout_aliasable Int, Int) -> () {
-bb0(%0 : @trivial $*Int, %1 : @trivial $Int):
+bb0(%0 : $*Int, %1 : $Int):
%2 = function_ref @mutualRecursion1 : $@convention(thin) (@inout_aliasable Int, Int) -> ()
%3 = apply %2(%0, %1) : $@convention(thin) (@inout_aliasable Int, Int) -> ()
%4 = tuple ()
@@ -400,7 +400,7 @@
// CHECK-LABEL: @mutualRecursion1
// CHECK-NEXT: ([modify], [])
sil private @mutualRecursion1 : $@convention(thin) (@inout_aliasable Int, Int) -> () {
-bb0(%0 : @trivial $*Int, %1 : @trivial $Int):
+bb0(%0 : $*Int, %1 : $Int):
%2 = function_ref @mutualRecursion2 : $@convention(thin) (@inout_aliasable Int, Int) -> ()
%3 = apply %2(%0, %1) : $@convention(thin) (@inout_aliasable Int, Int) -> ()
%4 = begin_access [modify] [unknown] %0 : $*Int
@@ -412,7 +412,7 @@
// CHECK-LABEL: @mutualRecursion2
// CHECK-NEXT: ([modify], [])
sil private @mutualRecursion2 : $@convention(thin) (@inout_aliasable Int, Int) -> () {
-bb0(%0 : @trivial $*Int, %1 : @trivial $Int):
+bb0(%0 : $*Int, %1 : $Int):
%2 = function_ref @mutualRecursion1 : $@convention(thin) (@inout_aliasable Int, Int) -> ()
%3 = apply %2(%0, %1) : $@convention(thin) (@inout_aliasable Int, Int) -> ()
%4 = begin_access [read] [unknown] %0 : $*Int
@@ -436,7 +436,7 @@
// CHECK-LABEL: @multipleCycleA
// CHECK-NEXT: ([modify])
sil private @multipleCycleA : $@convention(thin) (@inout_aliasable Int) -> () {
-bb0(%0 : @trivial $*Int):
+bb0(%0 : $*Int):
%1 = function_ref @multipleCycleB : $@convention(thin) (@inout_aliasable Int) -> ()
%2 = apply %1(%0) : $@convention(thin) (@inout_aliasable Int) -> ()
%3 = begin_access [modify] [unknown] %0 : $*Int
@@ -448,7 +448,7 @@
// CHECK-LABEL: @multipleCycleB
// CHECK-NEXT: ([modify])
sil private @multipleCycleB : $@convention(thin) (@inout_aliasable Int) -> () {
-bb0(%0 : @trivial $*Int):
+bb0(%0 : $*Int):
%1 = function_ref @multipleCycleA : $@convention(thin) (@inout_aliasable Int) -> ()
%2 = apply %1(%0) : $@convention(thin) (@inout_aliasable Int) -> ()
%3 = function_ref @multipleCycleC : $@convention(thin) (@inout_aliasable Int) -> ()
@@ -460,7 +460,7 @@
// CHECK-LABEL: @multipleCycleC
// CHECK-NEXT: ([modify])
sil private @multipleCycleC : $@convention(thin) (@inout_aliasable Int) -> () {
-bb0(%0 : @trivial $*Int):
+bb0(%0 : $*Int):
%1 = function_ref @multipleCycleB : $@convention(thin) (@inout_aliasable Int) -> ()
%2 = apply %1(%0) : $@convention(thin) (@inout_aliasable Int) -> ()
%4 = tuple ()
@@ -472,7 +472,7 @@
// CHECK-LABEL: @partialApplyFollowedByConvertFunctionWithBorrow
// CHECK-NEXT: ([modify], [], [read])
sil private @partialApplyFollowedByConvertFunctionWithBorrow : $@convention(thin) (@inout_aliasable Int, @inout_aliasable Int, @inout_aliasable Int) -> () {
-bb0(%0 : @trivial $*Int, %1 : @trivial $*Int, %2 : @trivial $*Int):
+bb0(%0 : $*Int, %1 : $*Int, %2 : $*Int):
%3 = function_ref @hasThreeCapturesAndTakesArgument : $@convention(thin) (Int, @inout_aliasable Int, @inout_aliasable Int, @inout_aliasable Int) -> ()
%4 = partial_apply %3(%0, %1, %2) : $@convention(thin) (Int, @inout_aliasable Int, @inout_aliasable Int, @inout_aliasable Int) -> ()
%5 = convert_function %4 : $@callee_owned (Int) -> () to $@callee_owned (Int) -> @error Error
diff --git a/test/SILOptimizer/allocbox_to_stack_ownership.sil b/test/SILOptimizer/allocbox_to_stack_ownership.sil
index b51d3dd..267316f 100644
--- a/test/SILOptimizer/allocbox_to_stack_ownership.sil
+++ b/test/SILOptimizer/allocbox_to_stack_ownership.sil
@@ -14,7 +14,7 @@
// CHECK-LABEL: sil @simple_promotion
sil @simple_promotion : $@convention(thin) (Int) -> Int {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%1 = alloc_box ${ var Int }
%1a = project_box %1 : ${ var Int }, 0
store %0 to [trivial] %1a : $*Int
@@ -30,7 +30,7 @@
// CHECK-LABEL: sil @double_project_box
sil @double_project_box : $@convention(thin) (Int) -> (Int, Int) {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%1 = alloc_box ${ var Int }
%1a = project_box %1 : ${ var Int }, 0
store %0 to [trivial] %1a : $*Int
@@ -92,7 +92,7 @@
// CHECK-LABEL: sil @struct_tuple_element_addr
sil @struct_tuple_element_addr : $@convention(thin) (Int) -> Int {
-bb1(%0 : @trivial $Int):
+bb1(%0 : $Int):
// CHECK-DAG: [[STRUCT:%.*]] = alloc_stack $TestStruct
// CHECK-DAG: [[TUPLE:%.*]] = alloc_stack $(Int, Int)
%1 = alloc_box ${ var TestStruct }
@@ -181,7 +181,7 @@
// CHECK-LABEL: @protocols
sil @protocols : $@convention(thin) (@in LogicValue, @thin Bool.Type) -> Bool {
-bb0(%0 : @trivial $*LogicValue, %1 : @trivial $@thin Bool.Type):
+bb0(%0 : $*LogicValue, %1 : $@thin Bool.Type):
%2 = alloc_box ${ var LogicValue }
%2a = project_box %2 : ${ var LogicValue }, 0
// CHECK: %2 = alloc_stack $LogicValue
@@ -246,7 +246,7 @@
// CHECK-LABEL: sil @multiple_destroy_test
sil @multiple_destroy_test : $@convention(thin) (Bool) -> Bool {
-bb0(%0 : @trivial $Bool):
+bb0(%0 : $Bool):
%1 = alloc_box ${ var Bool }
%1a = project_box %1 : ${ var Bool }, 0
store %0 to [trivial] %1a : $*Bool
@@ -312,7 +312,7 @@
// CHECK-LABEL: sil @test_mui
sil @test_mui : $@convention(thin) (Builtin.Int1) -> () {
-bb0(%0 : @trivial $Builtin.Int1):
+bb0(%0 : $Builtin.Int1):
%2 = alloc_box ${ var SomeClass }
%2a = mark_uninitialized [var] %2 : ${ var SomeClass }
%3 = project_box %2a : ${ var SomeClass }, 0
@@ -370,7 +370,7 @@
// CHECK-LABEL: sil @$s6struct8useStack1tySi_tF
// struct.useStack (t : Swift.Int) -> ()
sil @$s6struct8useStack1tySi_tF : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
debug_value %0 : $Int, let, name "t" // id: %1
// CHECK: alloc_stack
%2 = alloc_box $<τ_0_0> { var τ_0_0 } <Int>, var, name "s" // users: %3, %6, %7, %7, %9
@@ -412,7 +412,7 @@
// CHECK-LABEL: sil @$s6struct6useBox1tySi_tF
// struct.useBox (t : Swift.Int) -> ()
sil @$s6struct6useBox1tySi_tF : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
debug_value %0 : $Int, let, name "t" // id: %1
// CHECK: alloc_box
%2 = alloc_box $<τ_0_0> { var τ_0_0 } <Int>, var, name "s" // users: %3, %6, %7, %7, %10
@@ -451,7 +451,7 @@
// CHECK-LABEL: sil @no_final_destroy
sil @no_final_destroy : $@convention(thin) (Int) -> Bool {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
// This is not destroyed, but the unreachable makes the verifier not trip.
%1 = alloc_box $<τ_0_0> { var τ_0_0 } <Int>
%1a = project_box %1 : $<τ_0_0> { var τ_0_0 } <Int>, 0
@@ -485,7 +485,7 @@
// CHECK-LABEL: sil @callWithAutoclosure
sil @callWithAutoclosure : $@convention(thin) <T where T : P> (@in T) -> () {
// CHECK: bb0
-bb0(%0 : @trivial $*T):
+bb0(%0 : $*T):
// CHECK: debug_value_addr
debug_value_addr %0 : $*T
// CHECK: function_ref @mightApply
@@ -512,7 +512,7 @@
// CHECK-LABEL: sil shared @$s21closure_to_specializeTf0ns_n : $@convention(thin) <T where T : P> (@inout_aliasable T) -> @out T
sil shared @closure_to_specialize : $@convention(thin) <T where T : P> (@owned <τ_0_0> { var τ_0_0 } <T>) -> @out T {
// CHECK: bb0
-bb0(%0 : @trivial $*T, %1 : @owned $<τ_0_0> { var τ_0_0 } <T>):
+bb0(%0 : $*T, %1 : @owned $<τ_0_0> { var τ_0_0 } <T>):
%2 = project_box %1 : $<τ_0_0> { var τ_0_0 } <T>, 0
// CHECK-NEXT: copy_addr
copy_addr %2 to [initialization] %0 : $*T
@@ -569,7 +569,7 @@
// CHECK-LABEL: sil shared @specialized
sil shared @specialized : $@convention(method) (Int, @in S<Q>) -> Bool {
// CHECK: bb0
-bb0(%0 : @trivial $Int, %1 : @trivial $*S<Q>):
+bb0(%0 : $Int, %1 : $*S<Q>):
debug_value %0 : $Int
debug_value_addr %1 : $*S<Q>
%4 = function_ref @outer : $@convention(thin) (@owned @callee_owned () -> Bool) -> Bool
@@ -587,7 +587,7 @@
// CHECK-LABEL: sil @unspecialized
sil @unspecialized : $@convention(method) <T where T : Count> (Int, @in S<T>) -> Bool {
// CHECK: bb0
-bb0(%0 : @trivial $Int, %1 : @trivial $*S<T>):
+bb0(%0 : $Int, %1 : $*S<T>):
debug_value %0 : $Int
debug_value_addr %1 : $*S<T>
%4 = function_ref @outer : $@convention(thin) (@owned @callee_owned () -> Bool) -> Bool
@@ -605,7 +605,7 @@
// CHECK-LABEL: sil shared @closure1
sil shared @closure1 : $@convention(thin) <T where T : Count> (Int, @owned <τ_0_0 : Count> { var S<τ_0_0> } <T>) -> Bool {
// CHECK: bb0
-bb0(%0 : @trivial $Int, %1 : @owned $<τ_0_0 where τ_0_0 : Count> { var S<τ_0_0> } <T>):
+bb0(%0 : $Int, %1 : @owned $<τ_0_0 where τ_0_0 : Count> { var S<τ_0_0> } <T>):
%2 = project_box %1 : $<τ_0_0 where τ_0_0 : Count> { var S<τ_0_0> } <T>, 0
%3 = function_ref @inner : $@convention(thin) (@owned @callee_owned () -> Bool) -> Bool
%4 = function_ref @closure2 : $@convention(thin) <τ_0_0 where τ_0_0 : Count> (Int, @owned <τ_0_0 : Count> { var S<τ_0_0> } <τ_0_0>) -> Bool
@@ -627,7 +627,7 @@
// CHECK-LABEL: sil shared @closure2
sil shared @closure2 : $@convention(thin) <T where T : Count> (Int, @owned <τ_0_0 : Count> { var S<τ_0_0> } <T>) -> Bool {
// CHECK: bb0
-bb0(%0 : @trivial $Int, %1 : @owned $<τ_0_0 where τ_0_0 : Count> { var S<τ_0_0> } <T>):
+bb0(%0 : $Int, %1 : @owned $<τ_0_0 where τ_0_0 : Count> { var S<τ_0_0> } <T>):
%2 = project_box %1 : $<τ_0_0 where τ_0_0 : Count> { var S<τ_0_0> } <T>, 0
%3 = function_ref @binary : $@convention(thin) (Int, Int) -> Bool
%4 = alloc_stack $S<T>
@@ -647,7 +647,7 @@
// CHECK-LABEL: sil @destroy_stack_value_after_closure
sil @destroy_stack_value_after_closure : $@convention(thin) <T> (@in T) -> @out T {
// CHECK: bb0
-bb0(%0 : @trivial $*T, %1 : @trivial $*T):
+bb0(%0 : $*T, %1 : $*T):
// CHECK: [[STACK:%.*]] = alloc_stack
// CHECK: copy_addr %1 to [initialization] [[STACK]]
// CHECK: [[APPLIED:%.*]] = function_ref
@@ -687,7 +687,7 @@
}
sil hidden [noinline] @consume : $@convention(thin) <T> (@in T) -> () {
-bb0(%0 : @trivial $*T):
+bb0(%0 : $*T):
debug_value_addr %0 : $*T
destroy_addr %0 : $*T
%3 = tuple ()
@@ -709,7 +709,7 @@
sil hidden @try_apply_during_chaining_init : $@convention(method) (Int, @owned ThrowDerivedClass) -> (@owned ThrowDerivedClass, @error Error) {
// %0 // users: %11, %5
// %1 // user: %7
-bb0(%0 : @trivial $Int, %1 : @owned $ThrowDerivedClass):
+bb0(%0 : $Int, %1 : @owned $ThrowDerivedClass):
%2 = alloc_box ${ var ThrowDerivedClass }, let, name "self"
%3 = mark_uninitialized [delegatingself] %2 : ${ var ThrowDerivedClass }
%4 = project_box %3 : ${ var ThrowDerivedClass }, 0
@@ -720,7 +720,7 @@
try_apply %10(%0) : $@convention(thin) (Int) -> (Int, @error Error), normal bb1, error bb3
// %12 // user: %13
-bb1(%12 : @trivial $Int): // Preds: bb0
+bb1(%12 : $Int): // Preds: bb0
try_apply %9(%12, %8) : $@convention(method) (Int, @owned ThrowDerivedClass) -> (@owned ThrowDerivedClass, @error Error), normal bb2, error bb4
// %14 // user: %15
@@ -746,7 +746,7 @@
}
// CHECK-LABEL: sil @deal_with_wrong_nesting
-// CHECK: bb0(%0 : @trivial $Int):
+// CHECK: bb0(%0 : $Int):
// CHECK-NEXT: [[STACK1:%[0-9]+]] = alloc_stack $Bool
// CHECK-NEXT: [[BOX:%[0-9]+]] = alloc_stack $Int
// CHECK: bb1:
@@ -762,7 +762,7 @@
// CHECK-NEXT: tuple
// CHECK-NEXT: return
sil @deal_with_wrong_nesting : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%as1 = alloc_stack $Bool
%1 = alloc_box ${ var Int }
cond_br undef, bb1, bb2
@@ -788,7 +788,7 @@
}
// CHECK-LABEL: sil @wrong_nesting_with_alloc_ref
-// CHECK: bb0(%0 : @trivial $Int):
+// CHECK: bb0(%0 : $Int):
// CHECK-NEXT: [[REF:%[0-9]+]] = alloc_ref [stack] $SomeClass
// CHECK-NEXT: [[BOX:%[0-9]+]] = alloc_stack $Int
// CHECK: store
@@ -797,7 +797,7 @@
// CHECK-NEXT: tuple
// CHECK-NEXT: return
sil @wrong_nesting_with_alloc_ref : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%as1 = alloc_ref [stack] $SomeClass
%1 = alloc_box ${ var Int }
%1a = project_box %1 : ${ var Int }, 0
@@ -810,7 +810,7 @@
}
// CHECK-LABEL: sil @nesting_and_unreachable1
-// CHECK: bb0(%0 : @trivial $Int):
+// CHECK: bb0(%0 : $Int):
// CHECK-NEXT: [[STACK1:%[0-9]+]] = alloc_stack $Bool
// CHECK-NEXT: [[BOX:%[0-9]+]] = alloc_stack $Int
// CHECK: bb1:
@@ -824,7 +824,7 @@
// CHECK-NEXT: tuple
// CHECK-NEXT: return
sil @nesting_and_unreachable1 : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%as1 = alloc_stack $Bool
%1 = alloc_box ${ var Int }
%1a = project_box %1 : ${ var Int }, 0
@@ -845,7 +845,7 @@
}
// CHECK-LABEL: sil @nesting_and_unreachable2
-// CHECK: bb0(%0 : @trivial $Int):
+// CHECK: bb0(%0 : $Int):
// CHECK-NEXT: [[STACK1:%[0-9]+]] = alloc_stack $Bool
// CHECK-NEXT: [[BOX:%[0-9]+]] = alloc_stack $Int
// CHECK: bb1:
@@ -861,7 +861,7 @@
// CHECK-NEXT: tuple
// CHECK-NEXT: return
sil @nesting_and_unreachable2 : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%as1 = alloc_stack $Bool
%1 = alloc_box ${ var Int }
%1a = project_box %1 : ${ var Int }, 0
@@ -883,7 +883,7 @@
}
// CHECK-LABEL: sil @nesting_and_unreachable3
-// CHECK: bb0(%0 : @trivial $Int):
+// CHECK: bb0(%0 : $Int):
// CHECK-NEXT: [[BOX:%[0-9]+]] = alloc_stack $Int
// CHECK-NEXT: [[STACK:%[0-9]+]] = alloc_stack $Bool
// CHECK: bb1:
@@ -897,7 +897,7 @@
// CHECK-NEXT: tuple
// CHECK-NEXT: return
sil @nesting_and_unreachable3 : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%1 = alloc_box ${ var Int }
%as1 = alloc_stack $Bool
%1a = project_box %1 : ${ var Int }, 0
@@ -917,7 +917,7 @@
}
// CHECK-LABEL: sil @nesting_and_unreachable4
-// CHECK: bb0(%0 : @trivial $Int):
+// CHECK: bb0(%0 : $Int):
// CHECK-NEXT: [[BOX:%[0-9]+]] = alloc_stack $Int
// CHECK: bb1:
// CHECK-NEXT: unreachable
@@ -927,7 +927,7 @@
// CHECK-NEXT: tuple
// CHECK-NEXT: return
sil @nesting_and_unreachable4 : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%1 = alloc_box ${ var Int }
%1a = project_box %1 : ${ var Int }, 0
cond_br undef, bb1, bb2
@@ -944,7 +944,7 @@
}
// CHECK-LABEL: sil @nesting_and_unreachable5
-// CHECK: bb0(%0 : @trivial $Int):
+// CHECK: bb0(%0 : $Int):
// CHECK-NEXT: [[BOX:%[0-9]+]] = alloc_stack $Int
// CHECK: bb1:
// CHECK-NEXT: {{.*}} = alloc_stack $Bool
@@ -956,7 +956,7 @@
// CHECK-NEXT: tuple
// CHECK-NEXT: return
sil @nesting_and_unreachable5 : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%1 = alloc_box ${ var Int }
%1a = project_box %1 : ${ var Int }, 0
cond_br undef, bb1, bb2
@@ -975,7 +975,7 @@
}
// CHECK-LABEL: sil @nesting_and_unreachable_critical_edge
-// CHECK: bb0(%0 : @trivial $Int):
+// CHECK: bb0(%0 : $Int):
// CHECK-NEXT: [[BOX:%[0-9]+]] = alloc_stack $Int
// CHECK-NEXT: [[STACK1:%[0-9]+]] = alloc_stack $Bool
// CHECK-NEXT: cond_br
@@ -1000,7 +1000,7 @@
// CHECK-NEXT: dealloc_stack [[BOX]]
// CHECK-NEXT: unreachable
sil @nesting_and_unreachable_critical_edge : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%1 = alloc_box ${ var Int }
%as1 = alloc_stack $Bool
%1a = project_box %1 : ${ var Int }, 0
@@ -1030,7 +1030,7 @@
// begin_access [deinit], copy_addr [take], end_access
//
// CHECK-LABEL: sil @deinit_access : $@convention(thin) <T> (@in T) -> (@out T, @out T) {
-// CHECK: bb0(%0 : @trivial $*T, %1 : @trivial $*T, %2 : @trivial $*T):
+// CHECK: bb0(%0 : $*T, %1 : $*T, %2 : $*T):
// CHECK: [[STK:%.*]] = alloc_stack $T, var, name "x"
// CHECK: copy_addr %2 to [initialization] [[STK]] : $*T
// CHECK: [[READ:%.*]] = begin_access [read] [static] [[STK]] : $*T
@@ -1067,7 +1067,7 @@
// begin_access [deinit], copy_addr [take], end_access
//
// CHECK-LABEL: sil @nodeinit_access : $@convention(thin) <T> (@in T) -> (@out T, @out T) {
-// CHECK: bb0(%0 : @trivial $*T, %1 : @trivial $*T, %2 : @trivial $*T):
+// CHECK: bb0(%0 : $*T, %1 : $*T, %2 : $*T):
// CHECK: [[STK:%.*]] = alloc_stack $T, var, name "x"
// CHECK: copy_addr %2 to [initialization] [[STK]] : $*T
// CHECK: [[READ:%.*]] = begin_access [read] [static] [[STK]] : $*T
diff --git a/test/SILOptimizer/bridged_casts_folding.sil b/test/SILOptimizer/bridged_casts_folding.sil
index 98d5693..23e287b 100644
--- a/test/SILOptimizer/bridged_casts_folding.sil
+++ b/test/SILOptimizer/bridged_casts_folding.sil
@@ -15,7 +15,7 @@
// CHECK-NEXT: destroy_addr %0
// CHECK-NEXT: [[CAST:%.*]] = unconditional_checked_cast [[BRIDGED]] : $NSObject to $NSObjectSubclass
sil @anyhashable_cast_unconditional : $@convention(thin) (@in AnyHashable) -> @owned NSObjectSubclass {
-entry(%0 : @trivial $*AnyHashable):
+entry(%0 : $*AnyHashable):
%1 = alloc_stack $NSObjectSubclass
unconditional_checked_cast_addr AnyHashable in %0 : $*AnyHashable
to NSObjectSubclass in %1 : $*NSObjectSubclass
@@ -29,7 +29,7 @@
// CHECK-NEXT: destroy_addr %0
// CHECK-NEXT: checked_cast_br [[BRIDGED]] : $NSObject to $NSObjectSubclass, [[YES:bb[0-9]+]], [[NO:bb[0-9]+]]
sil @anyhashable_cast_take_always : $@convention(thin) (@in AnyHashable, @owned NSObjectSubclass) -> @owned NSObjectSubclass {
-entry(%0 : @trivial $*AnyHashable, %1 : @owned $NSObjectSubclass):
+entry(%0 : $*AnyHashable, %1 : @owned $NSObjectSubclass):
%2 = alloc_stack $NSObjectSubclass
checked_cast_addr_br take_always AnyHashable in %0 : $*AnyHashable
to NSObjectSubclass in %2 : $*NSObjectSubclass, bb1, bb2
@@ -53,7 +53,7 @@
// CHECK: [[YES]]{{.*}}:
// CHECK-NEXT: destroy_addr %0
sil @anyhashable_cast_take_on_success : $@convention(thin) (@in AnyHashable, @owned NSObjectSubclass) -> @owned NSObjectSubclass {
-entry(%0 : @trivial $*AnyHashable, %1 : @owned $NSObjectSubclass):
+entry(%0 : $*AnyHashable, %1 : @owned $NSObjectSubclass):
%2 = alloc_stack $NSObjectSubclass
checked_cast_addr_br take_on_success AnyHashable in %0 : $*AnyHashable
to NSObjectSubclass in %2 : $*NSObjectSubclass, bb1, bb2
@@ -82,7 +82,7 @@
// CHECK: [[NO]]{{.*}}:
// CHECK-NOT: dealloc_stack
sil @anyhashable_cast_copy_on_success : $@convention(thin) (@in_guaranteed AnyHashable, @owned NSObjectSubclass) -> @owned NSObjectSubclass {
-entry(%0 : @trivial $*AnyHashable, %1 : @owned $NSObjectSubclass):
+entry(%0 : $*AnyHashable, %1 : @owned $NSObjectSubclass):
%2 = alloc_stack $NSObjectSubclass
checked_cast_addr_br copy_on_success AnyHashable in %0 : $*AnyHashable
to NSObjectSubclass in %2 : $*NSObjectSubclass, bb1, bb2
diff --git a/test/SILOptimizer/capture_promotion_generic_context_ownership.sil b/test/SILOptimizer/capture_promotion_generic_context_ownership.sil
index 8326667..9743bf7 100644
--- a/test/SILOptimizer/capture_promotion_generic_context_ownership.sil
+++ b/test/SILOptimizer/capture_promotion_generic_context_ownership.sil
@@ -26,7 +26,7 @@
// CHECK: partial_apply [callee_guaranteed] [[F]](
sil @call_promotable_box_from_generic : $@convention(thin) <T> (@in T, Int) -> @owned @callee_guaranteed () -> Int {
-entry(%0 : @trivial $*T, %1 : @trivial $Int):
+entry(%0 : $*T, %1 : $Int):
destroy_addr %0 : $*T
%f = function_ref @promotable_box : $@convention(thin) (@owned <τ_0_0> { var τ_0_0 } <Int>) -> Int
%b = alloc_box $<τ_0_0> { var τ_0_0 } <Int>
@@ -43,7 +43,7 @@
// CHECK-NEXT: return [[ARG1]] : $Builtin.Int32
sil @generic_promotable_box : $@convention(thin) <T> (@in T, @owned <τ_0_0> { var τ_0_0 } <Int>) -> Int {
-entry(%0 : @trivial $*T, %b : @owned $<τ_0_0> { var τ_0_0 } <Int>):
+entry(%0 : $*T, %b : @owned $<τ_0_0> { var τ_0_0 } <Int>):
%a = project_box %b : $<τ_0_0> { var τ_0_0 } <Int>, 0
%v = load [trivial] %a : $*Int
destroy_value %b : $<τ_0_0> { var τ_0_0 } <Int>
@@ -59,7 +59,7 @@
// CHECK-NEXT: return [[CLOSURE]]
sil @call_generic_promotable_box_from_different_generic : $@convention(thin) <T, U: P> (@in T, @in U, Int) -> @owned @callee_guaranteed (@in U) -> Int {
-entry(%0 : @trivial $*T, %1 : @trivial $*U, %2 : @trivial $Int):
+entry(%0 : $*T, %1 : $*U, %2 : $Int):
destroy_addr %0 : $*T
destroy_addr %1 : $*U
%f = function_ref @generic_promotable_box : $@convention(thin) <V> (@in V, @owned <τ_0_0> { var τ_0_0 } <Int>) -> Int
@@ -88,7 +88,7 @@
// CHECK-NOT: project_box
// CHECK: } // end sil function '$s23generic_promotable_box2Tf2nni_n'
sil @generic_promotable_box2 : $@convention(thin) <T> (@in R<T>, @in Int, @owned <τ_0_0> { var E<(R<τ_0_0>) -> Int> } <T>) -> () {
-entry(%0 : @trivial $*R<T>, %1 : @trivial $*Int, %b : @owned $<τ_0_0> { var E<(R<τ_0_0>)->Int> } <T>):
+entry(%0 : $*R<T>, %1 : $*Int, %b : @owned $<τ_0_0> { var E<(R<τ_0_0>)->Int> } <T>):
%a = project_box %b : $<τ_0_0> { var E<(R<τ_0_0>)->Int> } <T>, 0
%e = load [copy] %a : $*E<(R<T>)->Int>
switch_enum %e : $E<(R<T>)->Int>, case #E.Some!enumelt.1 : bb1, default bb2
@@ -120,7 +120,7 @@
// CHECK-NEXT: return [[CLOSURE]]
sil @call_generic_promotable_box_from_different_generic2 : $@convention(thin) <T, U: P> (@in R<T>, @in E<(R<U>)->Int>, @in Int) -> @owned @callee_guaranteed (@in R<U>) -> () {
-entry(%0 : @trivial $*R<T>, %1 : @trivial $*E<(R<U>)->Int>, %2 : @trivial $*Int):
+entry(%0 : $*R<T>, %1 : $*E<(R<U>)->Int>, %2 : $*Int):
destroy_addr %0 : $*R<T>
%f = function_ref @generic_promotable_box2 : $@convention(thin) <V> (@in R<V>, @in Int, @owned <τ_0_0> { var E<(R<τ_0_0>)->Int> } <V>) -> ()
%b = alloc_box $<τ_0_0> { var E<(R<τ_0_0>)->Int> } <U>
diff --git a/test/SILOptimizer/capture_promotion_ownership.sil b/test/SILOptimizer/capture_promotion_ownership.sil
index 8246ddc..7bb9c8e 100644
--- a/test/SILOptimizer/capture_promotion_ownership.sil
+++ b/test/SILOptimizer/capture_promotion_ownership.sil
@@ -165,7 +165,7 @@
}
// CHECK-LABEL: sil private @$s8closure0Tf2iii_n : $@convention(thin) (@owned Foo, @owned Baz, Int) -> (Int, Builtin.Int64) {
-// CHECK: bb0([[ORIGINAL_ARG0:%.*]] : @owned $Foo, [[ORIGINAL_ARG1:%.*]] : @owned $Baz, [[ARG2:%.*]] : @trivial $Int):
+// CHECK: bb0([[ORIGINAL_ARG0:%.*]] : @owned $Foo, [[ORIGINAL_ARG1:%.*]] : @owned $Baz, [[ARG2:%.*]] : $Int):
// CHECK: [[ARG0:%.*]] = begin_borrow [[ORIGINAL_ARG0]]
// CHECK: [[ARG1:%.*]] = begin_borrow [[ORIGINAL_ARG1]]
// CHECK: [[DUMMY_FUNC:%.*]] = function_ref @dummy_func : $@convention(thin) (Int, Int, Int) -> Int
@@ -268,7 +268,7 @@
// CHECK-LABEL: sil @captureWithinGeneric
sil @captureWithinGeneric : $@convention(thin) <T> (@inout Int, @inout Int) -> () {
// CHECK: bb0
-bb0(%0 : @trivial $*Int, %1 : @trivial $*Int):
+bb0(%0 : $*Int, %1 : $*Int):
%2 = alloc_box $<τ_0_0> { var τ_0_0 } <Int>
%2a = project_box %2 : $<τ_0_0> { var τ_0_0 } <Int>, 0
copy_addr %0 to [initialization] %2a : $*Int
@@ -310,7 +310,7 @@
sil [transparent] [serialized] @$ss1poiyS2i_SitF : $@convention(thin) (Int, Int) -> Int
sil private @closure_indirect_result : $@convention(thin) (@owned <τ_0_0> { var τ_0_0 } <Foo>, @owned <τ_0_0> { var τ_0_0 } <Baz>, @owned <τ_0_0> { var τ_0_0 } <Int>) -> @out Int {
-bb0(%0: @trivial $*Int, %1 : @owned $<τ_0_0> { var τ_0_0 } <Foo>, %2 : @owned $<τ_0_0> { var τ_0_0 } <Baz>, %4 : @owned $<τ_0_0> { var τ_0_0 } <Int>):
+bb0(%0: $*Int, %1 : @owned $<τ_0_0> { var τ_0_0 } <Foo>, %2 : @owned $<τ_0_0> { var τ_0_0 } <Baz>, %4 : @owned $<τ_0_0> { var τ_0_0 } <Int>):
%17 = project_box %1 : $<τ_0_0> { var τ_0_0 } <Foo>, 0
%3 = project_box %2 : $<τ_0_0> { var τ_0_0 } <Baz>, 0
%5 = project_box %4 : $<τ_0_0> { var τ_0_0 } <Int>, 0
diff --git a/test/SILOptimizer/cast_folding_objc_bridging_conditional.sil b/test/SILOptimizer/cast_folding_objc_bridging_conditional.sil
index 01ec2bb..b05c759 100644
--- a/test/SILOptimizer/cast_folding_objc_bridging_conditional.sil
+++ b/test/SILOptimizer/cast_folding_objc_bridging_conditional.sil
@@ -10,7 +10,7 @@
// CHECK-LABEL: sil @cast_nserror_to_specific_error
sil @cast_nserror_to_specific_error : $@convention(thin) (@in NSError, @in NSNumber, @in NSValue) -> () {
-entry(%0 : @trivial $*NSError, %1 : @trivial $*NSNumber, %2 : @trivial $*NSValue):
+entry(%0 : $*NSError, %1 : $*NSNumber, %2 : $*NSValue):
%f = function_ref @use : $@convention(thin) <T> (@in T) -> ()
%a = alloc_stack $MyError
// CHECK: checked_cast_addr_br {{.*}} NSError {{.*}} to MyError
diff --git a/test/SILOptimizer/closure_lifetime_fixup_objc.swift b/test/SILOptimizer/closure_lifetime_fixup_objc.swift
index 2ea4c8d..1d39a64 100644
--- a/test/SILOptimizer/closure_lifetime_fixup_objc.swift
+++ b/test/SILOptimizer/closure_lifetime_fixup_objc.swift
@@ -88,11 +88,11 @@
// CHECK: sil hidden @$s27closure_lifetime_fixup_objc1CCfD : $@convention(method) (@owned C) -> () {
// CHECK: bb0([[SELF:%.*]] : $C):
// CHECK: [[F:%.*]] = function_ref @$s27closure_lifetime_fixup_objc1CCfdyyXEfU_
-// CHECK: [[PA:%.*]] = partial_apply [callee_guaranteed] [[F]](%0)
+// CHECK: [[PA:%.*]] = partial_apply [callee_guaranteed] [[F]]([[SELF]])
// CHECK: [[OPT:%.*]] = enum $Optional<@callee_guaranteed () -> ()>, #Optional.some!enumelt.1, [[PA]]
// CHECK: [[DEINIT:%.*]] = objc_super_method [[SELF]] : $C, #NSObject.deinit!deallocator.1.foreign
// CHECK: release_value [[OPT]] : $Optional<@callee_guaranteed () -> ()>
-// CHECK: [[SUPER:%.*]] = upcast [[SELF]] : $C to $NSObject // user: %34
+// CHECK: [[SUPER:%.*]] = upcast [[SELF]] : $C to $NSObject
// CHECK-NEXT: apply [[DEINIT]]([[SUPER]]) : $@convention(objc_method) (NSObject) -> ()
// CHECK-NEXT: [[T:%.*]] = tuple ()
// CHECK-NEXT: return [[T]] : $()
diff --git a/test/SILOptimizer/constant_propagation2.sil b/test/SILOptimizer/constant_propagation2.sil
index 926169d..f92fb55 100644
--- a/test/SILOptimizer/constant_propagation2.sil
+++ b/test/SILOptimizer/constant_propagation2.sil
@@ -4,7 +4,7 @@
// fold_sadd_with_overflow_Overflow
sil @fold_sadd_with_overflow_Overflow : $@convention(thin) (Builtin.RawPointer) -> Builtin.Int64 {
-bb0(%0 : @trivial $Builtin.RawPointer):
+bb0(%0 : $Builtin.RawPointer):
%2 = integer_literal $Builtin.Int64, 9223372036854775807
%3 = integer_literal $Builtin.Int64, 9223372036854775807
%21 = integer_literal $Builtin.Int1, 1
diff --git a/test/SILOptimizer/copy_propagation.sil b/test/SILOptimizer/copy_propagation.sil
index 5e9e0c5..aff3a62 100644
--- a/test/SILOptimizer/copy_propagation.sil
+++ b/test/SILOptimizer/copy_propagation.sil
@@ -74,7 +74,7 @@
}
// CHECK-LABEL: sil @testPhi : $@convention(thin) <T> (@in_guaranteed T, @in_guaranteed T, Bool) -> @out T {
-// CHECK: bb0(%0 : @guaranteed $T, %1 : @guaranteed $T, %2 : @trivial $Bool):
+// CHECK: bb0(%0 : @guaranteed $T, %1 : @guaranteed $T, %2 : $Bool):
// CHECK-NEXT: %3 = struct_extract %2 : $Bool, #Bool._value
// CHECK-NEXT: cond_br %3, bb1, bb2
//
@@ -90,7 +90,7 @@
// CHECK-NEXT: return %9 : $T
// CHECK-LABEL: } // end sil function 'testPhi'
sil @testPhi : $@convention(thin) <T> (@in_guaranteed T, @in_guaranteed T, Bool) -> @out T {
-bb0(%0 : @guaranteed $T, %1 : @guaranteed $T, %2 : @trivial $Bool):
+bb0(%0 : @guaranteed $T, %1 : @guaranteed $T, %2 : $Bool):
%3 = copy_value %0 : $T
%4 = copy_value %1 : $T
%5 = struct_extract %2 : $Bool, #Bool._value
@@ -111,7 +111,7 @@
}
// CHECK-LABEL: sil @testConsume : $@convention(thin) <T> (@in T, @inout T) -> () {
-// CHECK: bb0(%0 : @owned $T, %1 : @trivial $*T):
+// CHECK: bb0(%0 : @owned $T, %1 : $*T):
//
// The original copy_value is deleted.
// CHECK-NEXT: debug_value %0 : $T
@@ -132,7 +132,7 @@
// CHECK-NEXT: return %8 : $()
// CHECK-LABEL: // end sil function 'testConsume'
sil @testConsume : $@convention(thin) <T> (@in T, @inout T) -> () {
-bb0(%arg : @owned $T, %addr : @trivial $*T):
+bb0(%arg : @owned $T, %addr : $*T):
%copy = copy_value %arg : $T
debug_value %copy : $T
store %copy to [init] %addr : $*T
@@ -144,7 +144,7 @@
}
// CHECK-LABEL: sil @testDestroyEdge : $@convention(thin) <T> (@in T, @inout T, Builtin.Int1) -> () {
-// CHECK: bb0(%0 : @owned $T, %1 : @trivial $*T, %2 : @trivial $Builtin.Int1):
+// CHECK: bb0(%0 : @owned $T, %1 : $*T, %2 : $Builtin.Int1):
// CHECK-NEXT: cond_br %2, bb2, bb1
//
// CHECK: bb1:
@@ -165,7 +165,7 @@
// CHECK-NEXT: return %9 : $()
// CHECK-LABEL: } // end sil function 'testDestroyEdge'
sil @testDestroyEdge : $@convention(thin) <T> (@in T, @inout T, Builtin.Int1) -> () {
-bb0(%arg : @owned $T, %addr : @trivial $*T, %z : @trivial $Builtin.Int1):
+bb0(%arg : @owned $T, %addr : $*T, %z : $Builtin.Int1):
cond_br %z, bb1, bb2
bb1:
diff --git a/test/SILOptimizer/definite_init_crashes.sil b/test/SILOptimizer/definite_init_crashes.sil
index da402cc..7528058 100644
--- a/test/SILOptimizer/definite_init_crashes.sil
+++ b/test/SILOptimizer/definite_init_crashes.sil
@@ -16,7 +16,7 @@
// CHECK-LABEL: sil @TripleTest
sil @TripleTest : $@convention(method) (Int, @inout Triple) -> Triple {
-bb0(%0 : @trivial $Int, %1 : @trivial $*Triple):
+bb0(%0 : $Int, %1 : $*Triple):
%4 = alloc_box $<τ_0_0> { var τ_0_0 } <Triple>
%4a = project_box %4 : $<τ_0_0> { var τ_0_0 } <Triple>, 0
%5 = load [trivial] %1 : $*Triple
@@ -35,7 +35,7 @@
// CHECK-LABEL: sil @SingleTest
sil @SingleTest : $@convention(method) (@inout Single, Int) -> Single {
-bb0(%0 : @trivial $*Single, %1 : @trivial $Int):
+bb0(%0 : $*Single, %1 : $Int):
%4 = alloc_box $<τ_0_0> { var τ_0_0 } <Single>
%4a = project_box %4 : $<τ_0_0> { var τ_0_0 } <Single>, 0
%5 = load [trivial] %0 : $*Single
@@ -98,7 +98,7 @@
// CHECK-LABEL: sil @assign_of_non_primitive_object_element_type
sil @assign_of_non_primitive_object_element_type : $@convention(thin) (@thick Proto.Type) -> (@owned AStruct, @error Error) {
-bb0(%0 : @trivial $@thick Proto.Type):
+bb0(%0 : $@thick Proto.Type):
%3 = alloc_stack $AStruct
%4 = mark_uninitialized [rootself] %3 : $*AStruct
%7 = function_ref @mayThrow : $@convention(thin) () -> (@owned NonTrivial, @error Error)
diff --git a/test/SILOptimizer/definite_init_markuninitialized_delegatingself.sil b/test/SILOptimizer/definite_init_markuninitialized_delegatingself.sil
index 556edcc..1ffe3f1 100644
--- a/test/SILOptimizer/definite_init_markuninitialized_delegatingself.sil
+++ b/test/SILOptimizer/definite_init_markuninitialized_delegatingself.sil
@@ -37,7 +37,7 @@
// CHECK-NEXT: load
// CHECK: return
sil @self_init_assert_instruction : $@convention(thin) (Int, @thin MyStruct.Type) -> MyStruct {
- bb0(%0 : @trivial $Int, %1 : @trivial $@thin MyStruct.Type):
+ bb0(%0 : $Int, %1 : $@thin MyStruct.Type):
%2 = alloc_stack $MyStruct, var, name "sf"
%3 = mark_uninitialized [delegatingself] %2 : $*MyStruct
@@ -54,7 +54,7 @@
// <rdar://problem/18089574> Protocol member in struct + delegating init miscompilation
// CHECK-LABEL: @self_init_copyaddr
sil @self_init_copyaddr : $@convention(thin) (@thin MyStruct2.Type) -> @out MyStruct2 {
-bb0(%0 : @trivial $*MyStruct2, %1 : @trivial $@thin MyStruct2.Type):
+bb0(%0 : $*MyStruct2, %1 : $@thin MyStruct2.Type):
// CHECK: [[SELF:%[0-9]+]] = alloc_stack $MyStruct2
%2 = alloc_stack $MyStruct2, var, name "sf"
%3 = mark_uninitialized [delegatingself] %2 : $*MyStruct2
@@ -85,7 +85,7 @@
// CHECK-LABEL: sil hidden @test_conditional_destroy_delegating_init
sil hidden @test_conditional_destroy_delegating_init : $@convention(thin) (Builtin.Int1) -> () {
-bb0(%0 : @trivial $Builtin.Int1):
+bb0(%0 : $Builtin.Int1):
// CHECK: [[CONTROL:%[0-9]+]] = alloc_stack $Builtin.Int1
// CHECK-NEXT: [[SELF_BOX:%[0-9]+]] = alloc_stack $MyStruct3
diff --git a/test/SILOptimizer/definite_init_markuninitialized_derivedself.sil b/test/SILOptimizer/definite_init_markuninitialized_derivedself.sil
index 60a19eb..08f70ff 100644
--- a/test/SILOptimizer/definite_init_markuninitialized_derivedself.sil
+++ b/test/SILOptimizer/definite_init_markuninitialized_derivedself.sil
@@ -244,7 +244,7 @@
// }
//
sil @super_init_out_of_order : $@convention(method) (@owned DerivedClassWithIVars, Int) -> @owned DerivedClassWithIVars {
-bb0(%0 : @owned $DerivedClassWithIVars, %i : @trivial $Int):
+bb0(%0 : @owned $DerivedClassWithIVars, %i : $Int):
%1 = alloc_box $<τ_0_0> { var τ_0_0 } <DerivedClassWithIVars>
%1a = project_box %1 : $<τ_0_0> { var τ_0_0 } <DerivedClassWithIVars>, 0
%3 = mark_uninitialized [derivedself] %1a : $*DerivedClassWithIVars
diff --git a/test/SILOptimizer/definite_init_markuninitialized_rootself.sil b/test/SILOptimizer/definite_init_markuninitialized_rootself.sil
index 0faaaf5..5217483 100644
--- a/test/SILOptimizer/definite_init_markuninitialized_rootself.sil
+++ b/test/SILOptimizer/definite_init_markuninitialized_rootself.sil
@@ -26,7 +26,7 @@
// CHECK-LABEL: sil @rootclass_test1
sil @rootclass_test1 : $@convention(method) (@owned RootClassWithIVars, Int) -> @owned RootClassWithIVars {
-bb0(%0 : @owned $RootClassWithIVars, %1 : @trivial $Int):
+bb0(%0 : @owned $RootClassWithIVars, %1 : $Int):
%3 = mark_uninitialized [rootself] %0 : $RootClassWithIVars
%4 = begin_borrow %3 : $RootClassWithIVars
@@ -52,7 +52,7 @@
// CHECK-LABEL: sil @rootclass_test2
sil @rootclass_test2 : $@convention(method) (@owned RootClassWithIVars, Int) -> @owned RootClassWithIVars {
-bb0(%0 : @owned $RootClassWithIVars, %1 : @trivial $Int):
+bb0(%0 : @owned $RootClassWithIVars, %1 : $Int):
%3 = mark_uninitialized [rootself] %0 : $RootClassWithIVars
%4 = begin_borrow %3 : $RootClassWithIVars
@@ -76,7 +76,7 @@
// CHECK-LABEL: sil @rootclass_test3
sil @rootclass_test3 : $@convention(method) (@owned RootClassWithIVars, Int) -> @owned RootClassWithIVars {
-bb0(%0 : @owned $RootClassWithIVars, %1 : @trivial $Int):
+bb0(%0 : @owned $RootClassWithIVars, %1 : $Int):
%3 = mark_uninitialized [rootself] %0 : $RootClassWithIVars
%4 = begin_borrow %3 : $RootClassWithIVars
diff --git a/test/SILOptimizer/definite_init_markuninitialized_var.sil b/test/SILOptimizer/definite_init_markuninitialized_var.sil
index 3af69c8..bc0e4d4 100644
--- a/test/SILOptimizer/definite_init_markuninitialized_var.sil
+++ b/test/SILOptimizer/definite_init_markuninitialized_var.sil
@@ -46,7 +46,7 @@
//}
// CHECK-LABEL: sil @used_by_inout
sil @used_by_inout : $@convention(thin) (Int) -> (Int, Int) {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%91 = alloc_box $<τ_0_0> { var τ_0_0 } <Int>
%91a = project_box %91 : $<τ_0_0> { var τ_0_0 } <Int>, 0
%1 = mark_uninitialized [var] %91a : $*Int
@@ -87,7 +87,7 @@
// CHECK-LABEL: sil @tuple_elements1
sil @tuple_elements1 : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%2 = alloc_box $<τ_0_0> { var τ_0_0 } <(Int, Int)>
%2a = project_box %2 : $<τ_0_0> { var τ_0_0 } <(Int, Int)>, 0
%3 = mark_uninitialized [var] %2a : $*(Int, Int) // expected-note {{variable defined here}}
@@ -104,7 +104,7 @@
// CHECK-LABEL: sil @tuple_elements2
sil @tuple_elements2 : $@convention(thin) (Int) -> (Int, Int) {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%2 = alloc_box $<τ_0_0> { var τ_0_0 } <(Int, Int)>
%2a = project_box %2 : $<τ_0_0> { var τ_0_0 } <(Int, Int)>, 0
%3 = mark_uninitialized [var] %2a : $*(Int, Int) // expected-note {{variable defined here}}
@@ -120,7 +120,7 @@
// CHECK-LABEL: sil @copy_addr1
sil @copy_addr1 : $@convention(thin) <T> (@in T) -> @out T {
-bb0(%0 : @trivial $*T, %1 : @trivial $*T):
+bb0(%0 : $*T, %1 : $*T):
%3 = alloc_box $<τ_0_0> { var τ_0_0 } <T>
%3a = project_box %3 : $<τ_0_0> { var τ_0_0 } <T>, 0
%4 = mark_uninitialized [var] %3a : $*T
@@ -133,7 +133,7 @@
// CHECK-LABEL: sil @copy_addr2
sil @copy_addr2 : $@convention(thin) <T> (@in T) -> @out T {
-bb0(%0 : @trivial $*T, %1 : @trivial $*T):
+bb0(%0 : $*T, %1 : $*T):
%3 = alloc_box $<τ_0_0> { var τ_0_0 } <T>
%3a = project_box %3 : $<τ_0_0> { var τ_0_0 } <T>, 0
%4 = mark_uninitialized [var] %3a : $*T // expected-note {{variable defined here}}
@@ -174,7 +174,7 @@
// CHECK-LABEL: sil @assign_test_trivial
sil @assign_test_trivial : $@convention(thin) (Int) -> Int {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%7 = alloc_box $<τ_0_0> { var τ_0_0 } <Int>
%7a = project_box %7 : $<τ_0_0> { var τ_0_0 } <Int>, 0
%1 = mark_uninitialized [var] %7a : $*Int
@@ -227,7 +227,7 @@
// CHECK-LABEL: sil @assign_test_addressonly
sil @assign_test_addressonly : $@convention(thin) <T> (@in T) -> @out T {
-bb0(%0 : @trivial $*T, %1 :@trivial $*T):
+bb0(%0 : $*T, %1 : $*T):
%b = alloc_box $<τ_0_0> { var τ_0_0 } <T>
%ba = project_box %b : $<τ_0_0> { var τ_0_0 } <T>, 0
%2 = mark_uninitialized [var] %ba : $*T
@@ -348,7 +348,7 @@
}
sil @test_struct : $@convention(thin) (@inout ContainsNativeObject) -> () {
-bb0(%0 : @trivial $*ContainsNativeObject):
+bb0(%0 : $*ContainsNativeObject):
%b = alloc_box $<τ_0_0> { var τ_0_0 } <ContainsNativeObject>
%ba = project_box %b : $<τ_0_0> { var τ_0_0 } <ContainsNativeObject>, 0
%c = mark_uninitialized [var] %ba : $*ContainsNativeObject
@@ -365,7 +365,7 @@
// CHECK: assign
// CHECK: return
sil @non_box_assign_trivial : $@convention(thin) (@inout Bool, Bool) -> () {
-bb0(%0 : @trivial $*Bool, %1 : @trivial $Bool):
+bb0(%0 : $*Bool, %1 : $Bool):
assign %1 to %0 : $*Bool
%9 = tuple ()
return %9 : $()
@@ -376,7 +376,7 @@
// CHECK: assign
// CHECK: return
sil @non_box_assign : $@convention(thin) (@inout SomeClass, @owned SomeClass) -> () {
-bb0(%0 : @trivial $*SomeClass, %1 : @owned $SomeClass):
+bb0(%0 : $*SomeClass, %1 : @owned $SomeClass):
assign %1 to %0 : $*SomeClass
%9 = tuple ()
return %9 : $()
@@ -448,7 +448,7 @@
// rdar://15379013
// CHECK-LABEL: sil @init_existential_with_class
sil @init_existential_with_class : $@convention(thin) (@inout C) -> () {
-entry(%a : @trivial $*C):
+entry(%a : $*C):
%p = alloc_stack $P
%b = mark_uninitialized [var] %p : $*P
@@ -469,7 +469,7 @@
// emit a boolean control value to make sure the value is only destroyed if
// actually initialized.
sil @conditional_init : $@convention(thin) (Bool) -> () {
-bb0(%0 : @trivial $Bool):
+bb0(%0 : $Bool):
%2 = alloc_stack $SomeClass
%3 = mark_uninitialized [var] %2 : $*SomeClass
@@ -498,7 +498,7 @@
// CHECK-LABEL: sil @conditionalInitOrAssign
sil @conditionalInitOrAssign : $@convention(thin) (Builtin.Int1) -> () {
-bb0(%0 : @trivial $Builtin.Int1):
+bb0(%0 : $Builtin.Int1):
// CHECK: [[CONTROL:%[0-9]+]] = alloc_stack $Builtin.Int1
// CHECK: [[CLASSVAL:%[0-9]+]] = alloc_stack $SomeClass
// CHECK: integer_literal $Builtin.Int1, 0
@@ -593,7 +593,7 @@
// CHECK-NOT: mark_uninitialized [var]
// CHECK: } // end sil function 'lldb_unsupported_markuninitialized_testcase'
sil @lldb_unsupported_markuninitialized_testcase : $@convention(thin) (UnsafeMutablePointer<Any>) -> () {
-bb0(%0 : @trivial $UnsafeMutablePointer<Any>):
+bb0(%0 : $UnsafeMutablePointer<Any>):
%2 = struct_extract %0 : $UnsafeMutablePointer<Any>, #UnsafeMutablePointer._rawValue
%3 = integer_literal $Builtin.Int64, 8
%4 = index_raw_pointer %2 : $Builtin.RawPointer, %3 : $Builtin.Int64
diff --git a/test/SILOptimizer/definite_init_scalarization_test.sil b/test/SILOptimizer/definite_init_scalarization_test.sil
index e1699fb..5591365 100644
--- a/test/SILOptimizer/definite_init_scalarization_test.sil
+++ b/test/SILOptimizer/definite_init_scalarization_test.sil
@@ -24,7 +24,7 @@
}
// CHECK-LABEL: sil @test_store_trivial : $@convention(thin) (TripleInt, TripleInt, TripleInt) -> () {
-// CHECK: bb0([[ARG0:%.*]] : @trivial $TripleInt, [[ARG1:%.*]] : @trivial $TripleInt, [[ARG2:%.*]] : @trivial $TripleInt):
+// CHECK: bb0([[ARG0:%.*]] : $TripleInt, [[ARG1:%.*]] : $TripleInt, [[ARG2:%.*]] : $TripleInt):
// CHECK: [[BOX:%.*]] = alloc_box
// CHECK: [[PB_BOX:%.*]] = project_box [[BOX]]
// CHECK: [[ELT0:%.*]] = tuple_element_addr [[PB_BOX]] : $*(TripleInt, (TripleInt, TripleInt)), 0
@@ -41,7 +41,7 @@
// CHECK: destroy_value [[BOX]]
// CHECK: } // end sil function 'test_store_trivial'
sil @test_store_trivial : $@convention(thin) (TripleInt, TripleInt, TripleInt) -> () {
-bb0(%0 : @trivial $TripleInt, %1 : @trivial $TripleInt, %1a : @trivial $TripleInt):
+bb0(%0 : $TripleInt, %1 : $TripleInt, %1a : $TripleInt):
%2 = alloc_box $<τ_0_0> { var τ_0_0 } <(TripleInt, (TripleInt, TripleInt))>
%3 = project_box %2 : $<τ_0_0> { var τ_0_0 } <(TripleInt, (TripleInt, TripleInt))>, 0
%4 = mark_uninitialized [var] %3 : $*(TripleInt, (TripleInt, TripleInt))
@@ -84,7 +84,7 @@
}
// CHECK-LABEL: sil @test_assign_trivial : $@convention(thin) (TripleInt, TripleInt, TripleInt) -> () {
-// CHECK: bb0([[ARG0:%.*]] : @trivial $TripleInt, [[ARG1:%.*]] : @trivial $TripleInt, [[ARG2:%.*]] : @trivial $TripleInt):
+// CHECK: bb0([[ARG0:%.*]] : $TripleInt, [[ARG1:%.*]] : $TripleInt, [[ARG2:%.*]] : $TripleInt):
// CHECK: [[BOX:%.*]] = alloc_box
// CHECK: [[PB_BOX:%.*]] = project_box [[BOX]]
// CHECK: [[ELT0:%.*]] = tuple_element_addr [[PB_BOX]] : $*(TripleInt, (TripleInt, TripleInt)), 0
@@ -101,7 +101,7 @@
// CHECK: destroy_value [[BOX]]
// CHECK: } // end sil function 'test_assign_trivial'
sil @test_assign_trivial : $@convention(thin) (TripleInt, TripleInt, TripleInt) -> () {
-bb0(%0 : @trivial $TripleInt, %1 : @trivial $TripleInt, %1a : @trivial $TripleInt):
+bb0(%0 : $TripleInt, %1 : $TripleInt, %1a : $TripleInt):
%2 = alloc_box $<τ_0_0> { var τ_0_0 } <(TripleInt, (TripleInt, TripleInt))>
%3 = project_box %2 : $<τ_0_0> { var τ_0_0 } <(TripleInt, (TripleInt, TripleInt))>, 0
%4 = mark_uninitialized [var] %3 : $*(TripleInt, (TripleInt, TripleInt))
@@ -114,7 +114,7 @@
}
// CHECK-LABEL: sil @test_assign_trivial_2 : $@convention(thin) (TripleInt, TripleInt, TripleInt) -> () {
-// CHECK: bb0([[ARG0:%.*]] : @trivial $TripleInt, [[ARG1:%.*]] : @trivial $TripleInt, [[ARG2:%.*]] : @trivial $TripleInt):
+// CHECK: bb0([[ARG0:%.*]] : $TripleInt, [[ARG1:%.*]] : $TripleInt, [[ARG2:%.*]] : $TripleInt):
// CHECK: [[BOX:%.*]] = alloc_box $<τ_0_0> { var τ_0_0 } <(TripleInt, (TripleInt, TripleInt))>
// CHECK: [[PROJ_BOX:%.*]] = project_box [[BOX]] : $<τ_0_0> { var τ_0_0 } <(TripleInt, (TripleInt, TripleInt))>, 0
// CHECK: [[PROJ_BOX_0:%.*]] = tuple_element_addr [[PROJ_BOX]] : $*(TripleInt, (TripleInt, TripleInt)), 0
@@ -137,7 +137,7 @@
// CHECK: destroy_value [[BOX]] : $<τ_0_0> { var τ_0_0 } <(TripleInt, (TripleInt, TripleInt))>
// CHECK: } // end sil function 'test_assign_trivial_2'
sil @test_assign_trivial_2 : $@convention(thin) (TripleInt, TripleInt, TripleInt) -> () {
-bb0(%0 : @trivial $TripleInt, %1 : @trivial $TripleInt, %1a : @trivial $TripleInt):
+bb0(%0 : $TripleInt, %1 : $TripleInt, %1a : $TripleInt):
%2 = alloc_box $<τ_0_0> { var τ_0_0 } <(TripleInt, (TripleInt, TripleInt))>
%3 = project_box %2 : $<τ_0_0> { var τ_0_0 } <(TripleInt, (TripleInt, TripleInt))>, 0
%4 = mark_uninitialized [var] %3 : $*(TripleInt, (TripleInt, TripleInt))
diff --git a/test/SILOptimizer/devirt_specialized_conformance.swift b/test/SILOptimizer/devirt_specialized_conformance.swift
index 9f636c0..8df90ee 100644
--- a/test/SILOptimizer/devirt_specialized_conformance.swift
+++ b/test/SILOptimizer/devirt_specialized_conformance.swift
@@ -57,11 +57,14 @@
func takesPointer(_ p: UnsafeRawBufferPointer) {}
// In specialized testWithUnsafeBytes<A>(_:), the conditional case and call to withUnsafeBytes must be eliminated.
+// Normally, we expect Array.withUnsafeBytes to be inlined so we would see:
+// [[TAKES_PTR:%.*]] = function_ref @$s30devirt_specialized_conformance12takesPointeryySWF : $@convention(thin) (UnsafeRawBufferPointer) -> ()
+// apply [[TAKES_PTR]](%{{.*}}) : $@convention(thin) (UnsafeRawBufferPointer) -> ()
+// But the inlining isn't consistent across builds with and without debug info.
+//
// CHECK-LABEL: sil shared [noinline] @$s30devirt_specialized_conformance19testWithUnsafeBytesyyxlFSayypG_Tg5 : $@convention(thin) (@guaranteed Array<Any>) -> () {
// CHECK: bb0
// CHECK-NOT: witness_method
-// CHECK: [[TAKES_PTR:%.*]] = function_ref @$s30devirt_specialized_conformance12takesPointeryySWF : $@convention(thin) (UnsafeRawBufferPointer) -> ()
-// CHECK: apply [[TAKES_PTR]](%{{.*}}) : $@convention(thin) (UnsafeRawBufferPointer) -> ()
// CHECK-LABEL: } // end sil function '$s30devirt_specialized_conformance19testWithUnsafeBytesyyxlFSayypG_Tg5'
@inline(never)
func testWithUnsafeBytes<T>(_ t: T) {
diff --git a/test/SILOptimizer/exclusivity_static_diagnostics.sil b/test/SILOptimizer/exclusivity_static_diagnostics.sil
index dcdaef7..e306419 100644
--- a/test/SILOptimizer/exclusivity_static_diagnostics.sil
+++ b/test/SILOptimizer/exclusivity_static_diagnostics.sil
@@ -18,7 +18,7 @@
// CHECK-LABEL: sil hidden @twoLocalInoutsDisaliased
sil hidden @twoLocalInoutsDisaliased : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%2 = alloc_box ${ var Int }
%3 = project_box %2 : ${ var Int }, 0
store %0 to [trivial] %3 : $*Int
@@ -39,7 +39,7 @@
// CHECK-LABEL: sil hidden @twoLocalInoutsSimpleAliasing
sil hidden @twoLocalInoutsSimpleAliasing : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%2 = alloc_box ${ var Int }
%3 = project_box %2 : ${ var Int }, 0
store %0 to [trivial] %3 : $*Int
@@ -56,7 +56,7 @@
// CHECK-LABEL: sil hidden @conflictingPriorAccess
sil hidden @conflictingPriorAccess : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%2 = alloc_box ${ var Int }
%3 = project_box %2 : ${ var Int }, 0
store %0 to [trivial] %3 : $*Int
@@ -75,7 +75,7 @@
// CHECK-LABEL: sil hidden @twoSequentialInouts
sil hidden @twoSequentialInouts : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%2 = alloc_box ${ var Int }
%3 = project_box %2 : ${ var Int }, 0
store %0 to [trivial] %3 : $*Int
@@ -94,7 +94,7 @@
// CHECK-LABEL: sil hidden @unconditionalBranch
sil hidden @unconditionalBranch : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%2 = alloc_box ${ var Int }
%3 = project_box %2 : ${ var Int }, 0
store %0 to [trivial] %3 : $*Int
@@ -109,7 +109,7 @@
// CHECK-LABEL: sil hidden @diamondMergeStacks
sil hidden @diamondMergeStacks : $@convention(thin) (Int, Builtin.Int1) -> () {
-bb0(%0 : @trivial $Int, %1 : @trivial $Builtin.Int1):
+bb0(%0 : $Int, %1 : $Builtin.Int1):
%2 = alloc_box ${ var Int }
%3 = project_box %2 : ${ var Int }, 0
store %0 to [trivial] %3 : $*Int
@@ -129,7 +129,7 @@
// CHECK-LABEL: sil hidden @loopMergeStacks
sil hidden @loopMergeStacks : $@convention(thin) (Int, Builtin.Int1) -> () {
-bb0(%0 : @trivial $Int, %1 : @trivial $Builtin.Int1):
+bb0(%0 : $Int, %1 : $Builtin.Int1):
%2 = alloc_box ${ var Int }
%3 = project_box %2 : ${ var Int }, 0
store %0 to [trivial] %3 : $*Int
@@ -146,7 +146,7 @@
// CHECK-LABEL: sil hidden @loopWithError
sil hidden @loopWithError : $@convention(thin) (Int, Builtin.Int1) -> () {
-bb0(%0 : @trivial $Int, %1 : @trivial $Builtin.Int1):
+bb0(%0 : $Int, %1 : $Builtin.Int1):
%2 = alloc_box ${ var Int }
%3 = project_box %2 : ${ var Int }, 0
store %0 to [trivial] %3 : $*Int
@@ -166,7 +166,7 @@
// CHECK-LABEL: sil hidden @modifySubAccessesAreAllowed
sil hidden @modifySubAccessesAreAllowed : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%2 = alloc_box ${ var Int }
%3 = project_box %2 : ${ var Int }, 0
store %0 to [trivial] %3 : $*Int
@@ -185,7 +185,7 @@
// CHECK-LABEL: sil hidden @twoLocalReadsSimpleAliasing
sil hidden @twoLocalReadsSimpleAliasing : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%1 = alloc_box ${ var Int }
%2 = project_box %1 : ${ var Int }, 0
store %0 to [trivial] %2 : $*Int
@@ -200,7 +200,7 @@
// CHECK-LABEL: sil hidden @localReadFollowedByModify
sil hidden @localReadFollowedByModify : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%1 = alloc_box ${ var Int }
%2 = project_box %1 : ${ var Int }, 0
store %0 to [trivial] %2 : $*Int
@@ -215,7 +215,7 @@
// CHECK-LABEL: sil hidden @localModifyFollowedByRead
sil hidden @localModifyFollowedByRead : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%1 = alloc_box ${ var Int }
%2 = project_box %1 : ${ var Int }, 0
store %0 to [trivial] %2 : $*Int
@@ -279,7 +279,7 @@
// CHECK-LABEL: sil hidden @twoAllocBoxProjections
sil hidden @twoAllocBoxProjections : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%2 = alloc_box ${ var Int }
%3 = project_box %2 : ${ var Int }, 0
store %0 to [trivial] %3 : $*Int
@@ -297,7 +297,7 @@
// CHECK-LABEL: sil hidden @lookThroughMarkUninitialized
sil hidden @lookThroughMarkUninitialized : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%1 = alloc_box ${ var Int }
%2 = mark_uninitialized [rootself] %1 : ${ var Int }
%3 = project_box %2 : ${ var Int }, 0
@@ -318,7 +318,7 @@
// CHECK-LABEL: sil hidden @modifySameGlobal
sil hidden @modifySameGlobal : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%1 = global_addr @global1 :$*Int
%2 = global_addr @global1 :$*Int
%3 = begin_access [modify] [unknown] %1 : $*Int // expected-error {{overlapping accesses, but modification requires exclusive access; consider copying to a local variable}}
@@ -331,7 +331,7 @@
// CHECK-LABEL: sil hidden @modifyDifferentGlobal
sil hidden @modifyDifferentGlobal : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%1 = global_addr @global1 :$*Int
%2 = global_addr @global2 :$*Int
%3 = begin_access [modify] [unknown] %1 : $*Int
@@ -348,7 +348,7 @@
// sure the second read doesn't report a confusing read-read conflict.
// CHECK-LABEL: sil hidden @readWriteReadConflictingThirdAccess
sil hidden @readWriteReadConflictingThirdAccess : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%2 = alloc_box ${ var Int }
%3 = project_box %2 : ${ var Int }, 0
store %0 to [trivial] %3 : $*Int
@@ -369,7 +369,7 @@
// third write doesn't report a conflict.
// CHECK-LABEL: sil hidden @writeWriteWriteConflictingThirdAccess
sil hidden @writeWriteWriteConflictingThirdAccess : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%2 = alloc_box ${ var Int }
%3 = project_box %2 : ${ var Int }, 0
store %0 to [trivial] %3 : $*Int
@@ -391,7 +391,7 @@
// about the conflict and not the first
// CHECK-LABEL: sil hidden @resetFirstAccessForNote
sil hidden @resetFirstAccessForNote : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%2 = alloc_box ${ var Int }
%3 = project_box %2 : ${ var Int }, 0
store %0 to [trivial] %3 : $*Int
@@ -416,7 +416,7 @@
// The unreachable block below must branch to bN where
// N = 3/4 * INITIAL_SIZE - 2
sil @blockMapRehash : $@convention(method) (Builtin.Int1) -> () {
-bb0(%0 : @trivial $Builtin.Int1):
+bb0(%0 : $Builtin.Int1):
br bb1
bb1:
br bb2
@@ -473,7 +473,7 @@
//
// CHECK-LABEL: sil hidden @pointerToAddr
sil hidden @pointerToAddr : $@convention(thin) (Builtin.RawPointer) -> Int {
-bb0(%0: @trivial $Builtin.RawPointer):
+bb0(%0: $Builtin.RawPointer):
%adr = pointer_to_address %0 : $Builtin.RawPointer to [strict] $*Int
%access = begin_access [read] [dynamic] %adr : $*Int
%val = load [trivial] %access : $*Int
@@ -492,7 +492,7 @@
//
// CHECK-LABEL: sil hidden @inlinedStructElement
sil hidden @inlinedStructElement : $@convention(thin) (@inout S) -> Int {
-bb0(%0 : @trivial $*S):
+bb0(%0 : $*S):
%2 = begin_access [modify] [static] %0 : $*S
%3 = struct_element_addr %2 : $*S, #S.x
%4 = begin_access [read] [static] %3 : $*Int
@@ -507,7 +507,7 @@
//
// CHECK-LABEL: sil hidden @inlinedTupleElement
sil hidden @inlinedTupleElement : $@convention(thin) (@inout (Int, Int)) -> Int {
-bb0(%0 : @trivial $*(Int, Int)):
+bb0(%0 : $*(Int, Int)):
%2 = begin_access [modify] [static] %0 : $*(Int, Int)
%3 = tuple_element_addr %2 : $*(Int, Int), 0
%4 = begin_access [read] [static] %3 : $*Int
@@ -522,7 +522,7 @@
//
// CHECK-LABEL: sil hidden @inlinedEnumValue
sil hidden @inlinedEnumValue : $@convention(thin) (Int) -> (@out Optional<Int>, Int) {
-bb0(%0 : @trivial $*Optional<Int>, %1 : @trivial $Int):
+bb0(%0 : $*Optional<Int>, %1 : $Int):
%6 = unchecked_take_enum_data_addr %0 : $*Optional<Int>, #Optional.some!enumelt.1
%7 = begin_access [read] [static] %6 : $*Int
%8 = load [trivial] %7 : $*Int
@@ -538,7 +538,7 @@
//
// CHECK-LABEL: sil hidden @inlinedArrayProp
sil hidden @inlinedArrayProp : $@convention(thin) (@guaranteed Storage, Builtin.Word) -> Int {
-bb0(%0 : @guaranteed $Storage, %1 : @trivial $Builtin.Word):
+bb0(%0 : @guaranteed $Storage, %1 : $Builtin.Word):
%2 = ref_tail_addr %0 : $Storage, $UInt
%3 = begin_access [read] [static] %2 : $*UInt
%4 = tail_addr %3 : $*UInt, %1 : $Builtin.Word, $Int
@@ -555,7 +555,7 @@
// Conflicts involving noescape closures.
sil hidden @closureThatModifiesCaptureAndTakesInout: $@convention(thin) (@inout Int, @inout_aliasable Int) -> () {
-bb0(%0 : @trivial $*Int, %1 : @trivial $*Int):
+bb0(%0 : $*Int, %1 : $*Int):
%2 = begin_access [modify] [unknown] %1 : $*Int // expected-note {{conflicting access is here}}
end_access %2 : $*Int
%3 = tuple ()
@@ -571,7 +571,7 @@
//
// CHECK-LABEL: sil hidden @inProgressModifyModifyConflictWithCallToClosure
sil hidden @inProgressModifyModifyConflictWithCallToClosure : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%2 = alloc_box ${ var Int }
%3 = project_box %2 : ${ var Int }, 0
store %0 to [trivial] %3 : $*Int
@@ -585,7 +585,7 @@
}
sil hidden @closureWithArgument_1 : $@convention(thin) (Int, @inout_aliasable Int) -> () {
-bb0(%0 : @trivial $Int, %1 : @trivial $*Int):
+bb0(%0 : $Int, %1 : $*Int):
%2 = begin_access [modify] [unknown] %1 : $*Int // expected-note 2 {{conflicting access is here}}
end_access %2 : $*Int
%3 = tuple ()
@@ -594,7 +594,7 @@
// CHECK-LABEL: sil hidden @inProgressConflictWithNoEscapeClosureArgument
sil hidden @inProgressConflictWithNoEscapeClosureArgument : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%2 = alloc_box ${ var Int }
%3 = project_box %2 : ${ var Int }, 0
store %0 to [trivial] %3 : $*Int
@@ -612,7 +612,7 @@
// CHECK-LABEL: sil hidden @inProgressConflictWithNoEscapeGuaranteedClosureArgument : $@convention(thin) (Int) -> () {
sil hidden @inProgressConflictWithNoEscapeGuaranteedClosureArgument : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%2 = alloc_box ${ var Int }
%3 = project_box %2 : ${ var Int }, 0
store %0 to [trivial] %3 : $*Int
@@ -631,7 +631,7 @@
}
sil hidden @closureThatModifiesCapture_2 : $@convention(thin) (@inout_aliasable Int) -> () {
-bb0(%0 : @trivial $*Int):
+bb0(%0 : $*Int):
%1 = begin_access [modify] [unknown] %0 : $*Int // expected-error {{overlapping accesses, but modification requires exclusive access; consider copying to a local variable}}
end_access %1 : $*Int
%2 = tuple ()
@@ -640,7 +640,7 @@
// CHECK-LABEL: sil hidden @inProgressReadModifyConflictWithNoEscapeClosureArgument
sil hidden @inProgressReadModifyConflictWithNoEscapeClosureArgument : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%2 = alloc_box ${ var Int }
%3 = project_box %2 : ${ var Int }, 0
store %0 to [trivial] %3 : $*Int
@@ -657,7 +657,7 @@
}
sil hidden @closureWithConcreteReturn : $@convention(thin) (Int, @inout_aliasable Int) -> (Int) {
-bb0(%0 : @trivial $Int, %1 : @trivial $*Int):
+bb0(%0 : $Int, %1 : $*Int):
%2 = begin_access [modify] [unknown] %1 : $*Int // expected-note {{conflicting access is here}}
end_access %2 : $*Int
return %0 : $Int
@@ -667,7 +667,7 @@
// CHECK-LABEL: sil hidden @inProgressConflictWithNoEscapeClosureWithReabstractionThunk
sil hidden @inProgressConflictWithNoEscapeClosureWithReabstractionThunk : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%2 = alloc_box ${ var Int }
%3 = project_box %2 : ${ var Int }, 0
store %0 to [trivial] %3 : $*Int
@@ -690,7 +690,7 @@
sil [reabstraction_thunk] @withoutActuallyEscapingThunk : $@convention(thin) (@noescape @callee_guaranteed () -> ()) -> ()
sil hidden @closureThatModifiesCapture_1: $@convention(thin) (@inout_aliasable Int) -> () {
-bb0(%0 : @trivial $*Int):
+bb0(%0 : $*Int):
%1 = begin_access [modify] [unknown] %0 : $*Int // expected-note 3{{conflicting access is here}}
end_access %1 : $*Int
%2 = tuple ()
@@ -699,7 +699,7 @@
// CHECK-LABEL: sil hidden @inProgressConflictWithNoEscapeClosureWithBlockStorage
sil hidden @inProgressConflictWithNoEscapeClosureWithBlockStorage : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%2 = alloc_box ${ var Int }
%3 = project_box %2 : ${ var Int }, 0
store %0 to [trivial] %3 : $*Int
@@ -729,7 +729,7 @@
// CHECK-LABEL: sil hidden @inProgressConflictWithNoEscapeClosureWithOptionalBlockStorage
sil hidden @inProgressConflictWithNoEscapeClosureWithOptionalBlockStorage : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%2 = alloc_box ${ var Int }
%3 = project_box %2 : ${ var Int }, 0
store %0 to [trivial] %3 : $*Int
@@ -777,7 +777,7 @@
// CHECK-LABEL: sil hidden @twoSeparateStoredProperties
sil hidden @twoSeparateStoredProperties : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%2 = alloc_box ${ var StructWithStoredProps }
%3 = project_box %2 : ${ var StructWithStoredProps }, 0
%4 = function_ref @takesTwoInouts : $@convention(thin) (@inout Int, @inout Int) -> ()
@@ -795,7 +795,7 @@
// CHECK-LABEL: sil hidden @twoSeparateNestedStoredProperties
sil hidden @twoSeparateNestedStoredProperties : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%2 = alloc_box ${ var StructWithStoredProps }
%3 = project_box %2 : ${ var StructWithStoredProps }, 0
%4 = function_ref @takesTwoInouts : $@convention(thin) (@inout Int, @inout Int) -> ()
@@ -815,7 +815,7 @@
// CHECK-LABEL: sil hidden @theSameStoredProperty
sil hidden @theSameStoredProperty : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%2 = alloc_box ${ var StructWithStoredProps }
%3 = project_box %2 : ${ var StructWithStoredProps }, 0
%4 = function_ref @takesTwoInouts : $@convention(thin) (@inout Int, @inout Int) -> ()
@@ -833,7 +833,7 @@
// CHECK-LABEL: sil hidden @storedPropertyAndAggregate
sil hidden @storedPropertyAndAggregate : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%2 = alloc_box ${ var StructWithStoredProps }
%3 = project_box %2 : ${ var StructWithStoredProps }, 0
%4 = function_ref @takesInoutIntAndStructWithStoredProps : $@convention(thin) (@inout Int, @inout StructWithStoredProps) -> ()
@@ -850,7 +850,7 @@
// CHECK-LABEL: sil hidden @nestedStoredPropertyAndAggregate
sil hidden @nestedStoredPropertyAndAggregate : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%2 = alloc_box ${ var StructWithStoredProps }
%3 = project_box %2 : ${ var StructWithStoredProps }, 0
%4 = function_ref @takesInoutIntAndStructWithStoredProps : $@convention(thin) (@inout Int, @inout StructWithStoredProps) -> ()
@@ -868,7 +868,7 @@
// CHECK-LABEL: sil hidden @twoSeparateTupleElements
sil hidden @twoSeparateTupleElements : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%2 = alloc_box ${ var (Int, Int) }
%3 = project_box %2 : ${ var (Int, Int) }, 0
%4 = function_ref @takesTwoInouts : $@convention(thin) (@inout Int, @inout Int) -> ()
@@ -886,7 +886,7 @@
// CHECK-LABEL: sil hidden @sameTupleElement
sil hidden @sameTupleElement : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%2 = alloc_box ${ var (Int, Int) }
%3 = project_box %2 : ${ var (Int, Int) }, 0
%4 = function_ref @takesTwoInouts : $@convention(thin) (@inout Int, @inout Int) -> ()
@@ -903,7 +903,7 @@
}
sil hidden @passNilToNoEscape : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%2 = alloc_box ${ var Int }
%3 = project_box %2 : ${ var Int }, 0
%4 = enum $Optional<@convention(block) @noescape () -> ()>, #Optional.none!enumelt
@@ -914,7 +914,7 @@
}
sil private @closureForDirectPartialApplyTakingInout : $@convention(thin) (@inout Int, @inout_aliasable Int) -> () {
-bb0(%0 : @trivial $*Int, %1 : @trivial $*Int):
+bb0(%0 : $*Int, %1 : $*Int):
%access = begin_access [read] [unknown] %1 : $*Int // expected-note 3 {{conflicting access is here}}
%val = load [trivial] %access : $*Int
end_access %access : $*Int
@@ -923,7 +923,7 @@
}
sil hidden @directPartialApplyTakingInout : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%box = alloc_box ${ var Int }, var, name "i"
%boxadr = project_box %box : ${ var Int }, 0
store %0 to [trivial] %boxadr : $*Int
@@ -939,7 +939,7 @@
}
sil private @closureForDirectPartialApplyChain : $@convention(thin) (@inout Int, Int, @inout_aliasable Int) -> () {
-bb0(%0 : @trivial $*Int, %1 : @trivial $Int, %2 : @trivial $*Int):
+bb0(%0 : $*Int, %1 : $Int, %2 : $*Int):
%access = begin_access [read] [unknown] %2 : $*Int // expected-note {{conflicting access is here}}
%val = load [trivial] %access : $*Int
end_access %access : $*Int
@@ -948,7 +948,7 @@
}
sil hidden @directPartialApplyChain : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%box = alloc_box ${ var Int }, var, name "i"
%boxadr = project_box %box : ${ var Int }, 0
store %0 to [trivial] %boxadr : $*Int
@@ -965,7 +965,7 @@
}
sil private @closureForPartialApplyArgChain : $@convention(thin) (Int, @inout_aliasable Int) -> () {
-bb0(%0 : @trivial $Int, %1 : @trivial $*Int):
+bb0(%0 : $Int, %1 : $*Int):
%access = begin_access [read] [unknown] %1 : $*Int // expected-note {{conflicting access is here}}
%val = load [trivial] %access : $*Int
end_access %access : $*Int
@@ -974,7 +974,7 @@
}
sil hidden @partialApplyArgChain : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%2 = alloc_box ${ var Int }
%3 = project_box %2 : ${ var Int }, 0
store %0 to [trivial] %3 : $*Int
@@ -1000,7 +1000,7 @@
// Check that this doesn't trigger the DiagnoseStaticExclusivity
// assert that all accesses have a valid AccessedStorage source.
sil @lldb_unsupported_markuninitialized_testcase : $@convention(thin) (UnsafeMutablePointer<Any>) -> () {
-bb0(%0 : @trivial $UnsafeMutablePointer<Any>):
+bb0(%0 : $UnsafeMutablePointer<Any>):
%2 = struct_extract %0 : $UnsafeMutablePointer<Any>, #UnsafeMutablePointer._rawValue
%3 = integer_literal $Builtin.Int64, 8
%4 = index_raw_pointer %2 : $Builtin.RawPointer, %3 : $Builtin.Int64
@@ -1029,7 +1029,7 @@
// address to an inout can result in an enforced (unknown) access on
// the unsafe address. We need to handle this case without asserting.
sil @addressorAccess : $@convention(thin) (@guaranteed ClassWithStoredProperty, Int32) -> () {
-bb0(%0 : @guaranteed $ClassWithStoredProperty, %1 : @trivial $Int32):
+bb0(%0 : @guaranteed $ClassWithStoredProperty, %1 : $Int32):
%f = function_ref @addressor : $@convention(thin) () -> UnsafeMutablePointer<Int32>
%up = apply %f() : $@convention(thin) () -> UnsafeMutablePointer<Int32>
%o = unchecked_ref_cast %0 : $ClassWithStoredProperty to $Builtin.NativeObject
@@ -1052,7 +1052,7 @@
// without the @noescape function-type argument convention.
sil @mutatingNoescapeHelper : $@convention(thin) (Optional<UnsafePointer<Int32>>, @inout_aliasable Int32) -> () {
-bb0(%0 : @trivial $Optional<UnsafePointer<Int32>>, %1 : @trivial $*Int32):
+bb0(%0 : $Optional<UnsafePointer<Int32>>, %1 : $*Int32):
%up = unchecked_enum_data %0 : $Optional<UnsafePointer<Int32>>, #Optional.some!enumelt.1
%p = struct_extract %up : $UnsafePointer<Int32>, #UnsafePointer._rawValue
%adr = pointer_to_address %p : $Builtin.RawPointer to [strict] $*Int32
@@ -1065,7 +1065,7 @@
}
sil shared [transparent] [serializable] [reabstraction_thunk] @mutatingNoescapeThunk : $@convention(thin) (UnsafePointer<Int32>, @guaranteed @callee_guaranteed (Optional<UnsafePointer<Int32>>) -> ()) -> () {
-bb0(%0 : @trivial $UnsafePointer<Int32>, %1 : @guaranteed $@callee_guaranteed (Optional<UnsafePointer<Int32>>) -> ()):
+bb0(%0 : $UnsafePointer<Int32>, %1 : @guaranteed $@callee_guaranteed (Optional<UnsafePointer<Int32>>) -> ()):
%e = enum $Optional<UnsafePointer<Int32>>, #Optional.some!enumelt.1, %0 : $UnsafePointer<Int32>
%c = apply %1(%e) : $@callee_guaranteed (Optional<UnsafePointer<Int32>>) -> ()
%v = tuple ()
@@ -1078,7 +1078,7 @@
// passed to a reabstraction_thunk as an escaping function type. This
// is valid as long as the thunk is only used as a @nosecape type.
sil @mutatingNoescapeWithThunk : $@convention(method) (UnsafePointer<Int32>, @inout Int32) -> () {
-bb0(%0 : @trivial $UnsafePointer<Int32>, %1 : @trivial $*Int32):
+bb0(%0 : $UnsafePointer<Int32>, %1 : $*Int32):
%f1 = function_ref @mutatingNoescapeHelper : $@convention(thin) (Optional<UnsafePointer<Int32>>, @inout_aliasable Int32) -> ()
%pa1 = partial_apply [callee_guaranteed] %f1(%1) : $@convention(thin) (Optional<UnsafePointer<Int32>>, @inout_aliasable Int32) -> ()
%thunk = function_ref @mutatingNoescapeThunk : $@convention(thin) (UnsafePointer<Int32>, @guaranteed @callee_guaranteed (Optional<UnsafePointer<Int32>>) -> ()) -> ()
@@ -1093,7 +1093,7 @@
sil @takeInoutAndMutatingNoescapeClosure : $@convention(thin) <τ_0_0> (@inout Int32, UnsafePointer<τ_0_0>, @noescape @callee_guaranteed (UnsafePointer<Int32>) -> ()) -> ()
sil @mutatingNoescapeConflictWithThunk : $@convention(method) (UnsafePointer<Int32>, @inout Int32) -> () {
-bb0(%0 : @trivial $UnsafePointer<Int32>, %1 : @trivial $*Int32):
+bb0(%0 : $UnsafePointer<Int32>, %1 : $*Int32):
%f1 = function_ref @mutatingNoescapeHelper : $@convention(thin) (Optional<UnsafePointer<Int32>>, @inout_aliasable Int32) -> ()
%pa1 = partial_apply [callee_guaranteed] %f1(%1) : $@convention(thin) (Optional<UnsafePointer<Int32>>, @inout_aliasable Int32) -> ()
%thunk = function_ref @mutatingNoescapeThunk : $@convention(thin) (UnsafePointer<Int32>, @guaranteed @callee_guaranteed (Optional<UnsafePointer<Int32>>) -> ()) -> ()
@@ -1137,7 +1137,7 @@
// Test a conflict on a noescape closure where multiple closures may be conditionally stored in an ObjC block.
sil hidden @noEscapeClosureWithConditionalBlockStorage : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%box = alloc_box ${ var Int }
%boxadr = project_box %box : ${ var Int }, 0
store %0 to [trivial] %boxadr : $*Int
@@ -1194,13 +1194,13 @@
// closure passed through a block argument.
sil hidden @closureWithNoCapture : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%2 = tuple ()
return %2 : $()
}
sil hidden @closureWithConflict : $@convention(thin) (Int, @inout_aliasable Int) -> () {
-bb0(%0 : @trivial $Int, %1 : @trivial $*Int):
+bb0(%0 : $Int, %1 : $*Int):
%2 = begin_access [modify] [unknown] %1 : $*Int // expected-note {{conflicting access is here}}
end_access %2 : $*Int
%v = tuple ()
@@ -1208,11 +1208,11 @@
}
sil shared [transparent] [serializable] [reabstraction_thunk] @partialApplyPhiThunk : $@convention(thin) (@in_guaranteed Int, @guaranteed @noescape @callee_guaranteed (Int) -> (@error Error)) -> (@error Error) {
-bb0(%0 : @trivial $*Int, %1 : @trivial $@noescape @callee_guaranteed (Int) -> (@error Error)):
+bb0(%0 : $*Int, %1 : $@noescape @callee_guaranteed (Int) -> (@error Error)):
%val = load [trivial] %0 : $*Int
try_apply %1(%val) : $@noescape @callee_guaranteed (Int) -> (@error Error), normal bb1, error bb2
-bb1(%v : @trivial $()):
+bb1(%v : $()):
return %v : $()
bb2(%5 : @owned $Error):
@@ -1223,7 +1223,7 @@
// CHECK-LABEL: sil @testPartialApplyPhi
sil @testPartialApplyPhi : $@convention(thin) (Int, @inout Int) -> (@error Error) {
-bb0(%0 : @trivial $Int, %1 : @trivial $*Int):
+bb0(%0 : $Int, %1 : $*Int):
cond_br undef, bb1, bb2
bb1:
@@ -1252,7 +1252,7 @@
%f4 = function_ref @takeGenericNoEscapeFunction : $@convention(method) <τ_0_0> (@inout τ_0_0, @noescape @callee_guaranteed (@in_guaranteed τ_0_0) -> (@error Error)) -> (@error Error)
try_apply %f4<Int>(%access, %esc4) : $@convention(method) <τ_0_0> (@inout τ_0_0, @noescape @callee_guaranteed (@in_guaranteed τ_0_0) -> (@error Error)) -> (@error Error), normal bb4, error bb5
-bb4(%v : @trivial $()):
+bb4(%v : $()):
end_access %access : $*Int
return %v : $()
@@ -1263,7 +1263,7 @@
// CHECK-LABEL: sil @testDirectPartialApplyPhi
sil @testDirectPartialApplyPhi : $@convention(thin) (@inout Int) -> (@error Error) {
-bb0(%0 : @trivial $*Int):
+bb0(%0 : $*Int):
cond_br undef, bb1, bb2
bb1:
@@ -1294,7 +1294,7 @@
sil @takeEscapingClosure : $@convention(thin) (@guaranteed @callee_guaranteed () -> ()) -> ()
sil private @nestedInWithoutActuallyEscapingVerify : $@convention(thin) (@inout_aliasable Int) -> () {
-bb0(%0 : @trivial $*Int):
+bb0(%0 : $*Int):
%a = begin_access [modify] [unknown] %0 : $*Int
end_access %a : $*Int
%v = tuple ()
@@ -1303,7 +1303,7 @@
// CHECK-LABEL: sil hidden @testWithoutActuallyEscapingVerify : $@convention(thin) (@inout Int) -> () {
sil hidden @testWithoutActuallyEscapingVerify : $@convention(thin) (@inout Int) -> () {
-bb0(%0 : @trivial $*Int):
+bb0(%0 : $*Int):
%2 = function_ref @nestedInWithoutActuallyEscapingVerify : $@convention(thin) (@inout_aliasable Int) -> ()
%3 = partial_apply [callee_guaranteed] %2(%0) : $@convention(thin) (@inout_aliasable Int) -> ()
@@ -1343,7 +1343,7 @@
// CHECK-LABEL: sil hidden @testWithoutActuallyEscapingBlockVerify : $@convention(thin) (Int) -> () {
// CHECK: convert_function %{{.*}} : $@convention(block) () -> () to [without_actually_escaping] $@convention(block) () -> ()
sil hidden @testWithoutActuallyEscapingBlockVerify : $@convention(thin) (Int) -> () {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%box = alloc_box ${ var Int }, var, name "localVal"
%projbox = project_box %box : ${ var Int }, 0
store %0 to [trivial] %projbox : $*Int
@@ -1375,7 +1375,7 @@
// thunk for @escaping @callee_guaranteed () -> ()
sil shared [transparent] [serializable] [reabstraction_thunk] @$sIeg_IeyB_TR : $@convention(c) (@inout_aliasable @block_storage @callee_guaranteed () -> ()) -> () {
// %0
-bb0(%0 : @trivial $*@block_storage @callee_guaranteed () -> ()):
+bb0(%0 : $*@block_storage @callee_guaranteed () -> ()):
%1 = project_block_storage %0 : $*@block_storage @callee_guaranteed () -> ()
%2 = load [copy] %1 : $*@callee_guaranteed () -> ()
%3 = begin_borrow %2 : $@callee_guaranteed () -> ()
diff --git a/test/SILOptimizer/guaranteed_arc_opts.sil b/test/SILOptimizer/guaranteed_arc_opts.sil
index f11c522..eb294d5 100644
--- a/test/SILOptimizer/guaranteed_arc_opts.sil
+++ b/test/SILOptimizer/guaranteed_arc_opts.sil
@@ -26,7 +26,7 @@
// CHECK-NOT: destroy_value
// CHECK: return [[ARG1]]
sil @copyvalue_test2 : $@convention(thin) (Builtin.NativeObject, @in Builtin.Int32) -> Builtin.NativeObject {
-bb0(%0 : @unowned $Builtin.NativeObject, %1 : @trivial $*Builtin.Int32):
+bb0(%0 : @unowned $Builtin.NativeObject, %1 : $*Builtin.Int32):
%2 = copy_value %0 : $Builtin.NativeObject
%3 = integer_literal $Builtin.Int32, 0
store %3 to [trivial] %1 : $*Builtin.Int32
diff --git a/test/SILOptimizer/inline_begin_apply.sil b/test/SILOptimizer/inline_begin_apply.sil
index 2be4c42..cd3794c 100644
--- a/test/SILOptimizer/inline_begin_apply.sil
+++ b/test/SILOptimizer/inline_begin_apply.sil
@@ -45,7 +45,7 @@
}
// CHECK-LABEL: sil @test_simple_call
-// CHECK: bb0(%0 : @trivial $Builtin.Int1):
+// CHECK: bb0(%0 : $Builtin.Int1):
// CHECK: [[MARKER:%.*]] = function_ref @marker
// CHECK: [[MARKER2:%.*]] = function_ref @marker
// CHECK: [[I:%.*]] = integer_literal $Builtin.Int32, 1000
@@ -81,7 +81,7 @@
// CHECK:}
sil @test_simple_call : $(Builtin.Int1) -> () {
-entry(%flag : @trivial $Builtin.Int1):
+entry(%flag : $Builtin.Int1):
%marker = function_ref @marker : $@convention(thin) (Builtin.Int32) -> ()
%0 = function_ref @test_one_yield : $@convention(thin) @yield_once <T: SomeClass> () -> (@yields @in Indirect<T>)
(%value, %token) = begin_apply %0<SomeSubclass>() : $@convention(thin) @yield_once <T: SomeClass> () -> (@yields @in Indirect<T>)
@@ -110,7 +110,7 @@
}
sil [transparent] @test_two_yield : $@yield_once <C: SomeClass> (Builtin.Int1) -> (@yields @in Indirect<C>, @yields Builtin.Int64) {
-entry(%0 : @trivial $Builtin.Int1):
+entry(%0 : $Builtin.Int1):
%marker = function_ref @marker : $@convention(thin) (Builtin.Int32) -> ()
%1000 = integer_literal $Builtin.Int32, 1000
apply %marker(%1000) : $@convention(thin) (Builtin.Int32) -> ()
@@ -154,12 +154,12 @@
// We don't support inlining functions with multiple yields yet.
// CHECK-LABEL: sil @test_simple_call_two_yields : $@convention(thin) (Builtin.Int1, Builtin.Int1) -> () {
-// CHECK: bb0(%0 : @trivial $Builtin.Int1, %1 : @trivial $Builtin.Int1):
+// CHECK: bb0(%0 : $Builtin.Int1, %1 : $Builtin.Int1):
// CHECK: begin_apply
// CHECK: return
sil @test_simple_call_two_yields : $(Builtin.Int1, Builtin.Int1) -> () {
-entry(%flag : @trivial $Builtin.Int1, %flag2 : @trivial $Builtin.Int1):
+entry(%flag : $Builtin.Int1, %flag2 : $Builtin.Int1):
%marker = function_ref @marker : $@convention(thin) (Builtin.Int32) -> ()
%0 = function_ref @test_two_yield : $@convention(thin) @yield_once <T: SomeClass> (Builtin.Int1) -> (@yields @in Indirect<T>, @yields Builtin.Int64)
(%value, %value2, %token) = begin_apply %0<SomeSubclass>(%flag) : $@convention(thin) @yield_once <T: SomeClass> (Builtin.Int1) -> (@yields @in Indirect<T>, @yields Builtin.Int64)
@@ -180,7 +180,7 @@
}
// CHECK-LABEL: sil @test_simple_call_yield_owned : $@convention(thin) (Builtin.Int1, @owned SomeClass) -> () {
-// CHECK: bb0(%0 : @trivial $Builtin.Int1, %1 : @owned $SomeClass):
+// CHECK: bb0(%0 : $Builtin.Int1, %1 : @owned $SomeClass):
// CHECK-NEXT: // function_ref
// CHECK-NEXT: %2 = function_ref @marker
// CHECK-NEXT: %3 = integer_literal $Builtin.Int32, 1000
@@ -223,7 +223,7 @@
}
sil @test_simple_call_yield_owned : $(Builtin.Int1, @owned SomeClass) -> () {
-entry(%flag : @trivial $Builtin.Int1, %c: @owned $SomeClass):
+entry(%flag : $Builtin.Int1, %c: @owned $SomeClass):
%0 = function_ref @yield_owned : $@convention(thin) @yield_once(@owned SomeClass) -> (@yields @owned SomeClass)
(%value, %token) = begin_apply %0(%c) : $@convention(thin) @yield_once(@owned SomeClass) -> (@yields @owned SomeClass)
cond_br %flag, yes, no
@@ -267,7 +267,7 @@
// CHECK-LABEL: sil @test_simple_call_yield_inout : $@convention(thin) (Builtin.Int1) -> () {
-// CHECK: bb0(%0 : @trivial $Builtin.Int1):
+// CHECK: bb0(%0 : $Builtin.Int1):
// CHECK-NEXT: %1 = alloc_stack $Builtin.Int8
// CHECK-NEXT: %2 = integer_literal $Builtin.Int8, 8
// CHECK-NEXT: store %2 to [trivial] %1 : $*Builtin.Int8
@@ -297,7 +297,7 @@
// CHECK: }
sil @test_simple_call_yield_inout : $(Builtin.Int1) -> () {
-entry(%flag : @trivial $Builtin.Int1):
+entry(%flag : $Builtin.Int1):
%0 = function_ref @yield_inout : $@convention(thin) @yield_once() -> (@yields @inout Builtin.Int8)
(%addr, %token) = begin_apply %0() : $@convention(thin) @yield_once() -> (@yields @inout Builtin.Int8)
cond_br %flag, yes, no
@@ -322,7 +322,7 @@
// CHECK: [[T0:%.*]] = function_ref @yield_inout
// CHECK: begin_apply [[T0]]
sil @test_multi_end_yield_inout : $(Builtin.Int1) -> () {
-entry(%flag : @trivial $Builtin.Int1):
+entry(%flag : $Builtin.Int1):
%0 = function_ref @yield_inout : $@convention(thin) @yield_once() -> (@yields @inout Builtin.Int8)
(%addr, %token) = begin_apply %0() : $@convention(thin) @yield_once() -> (@yields @inout Builtin.Int8)
cond_br %flag, yes, no
@@ -345,7 +345,7 @@
// CHECK: [[T0:%.*]] = function_ref @yield_inout
// CHECK: begin_apply [[T0]]
sil @test_multi_abort_yield_inout : $(Builtin.Int1) -> () {
-entry(%flag : @trivial $Builtin.Int1):
+entry(%flag : $Builtin.Int1):
%0 = function_ref @yield_inout : $@convention(thin) @yield_once() -> (@yields @inout Builtin.Int8)
(%addr, %token) = begin_apply %0() : $@convention(thin) @yield_once() -> (@yields @inout Builtin.Int8)
cond_br %flag, yes, no
diff --git a/test/SILOptimizer/mandatory_inlining_open_existential.sil b/test/SILOptimizer/mandatory_inlining_open_existential.sil
index 06aef6f..d46ca29 100644
--- a/test/SILOptimizer/mandatory_inlining_open_existential.sil
+++ b/test/SILOptimizer/mandatory_inlining_open_existential.sil
@@ -11,7 +11,7 @@
}
sil hidden @caller : $@convention(thin) (@in P) -> () {
-bb0(%0 : @trivial $*P):
+bb0(%0 : $*P):
%2 = open_existential_addr immutable_access %0 : $*P to $*@opened("214EF566-CD33-11E6-A1F0-34363BD08DA0") P
%3 = witness_method $@opened("214EF566-CD33-11E6-A1F0-34363BD08DA0") P, #P.f7!1, %2 : $*@opened("214EF566-CD33-11E6-A1F0-34363BD08DA0") P : $@convention(witness_method: P) <τ_0_0 where τ_0_0 : P> (@in_guaranteed τ_0_0) -> @owned @callee_owned () -> @out τ_0_0
%4 = apply %3<@opened("214EF566-CD33-11E6-A1F0-34363BD08DA0") P>(%2) : $@convention(witness_method: P) <τ_0_0 where τ_0_0 : P> (@in_guaranteed τ_0_0) -> @owned @callee_owned () -> @out τ_0_0
@@ -30,7 +30,7 @@
}
sil hidden [transparent] @callee : $@convention(thin) <τ_0_0 where τ_0_0 : P> (@owned @callee_owned () -> @out τ_0_0) -> @out P {
-bb0(%0 : @trivial $*P, %1 : @owned $@callee_owned () -> @out τ_0_0):
+bb0(%0 : $*P, %1 : @owned $@callee_owned () -> @out τ_0_0):
%2 = alloc_stack $τ_0_0
%3 = apply %1(%2) : $@callee_owned () -> @out τ_0_0
%4 = init_existential_addr %0 : $*P, $τ_0_0
diff --git a/test/SILOptimizer/mandatory_inlining_ownership.sil b/test/SILOptimizer/mandatory_inlining_ownership.sil
index 2ba9b37..eb7d436 100644
--- a/test/SILOptimizer/mandatory_inlining_ownership.sil
+++ b/test/SILOptimizer/mandatory_inlining_ownership.sil
@@ -72,7 +72,7 @@
%fn = function_ref @calleeWithGuaranteedThrows : $@convention(thin) (@guaranteed C) -> (Builtin.Int64, @error Error)
try_apply %fn(%0) : $@convention(thin) (@guaranteed C) -> (Builtin.Int64, @error Error), normal bb1, error bb2
-bb1(%4 : @trivial $Builtin.Int64):
+bb1(%4 : $Builtin.Int64):
destroy_value %0 : $C
return %4 : $Builtin.Int64
diff --git a/test/SILOptimizer/mandatory_inlining_resilience.sil b/test/SILOptimizer/mandatory_inlining_resilience.sil
index 1708146..d2035f2 100644
--- a/test/SILOptimizer/mandatory_inlining_resilience.sil
+++ b/test/SILOptimizer/mandatory_inlining_resilience.sil
@@ -32,7 +32,7 @@
// CHECK-LABEL: sil [serialized] @serialized_callee
sil [serialized] @serialized_callee : $@convention(method) (@thin S.Type) -> S {
-bb0(%0 : @trivial $@thin S.Type):
+bb0(%0 : $@thin S.Type):
%1 = alloc_box ${ var S }, var, name "self"
%2 = mark_uninitialized [rootself] %1 : ${ var S }
%3 = project_box %2 : ${ var S }, 0
diff --git a/test/SILOptimizer/mark_uninitialized_fixup.sil b/test/SILOptimizer/mark_uninitialized_fixup.sil
index 844a09c..fc2e36e 100644
--- a/test/SILOptimizer/mark_uninitialized_fixup.sil
+++ b/test/SILOptimizer/mark_uninitialized_fixup.sil
@@ -69,7 +69,7 @@
// CHECK: load [trivial] [[MUI]]
// CHECK: destroy_value [[BOX]]
sil @test_rauw_uses_of_project_box : $@convention(thin) (Builtin.Int1, @thin Bool.Type) -> Bool {
-bb0(%0 : @trivial $Builtin.Int1, %1 : @trivial $@thin Bool.Type):
+bb0(%0 : $Builtin.Int1, %1 : $@thin Bool.Type):
%2 = alloc_box ${ var Bool }, var, name "self"
%3 = mark_uninitialized [rootself] %2 : ${ var Bool }
%4 = project_box %3 : ${ var Bool }, 0
@@ -85,7 +85,7 @@
sil @capture_promotion_generated_callee : $@convention(thin) (@in Bool) -> ()
// CHECK-LABEL: sil @test_copyvalue_use_of_projectbox : $@convention(thin) (Builtin.Int1) -> () {
-// CHECK: bb0([[ARG:%.*]] : @trivial $Builtin.Int1):
+// CHECK: bb0([[ARG:%.*]] : $Builtin.Int1):
// CHECK: [[BOX:%.*]] = alloc_box ${ var Bool }, var, name "self"
// CHECK: [[PB:%.*]] = project_box [[BOX]]
// CHECK: [[MUI:%.*]] = mark_uninitialized [rootself] [[PB]]
@@ -94,7 +94,7 @@
// CHECK: destroy_value [[BOX_COPY]]
// CHECK: destroy_value [[BOX]]
sil @test_copyvalue_use_of_projectbox : $@convention(thin) (Builtin.Int1) -> () {
-bb0(%0 : @trivial $Builtin.Int1):
+bb0(%0 : $Builtin.Int1):
// Initial initialization.
%1 = alloc_box ${ var Bool }, var, name "self"
%2 = mark_uninitialized [rootself] %1 : ${ var Bool }
diff --git a/test/SILOptimizer/noreturn_folding_ownership.sil b/test/SILOptimizer/noreturn_folding_ownership.sil
index c12d720..8682aba 100644
--- a/test/SILOptimizer/noreturn_folding_ownership.sil
+++ b/test/SILOptimizer/noreturn_folding_ownership.sil
@@ -38,7 +38,7 @@
%10 = struct $Int64 (%9 : $Builtin.Int64)
br bb3(%10 : $Int64)
-bb3 (%11: @trivial $Int64):
+bb3 (%11: $Int64):
return %11 : $Int64
}
diff --git a/test/SILOptimizer/opaque_values_mandatory.sil b/test/SILOptimizer/opaque_values_mandatory.sil
index 411f5b5..89ddb5c 100644
--- a/test/SILOptimizer/opaque_values_mandatory.sil
+++ b/test/SILOptimizer/opaque_values_mandatory.sil
@@ -13,7 +13,7 @@
// CHECK: return %0 : $T
// CHECK-LABEL: } // end sil function 'f010_diagnose_identity'
sil hidden @f010_diagnose_identity : $@convention(thin) <T> (@in T) -> @out T {
-bb0(%0 : @trivial $T):
+bb0(%0 : $T):
%c = copy_value %0 : $T
destroy_value %0 : $T
return %c : $T
@@ -31,7 +31,7 @@
// CHECK: return %{{.*}} : $()
// CHECK-LABEL: } // end sil function 'f020_assign_inout'
sil hidden @f020_assign_inout : $@convention(thin) <T> (@inout T, @in T) -> () {
-bb0(%0 : @trivial $*T, %1 : @trivial $T):
+bb0(%0 : $*T, %1 : $T):
%2 = copy_value %1 : $T
assign %2 to %0 : $*T
destroy_value %1 : $T
@@ -52,7 +52,7 @@
// CHECK: return %6 : $(Builtin.Int64, Builtin.Int64, Builtin.Int64)
// CHECK-LABEL: } // end sil function 'f030_callMultiResult'
sil @f030_callMultiResult : $@convention(thin) (Int) -> (Int, Int, Int) {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%1 = function_ref @f040_multiResult : $@convention(thin) <τ_0_0> (@in τ_0_0) -> (@out τ_0_0, @out τ_0_0, @out τ_0_0)
%2 = apply %1<Int>(%0) : $@convention(thin) <τ_0_0> (@in τ_0_0) -> (@out τ_0_0, @out τ_0_0, @out τ_0_0)
%3 = tuple_extract %2 : $(Int, Int, Int), 0
@@ -72,7 +72,7 @@
// CHECK: return %3 : $(T, T, T)
// CHECK-LABEL: } // end sil function 'f040_multiResult'
sil hidden [noinline] @f040_multiResult : $@convention(thin) <T> (@in T) -> (@out T, @out T, @out T) {
-bb0(%0 : @trivial $T):
+bb0(%0 : $T):
%2 = copy_value %0 : $T
%3 = copy_value %0 : $T
%4 = copy_value %0 : $T
diff --git a/test/SILOptimizer/ownership_model_eliminator.sil b/test/SILOptimizer/ownership_model_eliminator.sil
index 1d55a5f..b55fd43 100644
--- a/test/SILOptimizer/ownership_model_eliminator.sil
+++ b/test/SILOptimizer/ownership_model_eliminator.sil
@@ -24,7 +24,7 @@
// CHECK: [[LOAD4:%[0-9]+]] = load [[ARG2]] : $*Builtin.Int32
// CHECK: apply {{%[0-9]+}}([[LOAD4]])
sil @load : $@convention(thin) (@in Builtin.NativeObject, @in Builtin.Int32) -> () {
-bb0(%0 : @trivial $*Builtin.NativeObject, %1 : @trivial $*Builtin.Int32):
+bb0(%0 : $*Builtin.NativeObject, %1 : $*Builtin.Int32):
%use_native_object_func = function_ref @use_native_object : $@convention(thin) (@owned Builtin.NativeObject) -> ()
%use_int32_func = function_ref @use_int32 : $@convention(thin) (Builtin.Int32) -> ()
@@ -51,7 +51,7 @@
// CHECK: strong_release [[OLDVAL]]
// CHECK: store [[ARG4]] to [[ARG3]] : $*Builtin.Int32
sil @store : $@convention(thin) (@in Builtin.NativeObject, Builtin.NativeObject, @in Builtin.Int32, Builtin.Int32) -> () {
-bb0(%0 : @trivial $*Builtin.NativeObject, %1 : @unowned $Builtin.NativeObject, %2 : @trivial $*Builtin.Int32, %3 : @trivial $Builtin.Int32):
+bb0(%0 : $*Builtin.NativeObject, %1 : @unowned $Builtin.NativeObject, %2 : $*Builtin.Int32, %3 : $Builtin.Int32):
%4 = copy_value %1 : $Builtin.NativeObject
%5 = copy_value %1 : $Builtin.NativeObject
store %4 to [init] %0 : $*Builtin.NativeObject
@@ -67,7 +67,7 @@
// CHECK: unchecked_ref_cast [[BORROWED_VALUE]]
// CHECK-NOT: end_borrow
sil @borrow : $@convention(thin) (@in Builtin.NativeObject) -> () {
-bb0(%0 : @trivial $*Builtin.NativeObject):
+bb0(%0 : $*Builtin.NativeObject):
%1 = load_borrow %0 : $*Builtin.NativeObject
%2 = unchecked_ref_cast %1 : $Builtin.NativeObject to $Builtin.NativeObject
end_borrow %1 : $Builtin.NativeObject
diff --git a/test/SILOptimizer/raw_sil_inst_lowering.sil b/test/SILOptimizer/raw_sil_inst_lowering.sil
index 2c265dc..3181229 100644
--- a/test/SILOptimizer/raw_sil_inst_lowering.sil
+++ b/test/SILOptimizer/raw_sil_inst_lowering.sil
@@ -12,7 +12,7 @@
// CHECK: store
// CHECK: return
sil @non_box_assign_trivial : $@convention(thin) (@inout Bool, Bool) -> () {
-bb0(%0 : @trivial $*Bool, %1 : @trivial $Bool):
+bb0(%0 : $*Bool, %1 : $Bool):
assign %1 to %0 : $*Bool
%9 = tuple ()
return %9 : $()
@@ -23,7 +23,7 @@
// CHECK: store
// CHECK: return
sil @non_box_assign : $@convention(thin) (@inout SomeClass, @owned SomeClass) -> () {
-bb0(%0 : @trivial $*SomeClass, %1 : @owned $SomeClass):
+bb0(%0 : $*SomeClass, %1 : @owned $SomeClass):
assign %1 to %0 : $*SomeClass
%9 = tuple ()
return %9 : $()
diff --git a/test/SILOptimizer/semantic-arc-opts.sil b/test/SILOptimizer/semantic-arc-opts.sil
index 58e50ff..a16f788 100644
--- a/test/SILOptimizer/semantic-arc-opts.sil
+++ b/test/SILOptimizer/semantic-arc-opts.sil
@@ -9,6 +9,7 @@
//////////////////
sil @guaranteed_user : $@convention(thin) (@guaranteed Builtin.NativeObject) -> ()
+sil @owned_user : $@convention(thin) (@owned Builtin.NativeObject) -> ()
struct NativeObjectPair {
var obj1 : Builtin.NativeObject
@@ -188,3 +189,53 @@
%9999 = tuple()
return %9999 : $()
}
+
+// CHECK-LABEL: sil @dead_live_range_multiple_destroy_value : $@convention(thin) (@owned Builtin.NativeObject) -> () {
+// CHECK-NOT: copy_value
+// CHECK-NOT: destroy_value
+// CHECK: bb3:
+// CHECK: destroy_value
+// CHECK: } // end sil function 'dead_live_range_multiple_destroy_value'
+sil @dead_live_range_multiple_destroy_value : $@convention(thin) (@owned Builtin.NativeObject) -> () {
+bb0(%0 : @owned $Builtin.NativeObject) :
+ %1 = copy_value %0 : $Builtin.NativeObject
+ cond_br undef, bb1, bb2
+
+bb1:
+ destroy_value %1 : $Builtin.NativeObject
+ br bb3
+
+bb2:
+ destroy_value %1 : $Builtin.NativeObject
+ br bb3
+
+bb3:
+ destroy_value %0 : $Builtin.NativeObject
+ %9999 = tuple()
+ return %9999 : $()
+}
+
+// CHECK-LABEL: sil @dead_live_range_multiple_destroy_value_consuming_user : $@convention(thin) (@owned Builtin.NativeObject) -> () {
+// CHECK: copy_value
+// CHECK: destroy_value
+// CHECK: destroy_value
+// CHECK: } // end sil function 'dead_live_range_multiple_destroy_value_consuming_user'
+sil @dead_live_range_multiple_destroy_value_consuming_user : $@convention(thin) (@owned Builtin.NativeObject) -> () {
+bb0(%0 : @owned $Builtin.NativeObject) :
+ %1 = copy_value %0 : $Builtin.NativeObject
+ cond_br undef, bb1, bb2
+
+bb1:
+ destroy_value %1 : $Builtin.NativeObject
+ br bb3
+
+bb2:
+ %2 = function_ref @owned_user : $@convention(thin) (@owned Builtin.NativeObject) -> ()
+ apply %2(%1) : $@convention(thin) (@owned Builtin.NativeObject) -> ()
+ br bb3
+
+bb3:
+ destroy_value %0 : $Builtin.NativeObject
+ %9999 = tuple()
+ return %9999 : $()
+}
diff --git a/test/SILOptimizer/specialize_self_conforming_error.swift b/test/SILOptimizer/specialize_self_conforming_error.swift
new file mode 100644
index 0000000..2c6bd1b
--- /dev/null
+++ b/test/SILOptimizer/specialize_self_conforming_error.swift
@@ -0,0 +1,97 @@
+// RUN: %target-swift-frontend -module-name specialize_self_conforming -emit-sil -O -primary-file %s | %FileCheck %s
+
+// Test 1: apply the substitution
+// [U:Error => Error:Error]
+// to the type argument map
+// [T:Error => U:Error]
+// on the call to takesError.
+
+@_optimize(none)
+func takesError<T : Error>(_: T) {}
+
+@inline(__always)
+func callsTakesError<U : Error>(_ error: U) {
+ takesError(error)
+}
+
+// CHECK-LABEL: sil hidden @$s26specialize_self_conforming5test1yys5Error_pF : $@convention(thin) (@guaranteed Error) -> () {
+// CHECK: [[TEMP:%.*]] = alloc_stack $Error
+// CHECK: store %0 to [[TEMP]]
+// CHECK: [[FN:%.*]] = function_ref @$s26specialize_self_conforming10takesErroryyxs0E0RzlF : $@convention(thin) <τ_0_0 where τ_0_0 : Error> (@in_guaranteed τ_0_0) -> ()
+// CHECK: apply [[FN]]<Error>([[TEMP]]) : $@convention(thin) <τ_0_0 where τ_0_0 : Error> (@in_guaranteed τ_0_0) -> ()
+// CHECK: dealloc_stack [[TEMP]]
+// CHECK: return
+
+func test1(_ error: Error) {
+ callsTakesError(error)
+}
+
+// Test 2: apply the substitution
+// [U => Int]
+// to the type argument map
+// [T:Error => Error:Error]
+// on the call to takesError.
+
+@inline(__always)
+func callsTakesErrorWithError<U>(_ error: Error, _ value : U) {
+ takesError(error)
+}
+
+// CHECK-LABEL: sil hidden @$s26specialize_self_conforming5test2yys5Error_pF : $@convention(thin) (@guaranteed Error) -> () {
+// CHECK: [[TEMP:%.*]] = alloc_stack $Error
+// CHECK: store %0 to [[TEMP]]
+// CHECK: [[FN:%.*]] = function_ref @$s26specialize_self_conforming10takesErroryyxs0E0RzlF : $@convention(thin) <τ_0_0 where τ_0_0 : Error> (@in_guaranteed τ_0_0) -> ()
+// CHECK: apply [[FN]]<Error>([[TEMP]]) : $@convention(thin) <τ_0_0 where τ_0_0 : Error> (@in_guaranteed τ_0_0) -> ()
+// CHECK: dealloc_stack [[TEMP]]
+// CHECK: return
+
+func test2(_ error: Error) {
+ callsTakesErrorWithError(error, 0)
+}
+
+// Test 3: apply the substitution
+// [V => Int]
+// to the type argument map
+// [T:Error => Error:Error, U => V]
+// on the call to takesErrorAndValue.
+
+@_optimize(none)
+func takesErrorAndValue<T : Error, U>(_: T, _: U) {}
+
+@inline(__always)
+func callsTakesErrorAndValueWithError<U>(_ error: Error, _ value : U) {
+ takesErrorAndValue(error, value)
+}
+
+// CHECK-LABEL: sil hidden @$s26specialize_self_conforming5test3yys5Error_pF : $@convention(thin) (@guaranteed Error) -> () {
+// CHECK: [[TEMP:%.*]] = alloc_stack $Error
+// CHECK: store %0 to [[TEMP]]
+// CHECK: [[FN:%.*]] = function_ref @$s26specialize_self_conforming18takesErrorAndValueyyx_q_ts0E0Rzr0_lF : $@convention(thin) <τ_0_0, τ_0_1 where τ_0_0 : Error> (@in_guaranteed τ_0_0, @in_guaranteed τ_0_1) -> ()
+// CHECK: apply [[FN]]<Error, Int>([[TEMP]], {{%.*}}) :
+// CHECK: dealloc_stack [[TEMP]]
+// CHECK: return
+
+func test3(_ error: Error) {
+ callsTakesErrorAndValueWithError(error, 0)
+}
+
+// Test 4: just clone the type argument map
+// [Self:P => opened:P, T:Error => Error:Error]
+// When the inliner is cloning a substitution map that includes an opened
+// archetype, it uses a substitution function that expects not to be called
+// on types it's not expecting.
+
+protocol P {}
+extension P {
+ @_optimize(none)
+ func exTakesError<T: Error>(_: T) {}
+}
+
+@inline(__always)
+func callsExTakesErrorWithError(_ p: P, _ error: Error) {
+ p.exTakesError(error)
+}
+
+func test4(_ p: P, _ error: Error) {
+ callsExTakesErrorWithError(p, error)
+}
diff --git a/test/SILOptimizer/static_report.sil b/test/SILOptimizer/static_report.sil
index f5fd975..3765e1f 100644
--- a/test/SILOptimizer/static_report.sil
+++ b/test/SILOptimizer/static_report.sil
@@ -4,7 +4,7 @@
// test_static_report
sil @sil_test_static_report : $@convention(thin) (Builtin.RawPointer) -> Builtin.RawPointer {
-bb0(%0 : @trivial $Builtin.RawPointer):
+bb0(%0 : $Builtin.RawPointer):
%1 = integer_literal $Builtin.Int1, 1
%3 = builtin "staticReport"(%1 : $Builtin.Int1, %1 : $Builtin.Int1, %0 : $Builtin.RawPointer) : $() // expected-error {{static report error}}
return %0 : $Builtin.RawPointer
diff --git a/test/SILOptimizer/verify_noescape_closure.sil b/test/SILOptimizer/verify_noescape_closure.sil
index 65570a6..c1e7823 100644
--- a/test/SILOptimizer/verify_noescape_closure.sil
+++ b/test/SILOptimizer/verify_noescape_closure.sil
@@ -17,13 +17,13 @@
sil @takesEscapingClosure : $@convention(thin) (@owned @callee_owned () -> ()) -> ()
sil hidden @closureWithArgument : $@convention(thin) (@inout_aliasable Int) -> () {
-bb0(%1 : @trivial $*Int):
+bb0(%1 : $*Int):
%3 = tuple ()
return %3 : $()
}
sil @missingNoescape : $@convention(thin) (Int) ->() {
-bb0(%0 : @trivial $Int):
+bb0(%0 : $Int):
%2 = alloc_box ${ var Int }
%3 = project_box %2 : ${ var Int }, 0
store %0 to [trivial] %3 : $*Int
diff --git a/test/Sema/substring_to_string_conversion_swift4.swift b/test/Sema/substring_to_string_conversion_swift4.swift
index 6f43173..10ab545 100644
--- a/test/Sema/substring_to_string_conversion_swift4.swift
+++ b/test/Sema/substring_to_string_conversion_swift4.swift
@@ -81,12 +81,6 @@
// Substring-to-String via subscripting in a context expecting String
func takesString(_ s: String) {}
-func apply(_ fn: (String) -> (), _ s: String) {
- fn(s[s.startIndex..<s.endIndex]) // expected-error{{subscripts returning String were obsoleted in Swift 4; explicitly construct a String from subscripted result}} {{6-6=String(}} {{34-34=)}}
- let _: String = s[s.startIndex..<s.endIndex] // expected-error{{subscripts returning String were obsoleted in Swift 4; explicitly construct a String from subscripted result}} {{19-19=String(}} {{47-47=)}}
- _ = s[s.startIndex..<s.endIndex] as String // expected-error{{subscripts returning String were obsoleted in Swift 4; explicitly construct a String from subscripted result}} {{7-7=String(}} {{35-35=)}}
-}
-
// rdar://33474838
protocol Derivable {
func derive() -> Substring
diff --git a/test/Serialization/Inputs/def_basic_objc.sil b/test/Serialization/Inputs/def_basic_objc.sil
index e61d267..885f5b2 100644
--- a/test/Serialization/Inputs/def_basic_objc.sil
+++ b/test/Serialization/Inputs/def_basic_objc.sil
@@ -9,7 +9,7 @@
// CHECK-LABEL: @objc_classes : $@convention(thin) (@thick NSObject.Type) -> ()
sil [transparent] [serialized] @objc_classes : $@convention(thin) (@thick NSObject.Type) -> () {
-bb0(%0 : @trivial $@thick NSObject.Type):
+bb0(%0 : $@thick NSObject.Type):
%1 = thick_to_objc_metatype %0 : $@thick NSObject.Type to $@objc_metatype NSObject.Type
// CHECK: %2 = alloc_ref_dynamic [objc] %1 : $@objc_metatype NSObject.Type, $NSObject
%2 = alloc_ref_dynamic [objc] %1 : $@objc_metatype NSObject.Type, $NSObject
@@ -35,7 +35,7 @@
// CHECK: {{%.*}} = objc_metatype_to_object {{%.*}} : $@objc_metatype SomeClass.Type to $AnyObject
// CHECK: {{%.*}} = objc_existential_metatype_to_object {{%.*}} : $@objc_metatype SomeClassProtocol.Type to $AnyObject
sil [transparent] [serialized] @metatype_to_object : $@convention(thin) (@objc_metatype SomeClass.Type, @objc_metatype SomeClassProtocol.Type) -> @owned (AnyObject, AnyObject) {
-entry(%a : @trivial $@objc_metatype SomeClass.Type, %b : @trivial $@objc_metatype SomeClassProtocol.Type):
+entry(%a : $@objc_metatype SomeClass.Type, %b : $@objc_metatype SomeClassProtocol.Type):
%x = objc_metatype_to_object %a : $@objc_metatype SomeClass.Type to $AnyObject
%y = objc_existential_metatype_to_object %b : $@objc_metatype SomeClassProtocol.Type to $AnyObject
%z = tuple (%x : $AnyObject, %y : $AnyObject)
diff --git a/test/SourceKit/DocSupport/doc_clang_module.swift.response b/test/SourceKit/DocSupport/doc_clang_module.swift.response
index 3c6a5b6..7c3d3a4 100644
--- a/test/SourceKit/DocSupport/doc_clang_module.swift.response
+++ b/test/SourceKit/DocSupport/doc_clang_module.swift.response
@@ -65,7 +65,7 @@
extension FooRuncingOptions {
- @inlinable init<S>(_ sequence: __owned S) where S : Sequence, FooRuncingOptions.Element == S.Element
+ @inlinable init<S>(_ sequence: __owned S) where S : Sequence, Self.Element == S.Element
@inlinable mutating func subtract(_ other: FooRuncingOptions)
@@ -1304,1242 +1304,1257 @@
key.length: 8
},
{
- key.kind: source.lang.swift.ref.struct,
- key.name: "FooRuncingOptions",
- key.usr: "c:@E@FooRuncingOptions",
+ key.kind: source.lang.swift.ref.generic_type_param,
+ key.name: "Self",
+ key.usr: "s:s10SetAlgebraP4Selfxmfp",
key.offset: 1542,
- key.length: 17
+ key.length: 4
},
{
- key.kind: source.lang.swift.ref.typealias,
- key.name: "Element",
- key.usr: "s:So17FooRuncingOptionsV7Elementa",
+ key.kind: source.lang.swift.syntaxtype.typeidentifier,
+ key.offset: 1547,
+ key.length: 7
+ },
+ {
+ key.kind: source.lang.swift.syntaxtype.typeidentifier,
+ key.offset: 1558,
+ key.length: 1
+ },
+ {
+ key.kind: source.lang.swift.syntaxtype.typeidentifier,
key.offset: 1560,
key.length: 7
},
{
- key.kind: source.lang.swift.syntaxtype.typeidentifier,
- key.offset: 1571,
- key.length: 1
- },
- {
- key.kind: source.lang.swift.syntaxtype.typeidentifier,
+ key.kind: source.lang.swift.syntaxtype.attribute.builtin,
key.offset: 1573,
- key.length: 7
- },
- {
- key.kind: source.lang.swift.syntaxtype.attribute.builtin,
- key.offset: 1586,
key.length: 10
},
{
key.kind: source.lang.swift.syntaxtype.attribute.builtin,
- key.offset: 1597,
+ key.offset: 1584,
key.length: 8
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 1606,
+ key.offset: 1593,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 1611,
+ key.offset: 1598,
key.length: 8
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 1620,
+ key.offset: 1607,
key.length: 1
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 1622,
+ key.offset: 1609,
key.length: 5
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "FooRuncingOptions",
key.usr: "c:@E@FooRuncingOptions",
- key.offset: 1629,
+ key.offset: 1616,
key.length: 17
},
{
key.kind: source.lang.swift.syntaxtype.attribute.builtin,
- key.offset: 1653,
+ key.offset: 1640,
key.length: 10
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 1664,
+ key.offset: 1651,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 1669,
+ key.offset: 1656,
key.length: 8
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 1678,
+ key.offset: 1665,
key.length: 2
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 1681,
+ key.offset: 1668,
key.length: 5
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "FooRuncingOptions",
key.usr: "c:@E@FooRuncingOptions",
- key.offset: 1688,
+ key.offset: 1675,
key.length: 17
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Bool",
key.usr: "s:Sb",
- key.offset: 1710,
+ key.offset: 1697,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.attribute.builtin,
- key.offset: 1720,
+ key.offset: 1707,
key.length: 10
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 1731,
+ key.offset: 1718,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 1736,
+ key.offset: 1723,
key.length: 10
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 1747,
+ key.offset: 1734,
key.length: 2
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 1750,
+ key.offset: 1737,
key.length: 5
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "FooRuncingOptions",
key.usr: "c:@E@FooRuncingOptions",
- key.offset: 1757,
+ key.offset: 1744,
key.length: 17
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Bool",
key.usr: "s:Sb",
- key.offset: 1779,
+ key.offset: 1766,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.attribute.builtin,
- key.offset: 1789,
+ key.offset: 1776,
key.length: 10
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 1800,
+ key.offset: 1787,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 1805,
+ key.offset: 1792,
key.length: 10
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 1816,
+ key.offset: 1803,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 1821,
+ key.offset: 1808,
key.length: 5
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "FooRuncingOptions",
key.usr: "c:@E@FooRuncingOptions",
- key.offset: 1828,
+ key.offset: 1815,
key.length: 17
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Bool",
key.usr: "s:Sb",
- key.offset: 1850,
+ key.offset: 1837,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.attribute.builtin,
- key.offset: 1860,
+ key.offset: 1847,
key.length: 10
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 1871,
+ key.offset: 1858,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 1876,
+ key.offset: 1863,
key.length: 11
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 1888,
+ key.offset: 1875,
key.length: 1
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 1890,
+ key.offset: 1877,
key.length: 5
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "FooRuncingOptions",
key.usr: "c:@E@FooRuncingOptions",
- key.offset: 1897,
+ key.offset: 1884,
key.length: 17
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "FooRuncingOptions",
key.usr: "c:@E@FooRuncingOptions",
- key.offset: 1919,
+ key.offset: 1906,
key.length: 17
},
{
key.kind: source.lang.swift.syntaxtype.attribute.builtin,
- key.offset: 1942,
+ key.offset: 1929,
key.length: 10
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 1953,
+ key.offset: 1940,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 1957,
+ key.offset: 1944,
key.length: 7
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Bool",
key.usr: "s:Sb",
- key.offset: 1966,
+ key.offset: 1953,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 1973,
+ key.offset: 1960,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.attribute.builtin,
- key.offset: 1984,
+ key.offset: 1971,
key.length: 10
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 1995,
+ key.offset: 1982,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 2000,
+ key.offset: 1987,
key.length: 16
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 2017,
+ key.offset: 2004,
key.length: 2
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 2020,
+ key.offset: 2007,
key.length: 5
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "FooRuncingOptions",
key.usr: "c:@E@FooRuncingOptions",
- key.offset: 2027,
+ key.offset: 2014,
key.length: 17
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Bool",
key.usr: "s:Sb",
- key.offset: 2049,
+ key.offset: 2036,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.attribute.builtin,
- key.offset: 2059,
+ key.offset: 2046,
key.length: 10
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 2070,
+ key.offset: 2057,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 2075,
+ key.offset: 2062,
key.length: 14
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 2090,
+ key.offset: 2077,
key.length: 2
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 2093,
+ key.offset: 2080,
key.length: 5
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "FooRuncingOptions",
key.usr: "c:@E@FooRuncingOptions",
- key.offset: 2100,
+ key.offset: 2087,
key.length: 17
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Bool",
key.usr: "s:Sb",
- key.offset: 2122,
+ key.offset: 2109,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 2130,
+ key.offset: 2117,
key.length: 9
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "FooRuncingOptions",
key.usr: "c:@E@FooRuncingOptions",
- key.offset: 2140,
+ key.offset: 2127,
key.length: 17
},
{
key.kind: source.lang.swift.syntaxtype.attribute.builtin,
- key.offset: 2165,
+ key.offset: 2152,
key.length: 10
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 2176,
+ key.offset: 2163,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 2181,
+ key.offset: 2168,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 2187,
+ key.offset: 2174,
key.length: 1
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 2189,
+ key.offset: 2176,
key.length: 5
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "FooRuncingOptions",
key.usr: "c:@E@FooRuncingOptions",
- key.offset: 2196,
+ key.offset: 2183,
key.length: 17
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "FooRuncingOptions",
key.usr: "c:@E@FooRuncingOptions",
- key.offset: 2218,
+ key.offset: 2205,
key.length: 17
},
{
key.kind: source.lang.swift.syntaxtype.attribute.builtin,
- key.offset: 2241,
+ key.offset: 2228,
key.length: 10
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 2252,
+ key.offset: 2239,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 2257,
+ key.offset: 2244,
key.length: 12
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 2270,
+ key.offset: 2257,
key.length: 1
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 2272,
+ key.offset: 2259,
key.length: 5
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "FooRuncingOptions",
key.usr: "c:@E@FooRuncingOptions",
- key.offset: 2279,
+ key.offset: 2266,
key.length: 17
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "FooRuncingOptions",
key.usr: "c:@E@FooRuncingOptions",
- key.offset: 2301,
+ key.offset: 2288,
key.length: 17
},
{
key.kind: source.lang.swift.syntaxtype.attribute.builtin,
- key.offset: 2324,
+ key.offset: 2311,
key.length: 10
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 2335,
+ key.offset: 2322,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 2340,
+ key.offset: 2327,
key.length: 19
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 2360,
+ key.offset: 2347,
key.length: 1
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 2362,
+ key.offset: 2349,
key.length: 5
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "FooRuncingOptions",
key.usr: "c:@E@FooRuncingOptions",
- key.offset: 2369,
+ key.offset: 2356,
key.length: 17
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "FooRuncingOptions",
key.usr: "c:@E@FooRuncingOptions",
- key.offset: 2391,
+ key.offset: 2378,
key.length: 17
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 2412,
+ key.offset: 2399,
key.length: 9
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "FooRuncingOptions",
key.usr: "c:@E@FooRuncingOptions",
- key.offset: 2422,
+ key.offset: 2409,
key.length: 17
},
{
key.kind: source.lang.swift.syntaxtype.attribute.builtin,
- key.offset: 2447,
+ key.offset: 2434,
key.length: 10
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 2458,
+ key.offset: 2445,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 2463,
+ key.offset: 2450,
key.length: 8
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 2472,
+ key.offset: 2459,
key.length: 1
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 2474,
+ key.offset: 2461,
key.length: 6
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "FooRuncingOptions",
key.usr: "c:@E@FooRuncingOptions",
- key.offset: 2482,
+ key.offset: 2469,
key.length: 17
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Bool",
key.usr: "s:Sb",
- key.offset: 2504,
+ key.offset: 2491,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.attribute.builtin,
- key.offset: 2514,
+ key.offset: 2501,
key.length: 10
},
{
key.kind: source.lang.swift.syntaxtype.attribute.builtin,
- key.offset: 2525,
+ key.offset: 2512,
key.length: 8
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 2534,
+ key.offset: 2521,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 2539,
+ key.offset: 2526,
key.length: 6
},
{
key.kind: source.lang.swift.syntaxtype.argument,
+ key.offset: 2533,
+ key.length: 1
+ },
+ {
+ key.kind: source.lang.swift.syntaxtype.parameter,
+ key.offset: 2535,
+ key.length: 9
+ },
+ {
+ key.kind: source.lang.swift.ref.struct,
+ key.name: "FooRuncingOptions",
+ key.usr: "c:@E@FooRuncingOptions",
key.offset: 2546,
- key.length: 1
- },
- {
- key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 2548,
- key.length: 9
- },
- {
- key.kind: source.lang.swift.ref.struct,
- key.name: "FooRuncingOptions",
- key.usr: "c:@E@FooRuncingOptions",
- key.offset: 2559,
key.length: 17
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 2582,
+ key.offset: 2569,
key.length: 8
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Bool",
key.usr: "s:Sb",
- key.offset: 2592,
+ key.offset: 2579,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 2598,
+ key.offset: 2585,
key.length: 17
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "FooRuncingOptions",
key.usr: "c:@E@FooRuncingOptions",
- key.offset: 2617,
+ key.offset: 2604,
key.length: 17
},
{
key.kind: source.lang.swift.syntaxtype.attribute.builtin,
- key.offset: 2641,
+ key.offset: 2628,
key.length: 10
},
{
key.kind: source.lang.swift.syntaxtype.attribute.builtin,
- key.offset: 2652,
+ key.offset: 2639,
key.length: 8
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 2661,
+ key.offset: 2648,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 2666,
+ key.offset: 2653,
key.length: 6
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 2673,
+ key.offset: 2660,
key.length: 1
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 2675,
+ key.offset: 2662,
key.length: 6
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "FooRuncingOptions",
key.usr: "c:@E@FooRuncingOptions",
- key.offset: 2683,
+ key.offset: 2670,
key.length: 17
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "FooRuncingOptions",
key.usr: "c:@E@FooRuncingOptions",
- key.offset: 2705,
+ key.offset: 2692,
key.length: 17
},
{
key.kind: source.lang.swift.syntaxtype.attribute.builtin,
- key.offset: 2729,
+ key.offset: 2716,
key.length: 10
},
{
key.kind: source.lang.swift.syntaxtype.attribute.builtin,
- key.offset: 2740,
+ key.offset: 2727,
key.length: 8
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 2749,
+ key.offset: 2736,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 2754,
+ key.offset: 2741,
key.length: 6
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 2761,
+ key.offset: 2748,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 2766,
+ key.offset: 2753,
key.length: 9
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "FooRuncingOptions",
key.usr: "c:@E@FooRuncingOptions",
- key.offset: 2777,
+ key.offset: 2764,
key.length: 17
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "FooRuncingOptions",
key.usr: "c:@E@FooRuncingOptions",
- key.offset: 2799,
+ key.offset: 2786,
key.length: 17
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 2821,
+ key.offset: 2808,
key.length: 9
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "FooRuncingOptions",
key.usr: "c:@E@FooRuncingOptions",
- key.offset: 2831,
+ key.offset: 2818,
key.length: 17
},
{
key.kind: source.lang.swift.syntaxtype.attribute.builtin,
- key.offset: 2856,
+ key.offset: 2843,
key.length: 10
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 2867,
+ key.offset: 2854,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.attribute.builtin,
- key.offset: 2879,
+ key.offset: 2866,
key.length: 10
},
{
key.kind: source.lang.swift.syntaxtype.attribute.builtin,
- key.offset: 2890,
+ key.offset: 2877,
key.length: 8
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 2899,
+ key.offset: 2886,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 2904,
+ key.offset: 2891,
key.length: 9
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 2914,
+ key.offset: 2901,
key.length: 1
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 2916,
+ key.offset: 2903,
key.length: 5
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "FooRuncingOptions",
key.usr: "c:@E@FooRuncingOptions",
- key.offset: 2923,
+ key.offset: 2910,
key.length: 17
},
{
key.kind: source.lang.swift.syntaxtype.attribute.builtin,
- key.offset: 2947,
+ key.offset: 2934,
key.length: 10
},
{
key.kind: source.lang.swift.syntaxtype.attribute.builtin,
- key.offset: 2958,
+ key.offset: 2945,
key.length: 8
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 2967,
+ key.offset: 2954,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 2972,
+ key.offset: 2959,
key.length: 16
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 2989,
+ key.offset: 2976,
key.length: 1
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 2991,
+ key.offset: 2978,
key.length: 5
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "FooRuncingOptions",
key.usr: "c:@E@FooRuncingOptions",
- key.offset: 2998,
+ key.offset: 2985,
key.length: 17
},
{
key.kind: source.lang.swift.syntaxtype.attribute.builtin,
- key.offset: 3022,
+ key.offset: 3009,
key.length: 10
},
{
key.kind: source.lang.swift.syntaxtype.attribute.builtin,
- key.offset: 3033,
+ key.offset: 3020,
key.length: 8
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 3042,
+ key.offset: 3029,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 3047,
+ key.offset: 3034,
key.length: 23
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 3071,
+ key.offset: 3058,
key.length: 1
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 3073,
+ key.offset: 3060,
key.length: 5
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "FooRuncingOptions",
key.usr: "c:@E@FooRuncingOptions",
- key.offset: 3080,
+ key.offset: 3067,
key.length: 17
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 3101,
+ key.offset: 3088,
key.length: 6
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 3108,
+ key.offset: 3095,
key.length: 10
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 3126,
+ key.offset: 3113,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 3130,
+ key.offset: 3117,
key.length: 1
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 3133,
+ key.offset: 3120,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 3144,
+ key.offset: 3131,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 3148,
+ key.offset: 3135,
key.length: 1
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Double",
key.usr: "s:Sd",
- key.offset: 3151,
+ key.offset: 3138,
key.length: 6
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 3163,
+ key.offset: 3150,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 3175,
+ key.offset: 3162,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 3180,
+ key.offset: 3167,
key.length: 1
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 3182,
+ key.offset: 3169,
key.length: 1
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 3185,
+ key.offset: 3172,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 3192,
+ key.offset: 3179,
key.length: 1
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
+ key.offset: 3181,
+ key.length: 1
+ },
+ {
+ key.kind: source.lang.swift.ref.struct,
+ key.name: "Double",
+ key.usr: "s:Sd",
+ key.offset: 3184,
+ key.length: 6
+ },
+ {
+ key.kind: source.lang.swift.syntaxtype.keyword,
key.offset: 3194,
- key.length: 1
- },
- {
- key.kind: source.lang.swift.ref.struct,
- key.name: "Double",
- key.usr: "s:Sd",
- key.offset: 3197,
- key.length: 6
- },
- {
- key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 3207,
key.length: 9
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 3217,
+ key.offset: 3204,
key.length: 17
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "UnsafeMutablePointer",
key.usr: "s:Sp",
- key.offset: 3237,
+ key.offset: 3224,
key.length: 20
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "FooStruct1",
key.usr: "c:@S@FooStruct1",
- key.offset: 3258,
+ key.offset: 3245,
key.length: 10
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 3270,
+ key.offset: 3257,
key.length: 6
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 3277,
+ key.offset: 3264,
key.length: 10
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 3295,
+ key.offset: 3282,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 3299,
+ key.offset: 3286,
key.length: 1
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 3302,
+ key.offset: 3289,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 3313,
+ key.offset: 3300,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 3317,
+ key.offset: 3304,
key.length: 1
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Double",
key.usr: "s:Sd",
- key.offset: 3320,
+ key.offset: 3307,
key.length: 6
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 3332,
+ key.offset: 3319,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 3344,
+ key.offset: 3331,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 3349,
+ key.offset: 3336,
key.length: 1
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 3351,
+ key.offset: 3338,
key.length: 1
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 3354,
+ key.offset: 3341,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 3361,
+ key.offset: 3348,
key.length: 1
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
+ key.offset: 3350,
+ key.length: 1
+ },
+ {
+ key.kind: source.lang.swift.ref.struct,
+ key.name: "Double",
+ key.usr: "s:Sd",
+ key.offset: 3353,
+ key.length: 6
+ },
+ {
+ key.kind: source.lang.swift.syntaxtype.keyword,
key.offset: 3363,
- key.length: 1
- },
- {
- key.kind: source.lang.swift.ref.struct,
- key.name: "Double",
- key.usr: "s:Sd",
- key.offset: 3366,
- key.length: 6
- },
- {
- key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 3376,
key.length: 9
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 3386,
+ key.offset: 3373,
key.length: 17
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "FooStruct2",
key.usr: "c:@S@FooStruct2",
- key.offset: 3406,
+ key.offset: 3393,
key.length: 10
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 3417,
+ key.offset: 3404,
key.length: 6
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 3424,
+ key.offset: 3411,
key.length: 17
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 3449,
+ key.offset: 3436,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 3453,
+ key.offset: 3440,
key.length: 1
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 3456,
+ key.offset: 3443,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 3467,
+ key.offset: 3454,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 3471,
+ key.offset: 3458,
key.length: 1
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Double",
key.usr: "s:Sd",
- key.offset: 3474,
+ key.offset: 3461,
key.length: 6
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 3486,
+ key.offset: 3473,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 3498,
+ key.offset: 3485,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 3503,
+ key.offset: 3490,
key.length: 1
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 3505,
+ key.offset: 3492,
key.length: 1
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 3508,
+ key.offset: 3495,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 3515,
+ key.offset: 3502,
key.length: 1
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
+ key.offset: 3504,
+ key.length: 1
+ },
+ {
+ key.kind: source.lang.swift.ref.struct,
+ key.name: "Double",
+ key.usr: "s:Sd",
+ key.offset: 3507,
+ key.length: 6
+ },
+ {
+ key.kind: source.lang.swift.syntaxtype.keyword,
key.offset: 3517,
- key.length: 1
- },
- {
- key.kind: source.lang.swift.ref.struct,
- key.name: "Double",
- key.usr: "s:Sd",
- key.offset: 3520,
- key.length: 6
- },
- {
- key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 3530,
key.length: 9
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 3540,
+ key.offset: 3527,
key.length: 11
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 3554,
+ key.offset: 3541,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 3560,
+ key.offset: 3547,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 3564,
+ key.offset: 3551,
key.length: 9
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 3575,
+ key.offset: 3562,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 3581,
+ key.offset: 3568,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 3586,
+ key.offset: 3573,
key.length: 8
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 3595,
+ key.offset: 3582,
key.length: 1
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 3597,
+ key.offset: 3584,
key.length: 1
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 3600,
+ key.offset: 3587,
key.length: 5
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 3610,
+ key.offset: 3597,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 3616,
+ key.offset: 3603,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 3621,
+ key.offset: 3608,
key.length: 22
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 3644,
+ key.offset: 3631,
key.length: 1
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 3646,
+ key.offset: 3633,
key.length: 1
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 3649,
+ key.offset: 3636,
key.length: 5
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 3659,
+ key.offset: 3646,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 3665,
+ key.offset: 3652,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 3670,
+ key.offset: 3657,
key.length: 8
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 3679,
+ key.offset: 3666,
key.length: 1
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 3681,
+ key.offset: 3668,
key.length: 1
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 3684,
+ key.offset: 3671,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 3691,
+ key.offset: 3678,
key.length: 1
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 3693,
+ key.offset: 3680,
key.length: 1
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Float",
key.usr: "s:Sf",
- key.offset: 3696,
+ key.offset: 3683,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.argument,
+ key.offset: 3690,
+ key.length: 1
+ },
+ {
+ key.kind: source.lang.swift.syntaxtype.parameter,
+ key.offset: 3692,
+ key.length: 1
+ },
+ {
+ key.kind: source.lang.swift.ref.struct,
+ key.name: "Double",
+ key.usr: "s:Sd",
+ key.offset: 3695,
+ key.length: 6
+ },
+ {
+ key.kind: source.lang.swift.syntaxtype.argument,
key.offset: 3703,
key.length: 1
},
@@ -2550,2225 +2565,2208 @@
},
{
key.kind: source.lang.swift.ref.struct,
- key.name: "Double",
- key.usr: "s:Sd",
- key.offset: 3708,
- key.length: 6
- },
- {
- key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 3716,
- key.length: 1
- },
- {
- key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 3718,
- key.length: 1
- },
- {
- key.kind: source.lang.swift.ref.struct,
key.name: "UnsafeMutablePointer",
key.usr: "s:Sp",
- key.offset: 3721,
+ key.offset: 3708,
key.length: 20
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 3742,
+ key.offset: 3729,
key.length: 5
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 3754,
+ key.offset: 3741,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 3760,
+ key.offset: 3747,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 3765,
+ key.offset: 3752,
key.length: 16
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 3782,
+ key.offset: 3769,
key.length: 1
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 3784,
+ key.offset: 3771,
key.length: 3
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Float",
key.usr: "s:Sf",
- key.offset: 3791,
+ key.offset: 3778,
key.length: 5
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 3801,
+ key.offset: 3788,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 3810,
+ key.offset: 3797,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 3815,
+ key.offset: 3802,
key.length: 26
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 3842,
+ key.offset: 3829,
key.length: 1
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 3844,
+ key.offset: 3831,
key.length: 4
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Float",
key.usr: "s:Sf",
- key.offset: 3852,
+ key.offset: 3839,
key.length: 5
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 3862,
+ key.offset: 3849,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 3871,
+ key.offset: 3858,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 3876,
+ key.offset: 3863,
key.length: 16
},
{
key.kind: source.lang.swift.ref.enum,
key.name: "Never",
key.usr: "s:s5NeverO",
- key.offset: 3898,
+ key.offset: 3885,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 3904,
+ key.offset: 3891,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 3909,
+ key.offset: 3896,
key.length: 16
},
{
key.kind: source.lang.swift.ref.enum,
key.name: "Never",
key.usr: "s:s5NeverO",
- key.offset: 3931,
+ key.offset: 3918,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 3937,
+ key.offset: 3924,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 3942,
+ key.offset: 3929,
key.length: 19
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 3964,
+ key.offset: 3951,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 3969,
+ key.offset: 3956,
key.length: 19
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 3991,
+ key.offset: 3978,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 3996,
+ key.offset: 3983,
key.length: 19
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 4018,
+ key.offset: 4005,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 4023,
+ key.offset: 4010,
key.length: 19
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 4045,
+ key.offset: 4032,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 4050,
+ key.offset: 4037,
key.length: 19
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 4072,
+ key.offset: 4059,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 4077,
+ key.offset: 4064,
key.length: 32
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 4110,
+ key.offset: 4097,
key.length: 1
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 4112,
+ key.offset: 4099,
key.length: 1
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 4115,
+ key.offset: 4102,
key.length: 5
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 4125,
+ key.offset: 4112,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 4131,
+ key.offset: 4118,
key.length: 8
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 4140,
+ key.offset: 4127,
key.length: 15
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 4163,
+ key.offset: 4150,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 4168,
+ key.offset: 4155,
key.length: 12
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 4188,
+ key.offset: 4175,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 4193,
+ key.offset: 4180,
key.length: 33
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 4234,
+ key.offset: 4221,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 4239,
+ key.offset: 4226,
key.length: 33
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 4280,
+ key.offset: 4267,
key.length: 6
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 4287,
+ key.offset: 4274,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 4292,
+ key.offset: 4279,
key.length: 17
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 4317,
+ key.offset: 4304,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 4321,
+ key.offset: 4308,
key.length: 12
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 4335,
+ key.offset: 4322,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 4343,
+ key.offset: 4330,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 4347,
+ key.offset: 4334,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 4358,
+ key.offset: 4345,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 4362,
+ key.offset: 4349,
key.length: 12
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 4376,
+ key.offset: 4363,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 4384,
+ key.offset: 4371,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 4388,
+ key.offset: 4375,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 4399,
+ key.offset: 4386,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 4403,
+ key.offset: 4390,
key.length: 12
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 4417,
+ key.offset: 4404,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 4425,
+ key.offset: 4412,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 4433,
+ key.offset: 4420,
key.length: 8
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 4442,
+ key.offset: 4429,
key.length: 18
},
{
key.kind: source.lang.swift.ref.protocol,
key.name: "FooProtocolBase",
key.usr: "c:objc(pl)FooProtocolBase",
- key.offset: 4463,
+ key.offset: 4450,
key.length: 15
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 4483,
+ key.offset: 4470,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 4489,
+ key.offset: 4476,
key.length: 12
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 4509,
+ key.offset: 4496,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 4514,
+ key.offset: 4501,
key.length: 20
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 4542,
+ key.offset: 4529,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 4547,
+ key.offset: 4534,
key.length: 20
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 4568,
+ key.offset: 4555,
key.length: 1
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 4570,
+ key.offset: 4557,
key.length: 8
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 4580,
+ key.offset: 4567,
key.length: 3
},
{
key.kind: source.lang.swift.ref.class,
key.name: "FooClassBase",
key.usr: "c:objc(cs)FooClassBase",
- key.offset: 4589,
+ key.offset: 4576,
key.length: 12
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 4608,
+ key.offset: 4595,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.attribute.builtin,
- key.offset: 4621,
+ key.offset: 4608,
key.length: 11
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 4633,
+ key.offset: 4620,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 4639,
+ key.offset: 4626,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 4645,
+ key.offset: 4632,
key.length: 1
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Float",
key.usr: "s:Sf",
- key.offset: 4648,
+ key.offset: 4635,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 4660,
+ key.offset: 4647,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 4665,
+ key.offset: 4652,
key.length: 29
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 4702,
+ key.offset: 4689,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 4708,
+ key.offset: 4695,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 4713,
+ key.offset: 4700,
key.length: 17
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 4738,
+ key.offset: 4725,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 4743,
+ key.offset: 4730,
key.length: 14
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 4763,
+ key.offset: 4750,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 4773,
+ key.offset: 4760,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 4778,
+ key.offset: 4765,
key.length: 14
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 4798,
+ key.offset: 4785,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 4808,
+ key.offset: 4795,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 4813,
+ key.offset: 4800,
key.length: 15
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 4834,
+ key.offset: 4821,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 4844,
+ key.offset: 4831,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 4849,
+ key.offset: 4836,
key.length: 14
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 4869,
+ key.offset: 4856,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 4876,
+ key.offset: 4863,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 4882,
+ key.offset: 4869,
key.length: 15
},
{
key.kind: source.lang.swift.ref.class,
key.name: "FooClassBase",
key.usr: "c:objc(cs)FooClassBase",
- key.offset: 4900,
+ key.offset: 4887,
key.length: 12
},
{
key.kind: source.lang.swift.ref.protocol,
key.name: "FooProtocolDerived",
key.usr: "c:objc(pl)FooProtocolDerived",
- key.offset: 4914,
+ key.offset: 4901,
key.length: 18
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 4940,
+ key.offset: 4927,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 4944,
+ key.offset: 4931,
key.length: 12
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 4958,
+ key.offset: 4945,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 4969,
+ key.offset: 4956,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 4973,
+ key.offset: 4960,
key.length: 12
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 4987,
+ key.offset: 4974,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 4998,
+ key.offset: 4985,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 5002,
+ key.offset: 4989,
key.length: 12
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 5016,
+ key.offset: 5003,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5024,
+ key.offset: 5011,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5035,
+ key.offset: 5022,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 5040,
+ key.offset: 5027,
key.length: 16
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5064,
+ key.offset: 5051,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 5069,
+ key.offset: 5056,
key.length: 16
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 5086,
+ key.offset: 5073,
key.length: 1
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 5088,
+ key.offset: 5075,
key.length: 1
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 5091,
+ key.offset: 5078,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5103,
+ key.offset: 5090,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 5108,
+ key.offset: 5095,
key.length: 16
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 5125,
+ key.offset: 5112,
key.length: 1
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 5127,
+ key.offset: 5114,
key.length: 1
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
+ key.offset: 5117,
+ key.length: 5
+ },
+ {
+ key.kind: source.lang.swift.syntaxtype.argument,
+ key.offset: 5124,
+ key.length: 5
+ },
+ {
+ key.kind: source.lang.swift.syntaxtype.parameter,
key.offset: 5130,
- key.length: 5
- },
- {
- key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 5137,
- key.length: 5
- },
- {
- key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 5143,
key.length: 1
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 5146,
+ key.offset: 5133,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5158,
+ key.offset: 5145,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 5163,
+ key.offset: 5150,
key.length: 29
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5200,
+ key.offset: 5187,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5206,
+ key.offset: 5193,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 5211,
+ key.offset: 5198,
key.length: 13
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5232,
+ key.offset: 5219,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 5237,
+ key.offset: 5224,
key.length: 14
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5257,
+ key.offset: 5244,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5267,
+ key.offset: 5254,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 5272,
+ key.offset: 5259,
key.length: 14
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5292,
+ key.offset: 5279,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5302,
+ key.offset: 5289,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 5307,
+ key.offset: 5294,
key.length: 15
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5328,
+ key.offset: 5315,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5338,
+ key.offset: 5325,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 5343,
+ key.offset: 5330,
key.length: 14
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5363,
+ key.offset: 5350,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5370,
+ key.offset: 5357,
key.length: 9
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 5380,
+ key.offset: 5367,
key.length: 13
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 5396,
+ key.offset: 5383,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5402,
+ key.offset: 5389,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
+ key.offset: 5393,
+ key.length: 11
+ },
+ {
+ key.kind: source.lang.swift.ref.struct,
+ key.name: "Int32",
+ key.usr: "s:s5Int32V",
key.offset: 5406,
+ key.length: 5
+ },
+ {
+ key.kind: source.lang.swift.syntaxtype.keyword,
+ key.offset: 5414,
+ key.length: 3
+ },
+ {
+ key.kind: source.lang.swift.syntaxtype.keyword,
+ key.offset: 5420,
+ key.length: 3
+ },
+ {
+ key.kind: source.lang.swift.syntaxtype.identifier,
+ key.offset: 5424,
key.length: 11
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 5419,
- key.length: 5
- },
- {
- key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5427,
- key.length: 3
- },
- {
- key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5433,
- key.length: 3
- },
- {
- key.kind: source.lang.swift.syntaxtype.identifier,
key.offset: 5437,
+ key.length: 5
+ },
+ {
+ key.kind: source.lang.swift.syntaxtype.keyword,
+ key.offset: 5445,
+ key.length: 3
+ },
+ {
+ key.kind: source.lang.swift.syntaxtype.keyword,
+ key.offset: 5451,
+ key.length: 3
+ },
+ {
+ key.kind: source.lang.swift.syntaxtype.identifier,
+ key.offset: 5455,
key.length: 11
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 5450,
- key.length: 5
- },
- {
- key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5458,
- key.length: 3
- },
- {
- key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5464,
- key.length: 3
- },
- {
- key.kind: source.lang.swift.syntaxtype.identifier,
key.offset: 5468,
- key.length: 11
- },
- {
- key.kind: source.lang.swift.ref.struct,
- key.name: "Int32",
- key.usr: "s:s5Int32V",
- key.offset: 5481,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5489,
+ key.offset: 5476,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5495,
+ key.offset: 5482,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 5499,
+ key.offset: 5486,
key.length: 11
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "UInt32",
key.usr: "s:s6UInt32V",
- key.offset: 5512,
+ key.offset: 5499,
key.length: 6
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5521,
+ key.offset: 5508,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5527,
+ key.offset: 5514,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 5531,
+ key.offset: 5518,
key.length: 11
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "UInt64",
key.usr: "s:s6UInt64V",
- key.offset: 5544,
+ key.offset: 5531,
key.length: 6
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5553,
+ key.offset: 5540,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5559,
+ key.offset: 5546,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
+ key.offset: 5550,
+ key.length: 11
+ },
+ {
+ key.kind: source.lang.swift.ref.typealias,
+ key.name: "typedef_int_t",
+ key.usr: "c:Foo.h@T@typedef_int_t",
key.offset: 5563,
+ key.length: 13
+ },
+ {
+ key.kind: source.lang.swift.syntaxtype.keyword,
+ key.offset: 5579,
+ key.length: 3
+ },
+ {
+ key.kind: source.lang.swift.syntaxtype.keyword,
+ key.offset: 5585,
+ key.length: 3
+ },
+ {
+ key.kind: source.lang.swift.syntaxtype.identifier,
+ key.offset: 5589,
key.length: 11
},
{
key.kind: source.lang.swift.ref.typealias,
key.name: "typedef_int_t",
key.usr: "c:Foo.h@T@typedef_int_t",
- key.offset: 5576,
- key.length: 13
- },
- {
- key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5592,
- key.length: 3
- },
- {
- key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5598,
- key.length: 3
- },
- {
- key.kind: source.lang.swift.syntaxtype.identifier,
key.offset: 5602,
- key.length: 11
- },
- {
- key.kind: source.lang.swift.ref.typealias,
- key.name: "typedef_int_t",
- key.usr: "c:Foo.h@T@typedef_int_t",
- key.offset: 5615,
key.length: 13
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5631,
+ key.offset: 5618,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5637,
+ key.offset: 5624,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 5641,
+ key.offset: 5628,
key.length: 11
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int8",
key.usr: "s:s4Int8V",
- key.offset: 5654,
+ key.offset: 5641,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5661,
+ key.offset: 5648,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5667,
+ key.offset: 5654,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 5671,
+ key.offset: 5658,
key.length: 11
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 5684,
+ key.offset: 5671,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5692,
+ key.offset: 5679,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5698,
+ key.offset: 5685,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 5702,
+ key.offset: 5689,
key.length: 12
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int16",
key.usr: "s:s5Int16V",
- key.offset: 5716,
+ key.offset: 5703,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5724,
+ key.offset: 5711,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5730,
+ key.offset: 5717,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 5734,
+ key.offset: 5721,
key.length: 12
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int",
key.usr: "s:Si",
- key.offset: 5748,
+ key.offset: 5735,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5754,
+ key.offset: 5741,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5760,
+ key.offset: 5747,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 5764,
+ key.offset: 5751,
key.length: 12
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 5778,
+ key.offset: 5765,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5786,
+ key.offset: 5773,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5792,
+ key.offset: 5779,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 5796,
+ key.offset: 5783,
key.length: 13
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 5811,
+ key.offset: 5798,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5819,
+ key.offset: 5806,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5825,
+ key.offset: 5812,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 5829,
+ key.offset: 5816,
key.length: 18
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "UInt64",
key.usr: "s:s6UInt64V",
- key.offset: 5849,
+ key.offset: 5836,
key.length: 6
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5858,
+ key.offset: 5845,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5864,
+ key.offset: 5851,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 5868,
+ key.offset: 5855,
key.length: 16
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "UInt32",
key.usr: "s:s6UInt32V",
- key.offset: 5886,
+ key.offset: 5873,
key.length: 6
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5895,
+ key.offset: 5882,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5901,
+ key.offset: 5888,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 5905,
+ key.offset: 5892,
key.length: 17
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 5924,
+ key.offset: 5911,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5932,
+ key.offset: 5919,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5938,
+ key.offset: 5925,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 5942,
+ key.offset: 5929,
key.length: 17
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 5961,
+ key.offset: 5948,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5969,
+ key.offset: 5956,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5975,
+ key.offset: 5962,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 5980,
+ key.offset: 5967,
key.length: 16
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 5999,
+ key.offset: 5986,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 6004,
+ key.offset: 5991,
key.length: 21
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6028,
+ key.offset: 6015,
key.length: 6
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 6035,
+ key.offset: 6022,
key.length: 15
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6058,
+ key.offset: 6045,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 6062,
+ key.offset: 6049,
key.length: 1
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 6065,
+ key.offset: 6052,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6076,
+ key.offset: 6063,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6088,
+ key.offset: 6075,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 6093,
+ key.offset: 6080,
key.length: 1
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 6095,
+ key.offset: 6082,
key.length: 1
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 6098,
+ key.offset: 6085,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6107,
+ key.offset: 6094,
key.length: 9
},
{
key.kind: source.lang.swift.ref.class,
key.name: "FooClassBase",
key.usr: "c:objc(cs)FooClassBase",
- key.offset: 6117,
+ key.offset: 6104,
key.length: 12
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6137,
+ key.offset: 6124,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 6142,
+ key.offset: 6129,
key.length: 14
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6162,
+ key.offset: 6149,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6169,
+ key.offset: 6156,
key.length: 9
},
{
key.kind: source.lang.swift.ref.class,
key.name: "FooClassBase",
key.usr: "c:objc(cs)FooClassBase",
- key.offset: 6179,
+ key.offset: 6166,
key.length: 12
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6199,
+ key.offset: 6186,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 6204,
+ key.offset: 6191,
key.length: 14
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6224,
+ key.offset: 6211,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6234,
+ key.offset: 6221,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 6239,
+ key.offset: 6226,
key.length: 15
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6260,
+ key.offset: 6247,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6267,
+ key.offset: 6254,
key.length: 9
},
{
key.kind: source.lang.swift.ref.class,
key.name: "FooClassBase",
key.usr: "c:objc(cs)FooClassBase",
- key.offset: 6277,
+ key.offset: 6264,
key.length: 12
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6297,
+ key.offset: 6284,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 6302,
+ key.offset: 6289,
key.length: 14
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6322,
+ key.offset: 6309,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6329,
+ key.offset: 6316,
key.length: 8
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 6338,
+ key.offset: 6325,
key.length: 13
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6356,
+ key.offset: 6343,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 6362,
+ key.offset: 6349,
key.length: 21
},
{
key.kind: source.lang.swift.ref.protocol,
key.name: "_InternalProt",
key.usr: "c:objc(pl)_InternalProt",
- key.offset: 6386,
+ key.offset: 6373,
key.length: 13
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6404,
+ key.offset: 6391,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 6410,
+ key.offset: 6397,
key.length: 25
},
{
key.kind: source.lang.swift.ref.class,
key.name: "FooClassBase",
key.usr: "c:objc(cs)FooClassBase",
- key.offset: 6438,
+ key.offset: 6425,
key.length: 12
},
{
key.kind: source.lang.swift.syntaxtype.attribute.builtin,
- key.offset: 6458,
+ key.offset: 6445,
key.length: 15
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6474,
+ key.offset: 6461,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 6478,
+ key.offset: 6465,
key.length: 10
},
{
key.kind: source.lang.swift.syntaxtype.typeidentifier,
- key.offset: 6490,
+ key.offset: 6477,
key.length: 9
},
{
key.kind: source.lang.swift.syntaxtype.attribute.builtin,
- key.offset: 6506,
+ key.offset: 6493,
key.length: 15
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6522,
+ key.offset: 6509,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 6526,
+ key.offset: 6513,
key.length: 16
},
{
key.kind: source.lang.swift.syntaxtype.typeidentifier,
- key.offset: 6544,
+ key.offset: 6531,
key.length: 9
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6560,
+ key.offset: 6547,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 6564,
+ key.offset: 6551,
key.length: 10
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6576,
+ key.offset: 6563,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6586,
+ key.offset: 6573,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 6590,
+ key.offset: 6577,
key.length: 9
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6601,
+ key.offset: 6588,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6611,
+ key.offset: 6598,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 6615,
+ key.offset: 6602,
key.length: 8
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6625,
+ key.offset: 6612,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.attribute.builtin,
- key.offset: 6635,
+ key.offset: 6622,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6640,
+ key.offset: 6627,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 6644,
+ key.offset: 6631,
key.length: 7
},
{
key.kind: source.lang.swift.syntaxtype.typeidentifier,
- key.offset: 6653,
+ key.offset: 6640,
key.length: 9
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6669,
+ key.offset: 6656,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 6673,
+ key.offset: 6660,
key.length: 6
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 6681,
+ key.offset: 6668,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6692,
+ key.offset: 6679,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 6697,
+ key.offset: 6684,
key.length: 14
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6717,
+ key.offset: 6704,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6727,
+ key.offset: 6714,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 6732,
+ key.offset: 6719,
key.length: 14
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6752,
+ key.offset: 6739,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6762,
+ key.offset: 6749,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 6767,
+ key.offset: 6754,
key.length: 15
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6788,
+ key.offset: 6775,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6798,
+ key.offset: 6785,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 6803,
+ key.offset: 6790,
key.length: 14
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6823,
+ key.offset: 6810,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6830,
+ key.offset: 6817,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 6834,
+ key.offset: 6821,
key.length: 7
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6846,
+ key.offset: 6833,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 6852,
+ key.offset: 6839,
key.length: 21
},
{
key.kind: source.lang.swift.ref.class,
key.name: "FooClassBase",
key.usr: "c:objc(cs)FooClassBase",
- key.offset: 6876,
+ key.offset: 6863,
key.length: 12
},
{
key.kind: source.lang.swift.syntaxtype.attribute.builtin,
- key.offset: 6896,
+ key.offset: 6883,
key.length: 11
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6908,
+ key.offset: 6895,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 6914,
+ key.offset: 6901,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 6918,
+ key.offset: 6905,
key.length: 1
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 6921,
+ key.offset: 6908,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6933,
+ key.offset: 6920,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 6938,
+ key.offset: 6925,
key.length: 11
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6957,
+ key.offset: 6944,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 6962,
+ key.offset: 6949,
key.length: 16
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 6986,
+ key.offset: 6973,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 6991,
+ key.offset: 6978,
key.length: 10
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 7009,
+ key.offset: 6996,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 7014,
+ key.offset: 7001,
key.length: 22
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 7044,
+ key.offset: 7031,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 7049,
+ key.offset: 7036,
key.length: 22
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 7079,
+ key.offset: 7066,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 7084,
+ key.offset: 7071,
key.length: 21
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 7113,
+ key.offset: 7100,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 7118,
+ key.offset: 7105,
key.length: 23
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 7149,
+ key.offset: 7136,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 7154,
+ key.offset: 7141,
key.length: 25
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 7187,
+ key.offset: 7174,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 7192,
+ key.offset: 7179,
key.length: 25
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 7225,
+ key.offset: 7212,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 7230,
+ key.offset: 7217,
key.length: 24
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 7262,
+ key.offset: 7249,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 7267,
+ key.offset: 7254,
key.length: 26
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 7301,
+ key.offset: 7288,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 7306,
+ key.offset: 7293,
key.length: 14
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 7326,
+ key.offset: 7313,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 7336,
+ key.offset: 7323,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 7341,
+ key.offset: 7328,
key.length: 14
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 7361,
+ key.offset: 7348,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 7371,
+ key.offset: 7358,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 7376,
+ key.offset: 7363,
key.length: 15
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 7397,
+ key.offset: 7384,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 7407,
+ key.offset: 7394,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 7412,
+ key.offset: 7399,
key.length: 14
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 7432,
+ key.offset: 7419,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 7439,
+ key.offset: 7426,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 7445,
+ key.offset: 7432,
key.length: 9
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 7459,
+ key.offset: 7446,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 7464,
+ key.offset: 7451,
key.length: 16
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 7481,
+ key.offset: 7468,
key.length: 1
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 7483,
+ key.offset: 7470,
key.length: 1
},
{
key.kind: source.lang.swift.ref.class,
key.name: "FooCFType",
key.usr: "c:Foo.h@T@FooCFTypeRef",
- key.offset: 7486,
+ key.offset: 7473,
key.length: 9
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 7498,
+ key.offset: 7485,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 7503,
+ key.offset: 7490,
key.length: 21
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int",
key.usr: "s:Si",
- key.offset: 7527,
+ key.offset: 7514,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 7538,
+ key.offset: 7525,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 7543,
+ key.offset: 7530,
key.length: 13
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 7562,
+ key.offset: 7549,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 7567,
+ key.offset: 7554,
key.length: 10
},
{
key.kind: source.lang.swift.syntaxtype.attribute.builtin,
- key.offset: 7583,
+ key.offset: 7570,
key.length: 10
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 7594,
+ key.offset: 7581,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 7598,
+ key.offset: 7585,
key.length: 9
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int",
key.usr: "s:Si",
- key.offset: 7609,
+ key.offset: 7596,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 7615,
+ key.offset: 7602,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.attribute.builtin,
- key.offset: 7626,
+ key.offset: 7613,
key.length: 10
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 7637,
+ key.offset: 7624,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 7642,
+ key.offset: 7629,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 7647,
+ key.offset: 7634,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 7652,
+ key.offset: 7639,
key.length: 6
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 7660,
+ key.offset: 7647,
key.length: 5
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Hasher",
key.usr: "s:s6HasherV",
+ key.offset: 7653,
+ key.length: 6
+ },
+ {
+ key.kind: source.lang.swift.syntaxtype.keyword,
key.offset: 7666,
key.length: 6
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 7679,
- key.length: 6
- },
- {
- key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 7686,
+ key.offset: 7673,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 7695,
+ key.offset: 7682,
key.length: 1
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 7697,
+ key.offset: 7684,
key.length: 3
},
{
key.kind: source.lang.swift.ref.enum,
key.name: "ABAuthorizationStatus",
key.usr: "c:@E@ABAuthorizationStatus",
- key.offset: 7702,
+ key.offset: 7689,
key.length: 21
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 7725,
+ key.offset: 7712,
key.length: 1
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 7727,
+ key.offset: 7714,
key.length: 3
},
{
key.kind: source.lang.swift.ref.enum,
key.name: "ABAuthorizationStatus",
key.usr: "c:@E@ABAuthorizationStatus",
- key.offset: 7732,
+ key.offset: 7719,
key.length: 21
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Bool",
key.usr: "s:Sb",
- key.offset: 7758,
+ key.offset: 7745,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 7765,
+ key.offset: 7752,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 7770,
+ key.offset: 7757,
key.length: 11
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 7782,
+ key.offset: 7769,
key.length: 1
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 7784,
+ key.offset: 7771,
key.length: 1
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 7787,
+ key.offset: 7774,
key.length: 5
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int32",
key.usr: "s:s5Int32V",
- key.offset: 7797,
+ key.offset: 7784,
key.length: 5
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 7803,
+ key.offset: 7790,
key.length: 6
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 7810,
+ key.offset: 7797,
key.length: 11
},
{
key.kind: source.lang.swift.ref.protocol,
key.name: "Equatable",
key.usr: "s:SQ",
- key.offset: 7824,
+ key.offset: 7811,
key.length: 9
},
{
key.kind: source.lang.swift.ref.protocol,
key.name: "RawRepresentable",
key.usr: "s:SY",
- key.offset: 7835,
+ key.offset: 7822,
key.length: 16
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 7859,
+ key.offset: 7846,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 7864,
+ key.offset: 7851,
key.length: 1
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 7866,
+ key.offset: 7853,
key.length: 8
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "UInt32",
key.usr: "s:s6UInt32V",
- key.offset: 7876,
+ key.offset: 7863,
key.length: 6
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 7889,
+ key.offset: 7876,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 7894,
+ key.offset: 7881,
key.length: 8
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 7903,
+ key.offset: 7890,
key.length: 8
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "UInt32",
key.usr: "s:s6UInt32V",
- key.offset: 7913,
+ key.offset: 7900,
key.length: 6
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 7926,
+ key.offset: 7913,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 7930,
+ key.offset: 7917,
key.length: 8
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "UInt32",
key.usr: "s:s6UInt32V",
- key.offset: 7940,
+ key.offset: 7927,
key.length: 6
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 7952,
+ key.offset: 7939,
key.length: 6
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 7959,
+ key.offset: 7946,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 7968,
+ key.offset: 7955,
key.length: 1
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 7970,
+ key.offset: 7957,
key.length: 3
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "FooSubEnum1",
key.usr: "c:@E@FooSubEnum1",
- key.offset: 7975,
+ key.offset: 7962,
key.length: 11
},
{
key.kind: source.lang.swift.syntaxtype.argument,
- key.offset: 7988,
+ key.offset: 7975,
key.length: 1
},
{
key.kind: source.lang.swift.syntaxtype.parameter,
- key.offset: 7990,
+ key.offset: 7977,
key.length: 3
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "FooSubEnum1",
key.usr: "c:@E@FooSubEnum1",
- key.offset: 7995,
+ key.offset: 7982,
key.length: 11
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Bool",
key.usr: "s:Sb",
- key.offset: 8011,
+ key.offset: 7998,
key.length: 4
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 8018,
+ key.offset: 8005,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 8022,
+ key.offset: 8009,
key.length: 12
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "FooSubEnum1",
key.usr: "c:@E@FooSubEnum1",
- key.offset: 8036,
+ key.offset: 8023,
key.length: 11
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 8050,
+ key.offset: 8037,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 8056,
+ key.offset: 8043,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 8060,
+ key.offset: 8047,
key.length: 12
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "FooSubEnum1",
key.usr: "c:@E@FooSubEnum1",
- key.offset: 8074,
+ key.offset: 8061,
key.length: 11
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 8088,
+ key.offset: 8075,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 8094,
+ key.offset: 8081,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.identifier,
- key.offset: 8098,
+ key.offset: 8085,
key.length: 25
},
{
key.kind: source.lang.swift.ref.struct,
key.name: "Int",
key.usr: "s:Si",
- key.offset: 8125,
+ key.offset: 8112,
key.length: 3
},
{
key.kind: source.lang.swift.syntaxtype.keyword,
- key.offset: 8131,
+ key.offset: 8118,
key.length: 3
}
]
@@ -5275,7 +5273,8 @@
key.kind: source.lang.swift.decl.extension.struct,
key.doc.full_as_xml: "<Other><Name></Name><Declaration>extension FooRuncingOptions</Declaration><CommentParts><Abstract><Para><codeVoice>SetAlgebra</codeVoice> requirements for which default implementations are supplied.</Para></Abstract><Discussion><Note><Para>A type conforming to <codeVoice>SetAlgebra</codeVoice> can implement any of these initializers or methods, and those implementations will be used in lieu of these defaults.</Para></Note></Discussion></CommentParts></Other>",
key.offset: 1445,
- key.length: 683,
+ key.length: 670,
+ key.fully_annotated_generic_signature: "<<decl.generic_type_param usr=\"s:s10SetAlgebraP4Selfxmfp\"><decl.generic_type_param.name>Self</decl.generic_type_param.name></decl.generic_type_param> <syntaxtype.keyword>where</syntaxtype.keyword> <decl.generic_type_requirement><ref.generic_type_param usr=\"s:s10SetAlgebraP4Selfxmfp\">Self</ref.generic_type_param> : <ref.protocol usr=\"s:s10SetAlgebraP\">SetAlgebra</ref.protocol></decl.generic_type_requirement>>",
key.extends: {
key.kind: source.lang.swift.ref.struct,
key.name: "FooRuncingOptions",
@@ -5302,8 +5301,8 @@
],
key.doc.full_as_xml: "<Function><Name>init(_:)</Name><USR>s:s10SetAlgebraPsEyxqd__ncSTRd__7ElementQyd__ACRtzlufc</USR><Declaration>@inlinable init<S>(_ sequence: __owned S) where S : Sequence, Self.Element == S.Element</Declaration><CommentParts><Abstract><Para>Creates a new set from a finite sequence of items.</Para></Abstract><Parameters><Parameter><Name>sequence</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>The elements to use as members of the new set.</Para></Discussion></Parameter></Parameters><Discussion><Para>Use this initializer to create a new set from an existing sequence, like an array or a range:</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[let validIndices = Set(0..<7).subtracting([2, 4, 5])]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(validIndices)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"[6, 0, 1, 3]\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></CommentParts></Function>",
key.offset: 1480,
- key.length: 100,
- key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.attribute.builtin><syntaxtype.attribute.name>@inlinable</syntaxtype.attribute.name></syntaxtype.attribute.builtin> <syntaxtype.keyword>init</syntaxtype.keyword><S>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>sequence</decl.var.parameter.name>: __owned <decl.var.parameter.type>S</decl.var.parameter.type></decl.var.parameter>) <syntaxtype.keyword>where</syntaxtype.keyword> <decl.generic_type_requirement>S : <ref.protocol usr=\"s:ST\">Sequence</ref.protocol></decl.generic_type_requirement>, <decl.generic_type_requirement><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct>.<ref.typealias usr=\"s:So17FooRuncingOptionsV7Elementa\">Element</ref.typealias> == S.Element</decl.generic_type_requirement></decl.function.constructor>",
+ key.length: 87,
+ key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.attribute.builtin><syntaxtype.attribute.name>@inlinable</syntaxtype.attribute.name></syntaxtype.attribute.builtin> <syntaxtype.keyword>init</syntaxtype.keyword><S>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>sequence</decl.var.parameter.name>: __owned <decl.var.parameter.type>S</decl.var.parameter.type></decl.var.parameter>) <syntaxtype.keyword>where</syntaxtype.keyword> <decl.generic_type_requirement>S : <ref.protocol usr=\"s:ST\">Sequence</ref.protocol></decl.generic_type_requirement>, <decl.generic_type_requirement><ref.generic_type_param usr=\"s:s10SetAlgebraP4Selfxmfp\">Self</ref.generic_type_param>.Element == S.Element</decl.generic_type_requirement></decl.function.constructor>",
key.entities: [
{
key.kind: source.lang.swift.decl.var.local,
@@ -5320,7 +5319,7 @@
key.usr: "s:s10SetAlgebraPsE8subtractyyxF::SYNTHESIZED::c:@E@FooRuncingOptions",
key.original_usr: "s:s10SetAlgebraPsE8subtractyyxF",
key.doc.full_as_xml: "<Function><Name>subtract(_:)</Name><USR>s:s10SetAlgebraPsE8subtractyyxF</USR><Declaration>@inlinable mutating func subtract(_ other: Self)</Declaration><CommentParts><Abstract><Para>Removes the elements of the given set from this set.</Para></Abstract><Parameters><Parameter><Name>other</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>A set of the same type as the current set.</Para></Discussion></Parameter></Parameters><Discussion><Para>In the following example, the elements of the <codeVoice>employees</codeVoice> set that are also members of the <codeVoice>neighbors</codeVoice> set are removed. In particular, the names <codeVoice>"Bethany"</codeVoice> and <codeVoice>"Eric"</codeVoice> are removed from <codeVoice>employees</codeVoice>.</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[var employees: Set = [\"Alicia\", \"Bethany\", \"Chris\", \"Diana\", \"Eric\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let neighbors: Set = [\"Bethany\", \"Eric\", \"Forlani\", \"Greta\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[employees.subtract(neighbors)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(employees)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"[\"Diana\", \"Chris\", \"Alicia\"]\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></CommentParts></Function>",
- key.offset: 1586,
+ key.offset: 1573,
key.length: 61,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.attribute.builtin><syntaxtype.attribute.name>@inlinable</syntaxtype.attribute.name></syntaxtype.attribute.builtin> <syntaxtype.keyword>mutating</syntaxtype.keyword> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>subtract</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>other</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.method.instance>",
key.entities: [
@@ -5328,7 +5327,7 @@
key.kind: source.lang.swift.decl.var.local,
key.keyword: "_",
key.name: "other",
- key.offset: 1629,
+ key.offset: 1616,
key.length: 17
}
]
@@ -5339,7 +5338,7 @@
key.usr: "s:s10SetAlgebraPsE8isSubset2ofSbx_tF::SYNTHESIZED::c:@E@FooRuncingOptions",
key.original_usr: "s:s10SetAlgebraPsE8isSubset2ofSbx_tF",
key.doc.full_as_xml: "<Function><Name>isSubset(of:)</Name><USR>s:s10SetAlgebraPsE8isSubset2ofSbx_tF</USR><Declaration>@inlinable func isSubset(of other: Self) -> Bool</Declaration><CommentParts><Abstract><Para>Returns a Boolean value that indicates whether the set is a subset of another set.</Para></Abstract><Parameters><Parameter><Name>other</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>A set of the same type as the current set.</Para></Discussion></Parameter></Parameters><ResultDiscussion><Para><codeVoice>true</codeVoice> if the set is a subset of <codeVoice>other</codeVoice>; otherwise, <codeVoice>false</codeVoice>.</Para></ResultDiscussion><Discussion><Para>Set <emphasis>A</emphasis> is a subset of another set <emphasis>B</emphasis> if every member of <emphasis>A</emphasis> is also a member of <emphasis>B</emphasis>.</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[let employees: Set = [\"Alicia\", \"Bethany\", \"Chris\", \"Diana\", \"Eric\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let attendees: Set = [\"Alicia\", \"Bethany\", \"Diana\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(attendees.isSubset(of: employees))]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"true\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></CommentParts></Function>",
- key.offset: 1653,
+ key.offset: 1640,
key.length: 61,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.attribute.builtin><syntaxtype.attribute.name>@inlinable</syntaxtype.attribute.name></syntaxtype.attribute.builtin> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>isSubset</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>of</decl.var.parameter.argument_label> <decl.var.parameter.name>other</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>) -> <decl.function.returntype><ref.struct usr=\"s:Sb\">Bool</ref.struct></decl.function.returntype></decl.function.method.instance>",
key.entities: [
@@ -5347,7 +5346,7 @@
key.kind: source.lang.swift.decl.var.local,
key.keyword: "of",
key.name: "other",
- key.offset: 1688,
+ key.offset: 1675,
key.length: 17
}
]
@@ -5358,7 +5357,7 @@
key.usr: "s:s10SetAlgebraPsE10isSuperset2ofSbx_tF::SYNTHESIZED::c:@E@FooRuncingOptions",
key.original_usr: "s:s10SetAlgebraPsE10isSuperset2ofSbx_tF",
key.doc.full_as_xml: "<Function><Name>isSuperset(of:)</Name><USR>s:s10SetAlgebraPsE10isSuperset2ofSbx_tF</USR><Declaration>@inlinable func isSuperset(of other: Self) -> Bool</Declaration><CommentParts><Abstract><Para>Returns a Boolean value that indicates whether the set is a superset of the given set.</Para></Abstract><Parameters><Parameter><Name>other</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>A set of the same type as the current set.</Para></Discussion></Parameter></Parameters><ResultDiscussion><Para><codeVoice>true</codeVoice> if the set is a superset of <codeVoice>other</codeVoice>; otherwise, <codeVoice>false</codeVoice>.</Para></ResultDiscussion><Discussion><Para>Set <emphasis>A</emphasis> is a superset of another set <emphasis>B</emphasis> if every member of <emphasis>B</emphasis> is also a member of <emphasis>A</emphasis>.</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[let employees: Set = [\"Alicia\", \"Bethany\", \"Chris\", \"Diana\", \"Eric\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let attendees: Set = [\"Alicia\", \"Bethany\", \"Diana\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(employees.isSuperset(of: attendees))]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"true\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></CommentParts></Function>",
- key.offset: 1720,
+ key.offset: 1707,
key.length: 63,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.attribute.builtin><syntaxtype.attribute.name>@inlinable</syntaxtype.attribute.name></syntaxtype.attribute.builtin> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>isSuperset</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>of</decl.var.parameter.argument_label> <decl.var.parameter.name>other</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>) -> <decl.function.returntype><ref.struct usr=\"s:Sb\">Bool</ref.struct></decl.function.returntype></decl.function.method.instance>",
key.entities: [
@@ -5366,7 +5365,7 @@
key.kind: source.lang.swift.decl.var.local,
key.keyword: "of",
key.name: "other",
- key.offset: 1757,
+ key.offset: 1744,
key.length: 17
}
]
@@ -5377,7 +5376,7 @@
key.usr: "s:s10SetAlgebraPsE10isDisjoint4withSbx_tF::SYNTHESIZED::c:@E@FooRuncingOptions",
key.original_usr: "s:s10SetAlgebraPsE10isDisjoint4withSbx_tF",
key.doc.full_as_xml: "<Function><Name>isDisjoint(with:)</Name><USR>s:s10SetAlgebraPsE10isDisjoint4withSbx_tF</USR><Declaration>@inlinable func isDisjoint(with other: Self) -> Bool</Declaration><CommentParts><Abstract><Para>Returns a Boolean value that indicates whether the set has no members in common with the given set.</Para></Abstract><Parameters><Parameter><Name>other</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>A set of the same type as the current set.</Para></Discussion></Parameter></Parameters><ResultDiscussion><Para><codeVoice>true</codeVoice> if the set has no elements in common with <codeVoice>other</codeVoice>; otherwise, <codeVoice>false</codeVoice>.</Para></ResultDiscussion><Discussion><Para>In the following example, the <codeVoice>employees</codeVoice> set is disjoint with the <codeVoice>visitors</codeVoice> set because no name appears in both sets.</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[let employees: Set = [\"Alicia\", \"Bethany\", \"Chris\", \"Diana\", \"Eric\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let visitors: Set = [\"Marcia\", \"Nathaniel\", \"Olivia\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(employees.isDisjoint(with: visitors))]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"true\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></CommentParts></Function>",
- key.offset: 1789,
+ key.offset: 1776,
key.length: 65,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.attribute.builtin><syntaxtype.attribute.name>@inlinable</syntaxtype.attribute.name></syntaxtype.attribute.builtin> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>isDisjoint</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>with</decl.var.parameter.argument_label> <decl.var.parameter.name>other</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>) -> <decl.function.returntype><ref.struct usr=\"s:Sb\">Bool</ref.struct></decl.function.returntype></decl.function.method.instance>",
key.entities: [
@@ -5385,7 +5384,7 @@
key.kind: source.lang.swift.decl.var.local,
key.keyword: "with",
key.name: "other",
- key.offset: 1828,
+ key.offset: 1815,
key.length: 17
}
]
@@ -5396,7 +5395,7 @@
key.usr: "s:s10SetAlgebraPsE11subtractingyxxF::SYNTHESIZED::c:@E@FooRuncingOptions",
key.original_usr: "s:s10SetAlgebraPsE11subtractingyxxF",
key.doc.full_as_xml: "<Function><Name>subtracting(_:)</Name><USR>s:s10SetAlgebraPsE11subtractingyxxF</USR><Declaration>@inlinable func subtracting(_ other: Self) -> Self</Declaration><CommentParts><Abstract><Para>Returns a new set containing the elements of this set that do not occur in the given set.</Para></Abstract><Parameters><Parameter><Name>other</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>A set of the same type as the current set.</Para></Discussion></Parameter></Parameters><ResultDiscussion><Para>A new set.</Para></ResultDiscussion><Discussion><Para>In the following example, the <codeVoice>nonNeighbors</codeVoice> set is made up of the elements of the <codeVoice>employees</codeVoice> set that are not elements of <codeVoice>neighbors</codeVoice>:</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[let employees: Set = [\"Alicia\", \"Bethany\", \"Chris\", \"Diana\", \"Eric\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let neighbors: Set = [\"Bethany\", \"Eric\", \"Forlani\", \"Greta\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let nonNeighbors = employees.subtract(neighbors)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(nonNeighbors)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"[\"Diana\", \"Chris\", \"Alicia\"]\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></CommentParts></Function>",
- key.offset: 1860,
+ key.offset: 1847,
key.length: 76,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.attribute.builtin><syntaxtype.attribute.name>@inlinable</syntaxtype.attribute.name></syntaxtype.attribute.builtin> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>subtracting</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>other</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>) -> <decl.function.returntype><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.function.returntype></decl.function.method.instance>",
key.entities: [
@@ -5404,7 +5403,7 @@
key.kind: source.lang.swift.decl.var.local,
key.keyword: "_",
key.name: "other",
- key.offset: 1897,
+ key.offset: 1884,
key.length: 17
}
]
@@ -5415,7 +5414,7 @@
key.usr: "s:s10SetAlgebraPsE7isEmptySbvp::SYNTHESIZED::c:@E@FooRuncingOptions",
key.original_usr: "s:s10SetAlgebraPsE7isEmptySbvp",
key.doc.full_as_xml: "<Other><Name>isEmpty</Name><USR>s:s10SetAlgebraPsE7isEmptySbvp</USR><Declaration>@inlinable var isEmpty: Bool { get }</Declaration><CommentParts><Abstract><Para>A Boolean value that indicates whether the set has no elements.</Para></Abstract></CommentParts></Other>",
- key.offset: 1942,
+ key.offset: 1929,
key.length: 36,
key.fully_annotated_decl: "<decl.var.instance><syntaxtype.attribute.builtin><syntaxtype.attribute.name>@inlinable</syntaxtype.attribute.name></syntaxtype.attribute.builtin> <syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>isEmpty</decl.name>: <decl.var.type><ref.struct usr=\"s:Sb\">Bool</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.instance>"
},
@@ -5425,7 +5424,7 @@
key.usr: "s:s10SetAlgebraPsE16isStrictSuperset2ofSbx_tF::SYNTHESIZED::c:@E@FooRuncingOptions",
key.original_usr: "s:s10SetAlgebraPsE16isStrictSuperset2ofSbx_tF",
key.doc.full_as_xml: "<Function><Name>isStrictSuperset(of:)</Name><USR>s:s10SetAlgebraPsE16isStrictSuperset2ofSbx_tF</USR><Declaration>@inlinable func isStrictSuperset(of other: Self) -> Bool</Declaration><CommentParts><Abstract><Para>Returns a Boolean value that indicates whether this set is a strict superset of the given set.</Para></Abstract><Parameters><Parameter><Name>other</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>A set of the same type as the current set.</Para></Discussion></Parameter></Parameters><ResultDiscussion><Para><codeVoice>true</codeVoice> if the set is a strict superset of <codeVoice>other</codeVoice>; otherwise, <codeVoice>false</codeVoice>.</Para></ResultDiscussion><Discussion><Para>Set <emphasis>A</emphasis> is a strict superset of another set <emphasis>B</emphasis> if every member of <emphasis>B</emphasis> is also a member of <emphasis>A</emphasis> and <emphasis>A</emphasis> contains at least one element that is <emphasis>not</emphasis> a member of <emphasis>B</emphasis>.</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[let employees: Set = [\"Alicia\", \"Bethany\", \"Chris\", \"Diana\", \"Eric\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let attendees: Set = [\"Alicia\", \"Bethany\", \"Diana\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(employees.isStrictSuperset(of: attendees))]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"true\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// A set is never a strict superset of itself:]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(employees.isStrictSuperset(of: employees))]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"false\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></CommentParts></Function>",
- key.offset: 1984,
+ key.offset: 1971,
key.length: 69,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.attribute.builtin><syntaxtype.attribute.name>@inlinable</syntaxtype.attribute.name></syntaxtype.attribute.builtin> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>isStrictSuperset</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>of</decl.var.parameter.argument_label> <decl.var.parameter.name>other</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>) -> <decl.function.returntype><ref.struct usr=\"s:Sb\">Bool</ref.struct></decl.function.returntype></decl.function.method.instance>",
key.entities: [
@@ -5433,7 +5432,7 @@
key.kind: source.lang.swift.decl.var.local,
key.keyword: "of",
key.name: "other",
- key.offset: 2027,
+ key.offset: 2014,
key.length: 17
}
]
@@ -5444,7 +5443,7 @@
key.usr: "s:s10SetAlgebraPsE14isStrictSubset2ofSbx_tF::SYNTHESIZED::c:@E@FooRuncingOptions",
key.original_usr: "s:s10SetAlgebraPsE14isStrictSubset2ofSbx_tF",
key.doc.full_as_xml: "<Function><Name>isStrictSubset(of:)</Name><USR>s:s10SetAlgebraPsE14isStrictSubset2ofSbx_tF</USR><Declaration>@inlinable func isStrictSubset(of other: Self) -> Bool</Declaration><CommentParts><Abstract><Para>Returns a Boolean value that indicates whether this set is a strict subset of the given set.</Para></Abstract><Parameters><Parameter><Name>other</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>A set of the same type as the current set.</Para></Discussion></Parameter></Parameters><ResultDiscussion><Para><codeVoice>true</codeVoice> if the set is a strict subset of <codeVoice>other</codeVoice>; otherwise, <codeVoice>false</codeVoice>.</Para></ResultDiscussion><Discussion><Para>Set <emphasis>A</emphasis> is a strict subset of another set <emphasis>B</emphasis> if every member of <emphasis>A</emphasis> is also a member of <emphasis>B</emphasis> and <emphasis>B</emphasis> contains at least one element that is not a member of <emphasis>A</emphasis>.</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[let employees: Set = [\"Alicia\", \"Bethany\", \"Chris\", \"Diana\", \"Eric\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let attendees: Set = [\"Alicia\", \"Bethany\", \"Diana\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(attendees.isStrictSubset(of: employees))]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"true\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// A set is never a strict subset of itself:]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(attendees.isStrictSubset(of: attendees))]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"false\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></CommentParts></Function>",
- key.offset: 2059,
+ key.offset: 2046,
key.length: 67,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.attribute.builtin><syntaxtype.attribute.name>@inlinable</syntaxtype.attribute.name></syntaxtype.attribute.builtin> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>isStrictSubset</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>of</decl.var.parameter.argument_label> <decl.var.parameter.name>other</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>) -> <decl.function.returntype><ref.struct usr=\"s:Sb\">Bool</ref.struct></decl.function.returntype></decl.function.method.instance>",
key.entities: [
@@ -5452,7 +5451,7 @@
key.kind: source.lang.swift.decl.var.local,
key.keyword: "of",
key.name: "other",
- key.offset: 2100,
+ key.offset: 2087,
key.length: 17
}
]
@@ -5462,8 +5461,9 @@
{
key.kind: source.lang.swift.decl.extension.struct,
key.doc.full_as_xml: "<Other><Name></Name><Declaration>extension FooRuncingOptions</Declaration><CommentParts><Abstract><Para><codeVoice>OptionSet</codeVoice> requirements for which default implementations are supplied.</Para></Abstract><Discussion><Note><Para>A type conforming to <codeVoice>OptionSet</codeVoice> can implement any of these initializers or methods, and those implementations will be used in lieu of these defaults.</Para></Note></Discussion></CommentParts></Other>",
- key.offset: 2130,
+ key.offset: 2117,
key.length: 280,
+ key.fully_annotated_generic_signature: "<<decl.generic_type_param usr=\"s:s9OptionSetP4Selfxmfp\"><decl.generic_type_param.name>Self</decl.generic_type_param.name></decl.generic_type_param> <syntaxtype.keyword>where</syntaxtype.keyword> <decl.generic_type_requirement><ref.generic_type_param usr=\"s:s9OptionSetP4Selfxmfp\">Self</ref.generic_type_param> : <ref.protocol usr=\"s:s9OptionSetP\">OptionSet</ref.protocol></decl.generic_type_requirement>>",
key.extends: {
key.kind: source.lang.swift.ref.struct,
key.name: "FooRuncingOptions",
@@ -5476,7 +5476,7 @@
key.usr: "s:s9OptionSetPsE5unionyxxF::SYNTHESIZED::c:@E@FooRuncingOptions",
key.original_usr: "s:s9OptionSetPsE5unionyxxF",
key.doc.full_as_xml: "<Function><Name>union(_:)</Name><USR>s:s9OptionSetPsE5unionyxxF</USR><Declaration>@inlinable func union(_ other: Self) -> Self</Declaration><CommentParts><Abstract><Para>Returns a new option set of the elements contained in this set, in the given set, or in both.</Para></Abstract><Parameters><Parameter><Name>other</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>An option set.</Para></Discussion></Parameter></Parameters><ResultDiscussion><Para>A new option set made up of the elements contained in this set, in <codeVoice>other</codeVoice>, or in both.</Para></ResultDiscussion><Discussion><Para>This example uses the <codeVoice>union(_:)</codeVoice> method to add two more shipping options to the default set.</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[let defaultShipping = ShippingOptions.standard]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let memberShipping = defaultShipping.union([.secondDay, .priority])]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(memberShipping.contains(.priority))]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"true\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></CommentParts></Function>",
- key.offset: 2165,
+ key.offset: 2152,
key.length: 70,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.attribute.builtin><syntaxtype.attribute.name>@inlinable</syntaxtype.attribute.name></syntaxtype.attribute.builtin> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>union</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>other</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>) -> <decl.function.returntype><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.function.returntype></decl.function.method.instance>",
key.entities: [
@@ -5484,7 +5484,7 @@
key.kind: source.lang.swift.decl.var.local,
key.keyword: "_",
key.name: "other",
- key.offset: 2196,
+ key.offset: 2183,
key.length: 17
}
]
@@ -5495,7 +5495,7 @@
key.usr: "s:s9OptionSetPsE12intersectionyxxF::SYNTHESIZED::c:@E@FooRuncingOptions",
key.original_usr: "s:s9OptionSetPsE12intersectionyxxF",
key.doc.full_as_xml: "<Function><Name>intersection(_:)</Name><USR>s:s9OptionSetPsE12intersectionyxxF</USR><Declaration>@inlinable func intersection(_ other: Self) -> Self</Declaration><CommentParts><Abstract><Para>Returns a new option set with only the elements contained in both this set and the given set.</Para></Abstract><Parameters><Parameter><Name>other</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>An option set.</Para></Discussion></Parameter></Parameters><ResultDiscussion><Para>A new option set with only the elements contained in both this set and <codeVoice>other</codeVoice>.</Para></ResultDiscussion><Discussion><Para>This example uses the <codeVoice>intersection(_:)</codeVoice> method to limit the available shipping options to what can be used with a PO Box destination.</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[// Can only ship standard or priority to PO Boxes]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let poboxShipping: ShippingOptions = [.standard, .priority]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let memberShipping: ShippingOptions =]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[ [.standard, .priority, .secondDay]]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let availableOptions = memberShipping.intersection(poboxShipping)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(availableOptions.contains(.priority))]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"true\"]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(availableOptions.contains(.secondDay))]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"false\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></CommentParts></Function>",
- key.offset: 2241,
+ key.offset: 2228,
key.length: 77,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.attribute.builtin><syntaxtype.attribute.name>@inlinable</syntaxtype.attribute.name></syntaxtype.attribute.builtin> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>intersection</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>other</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>) -> <decl.function.returntype><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.function.returntype></decl.function.method.instance>",
key.entities: [
@@ -5503,7 +5503,7 @@
key.kind: source.lang.swift.decl.var.local,
key.keyword: "_",
key.name: "other",
- key.offset: 2279,
+ key.offset: 2266,
key.length: 17
}
]
@@ -5514,7 +5514,7 @@
key.usr: "s:s9OptionSetPsE19symmetricDifferenceyxxF::SYNTHESIZED::c:@E@FooRuncingOptions",
key.original_usr: "s:s9OptionSetPsE19symmetricDifferenceyxxF",
key.doc.full_as_xml: "<Function><Name>symmetricDifference(_:)</Name><USR>s:s9OptionSetPsE19symmetricDifferenceyxxF</USR><Declaration>@inlinable func symmetricDifference(_ other: Self) -> Self</Declaration><CommentParts><Abstract><Para>Returns a new option set with the elements contained in this set or in the given set, but not in both.</Para></Abstract><Parameters><Parameter><Name>other</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>An option set.</Para></Discussion></Parameter></Parameters><ResultDiscussion><Para>A new option set with only the elements contained in either this set or <codeVoice>other</codeVoice>, but not in both.</Para></ResultDiscussion></CommentParts></Function>",
- key.offset: 2324,
+ key.offset: 2311,
key.length: 84,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.attribute.builtin><syntaxtype.attribute.name>@inlinable</syntaxtype.attribute.name></syntaxtype.attribute.builtin> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>symmetricDifference</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>other</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>) -> <decl.function.returntype><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.function.returntype></decl.function.method.instance>",
key.entities: [
@@ -5522,7 +5522,7 @@
key.kind: source.lang.swift.decl.var.local,
key.keyword: "_",
key.name: "other",
- key.offset: 2369,
+ key.offset: 2356,
key.length: 17
}
]
@@ -5537,8 +5537,9 @@
}
],
key.doc.full_as_xml: "<Other><Name></Name><Declaration>extension FooRuncingOptions where Self == Self.Element</Declaration><CommentParts><Abstract><Para><codeVoice>OptionSet</codeVoice> requirements for which default implementations are supplied when <codeVoice>Element == Self</codeVoice>, which is the default.</Para></Abstract><Discussion><Note><Para>A type conforming to <codeVoice>OptionSet</codeVoice> can implement any of these initializers or methods, and those implementations will be used in lieu of these defaults.</Para></Note></Discussion></CommentParts></Other>",
- key.offset: 2412,
+ key.offset: 2399,
key.length: 407,
+ key.fully_annotated_generic_signature: "<<decl.generic_type_param usr=\"s:s9OptionSetPs7ElementQzRszrlE4Selfxmfp\"><decl.generic_type_param.name>Self</decl.generic_type_param.name></decl.generic_type_param> <syntaxtype.keyword>where</syntaxtype.keyword> <decl.generic_type_requirement><ref.generic_type_param usr=\"s:s9OptionSetPs7ElementQzRszrlE4Selfxmfp\">Self</ref.generic_type_param> : <ref.protocol usr=\"s:s9OptionSetP\">OptionSet</ref.protocol></decl.generic_type_requirement>, <decl.generic_type_requirement><ref.generic_type_param usr=\"s:s9OptionSetPs7ElementQzRszrlE4Selfxmfp\">Self</ref.generic_type_param> == <ref.generic_type_param usr=\"s:s9OptionSetPs7ElementQzRszrlE4Selfxmfp\">Self</ref.generic_type_param>.Element</decl.generic_type_requirement>>",
key.extends: {
key.kind: source.lang.swift.ref.struct,
key.name: "FooRuncingOptions",
@@ -5551,7 +5552,7 @@
key.usr: "s:s9OptionSetPs7ElementQzRszrlE8containsySbxF::SYNTHESIZED::c:@E@FooRuncingOptions",
key.original_usr: "s:s9OptionSetPs7ElementQzRszrlE8containsySbxF",
key.doc.full_as_xml: "<Function><Name>contains(_:)</Name><USR>s:s9OptionSetPs7ElementQzRszrlE8containsySbxF</USR><Declaration>@inlinable func contains(_ member: Self) -> Bool</Declaration><CommentParts><Abstract><Para>Returns a Boolean value that indicates whether a given element is a member of the option set.</Para></Abstract><Parameters><Parameter><Name>member</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>The element to look for in the option set.</Para></Discussion></Parameter></Parameters><ResultDiscussion><Para><codeVoice>true</codeVoice> if the option set contains <codeVoice>member</codeVoice>; otherwise, <codeVoice>false</codeVoice>.</Para></ResultDiscussion><Discussion><Para>This example uses the <codeVoice>contains(_:)</codeVoice> method to check whether next-day shipping is in the <codeVoice>availableOptions</codeVoice> instance.</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[let availableOptions = ShippingOptions.express]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[if availableOptions.contains(.nextDay) {]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[ print(\"Next day shipping available\")]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[}]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"Next day shipping available\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></CommentParts></Function>",
- key.offset: 2447,
+ key.offset: 2434,
key.length: 61,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.attribute.builtin><syntaxtype.attribute.name>@inlinable</syntaxtype.attribute.name></syntaxtype.attribute.builtin> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>contains</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>member</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>) -> <decl.function.returntype><ref.struct usr=\"s:Sb\">Bool</ref.struct></decl.function.returntype></decl.function.method.instance>",
key.entities: [
@@ -5559,7 +5560,7 @@
key.kind: source.lang.swift.decl.var.local,
key.keyword: "_",
key.name: "member",
- key.offset: 2482,
+ key.offset: 2469,
key.length: 17
}
]
@@ -5570,7 +5571,7 @@
key.usr: "s:s9OptionSetPs7ElementQzRszrlE6insertySb8inserted_x17memberAfterInserttxF::SYNTHESIZED::c:@E@FooRuncingOptions",
key.original_usr: "s:s9OptionSetPs7ElementQzRszrlE6insertySb8inserted_x17memberAfterInserttxF",
key.doc.full_as_xml: "<Function><Name>insert(_:)</Name><USR>s:s9OptionSetPs7ElementQzRszrlE6insertySb8inserted_x17memberAfterInserttxF</USR><Declaration>@inlinable mutating func insert(_ newMember: Self.Element) -> (inserted: Bool, memberAfterInsert: Self.Element)</Declaration><CommentParts><Abstract><Para>Adds the given element to the option set if it is not already a member.</Para></Abstract><Parameters><Parameter><Name>newMember</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>The element to insert.</Para></Discussion></Parameter></Parameters><ResultDiscussion><Para><codeVoice>(true, newMember)</codeVoice> if <codeVoice>newMember</codeVoice> was not contained in <codeVoice>self</codeVoice>. Otherwise, returns <codeVoice>(false, oldMember)</codeVoice>, where <codeVoice>oldMember</codeVoice> is the member of the set equal to <codeVoice>newMember</codeVoice>.</Para></ResultDiscussion><Discussion><Para>In the following example, the <codeVoice>.secondDay</codeVoice> shipping option is added to the <codeVoice>freeOptions</codeVoice> option set if <codeVoice>purchasePrice</codeVoice> is greater than 50.0. For the <codeVoice>ShippingOptions</codeVoice> declaration, see the <codeVoice>OptionSet</codeVoice> protocol discussion.</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[let purchasePrice = 87.55]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered><zCodeLineNumbered><![CDATA[var freeOptions: ShippingOptions = [.standard, .priority]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[if purchasePrice > 50 {]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[ freeOptions.insert(.secondDay)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[}]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(freeOptions.contains(.secondDay))]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"true\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></CommentParts></Function>",
- key.offset: 2514,
+ key.offset: 2501,
key.length: 121,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.attribute.builtin><syntaxtype.attribute.name>@discardableResult</syntaxtype.attribute.name></syntaxtype.attribute.builtin> <syntaxtype.attribute.builtin><syntaxtype.attribute.name>@inlinable</syntaxtype.attribute.name></syntaxtype.attribute.builtin> <syntaxtype.keyword>mutating</syntaxtype.keyword> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>insert</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>newMember</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>) -> <decl.function.returntype><tuple>(<tuple.element><tuple.element.argument_label>inserted</tuple.element.argument_label>: <tuple.element.type><ref.struct usr=\"s:Sb\">Bool</ref.struct></tuple.element.type></tuple.element>, <tuple.element><tuple.element.argument_label>memberAfterInsert</tuple.element.argument_label>: <tuple.element.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></tuple.element.type></tuple.element>)</tuple></decl.function.returntype></decl.function.method.instance>",
key.entities: [
@@ -5578,7 +5579,7 @@
key.kind: source.lang.swift.decl.var.local,
key.keyword: "_",
key.name: "newMember",
- key.offset: 2559,
+ key.offset: 2546,
key.length: 17
}
]
@@ -5589,7 +5590,7 @@
key.usr: "s:s9OptionSetPs7ElementQzRszrlE6removeyxSgxF::SYNTHESIZED::c:@E@FooRuncingOptions",
key.original_usr: "s:s9OptionSetPs7ElementQzRszrlE6removeyxSgxF",
key.doc.full_as_xml: "<Function><Name>remove(_:)</Name><USR>s:s9OptionSetPs7ElementQzRszrlE6removeyxSgxF</USR><Declaration>@inlinable mutating func remove(_ member: Self.Element) -> Self.Element?</Declaration><CommentParts><Abstract><Para>Removes the given element and all elements subsumed by it.</Para></Abstract><Parameters><Parameter><Name>member</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>The element of the set to remove.</Para></Discussion></Parameter></Parameters><ResultDiscussion><Para>The intersection of <codeVoice>[member]</codeVoice> and the set, if the intersection was nonempty; otherwise, <codeVoice>nil</codeVoice>.</Para></ResultDiscussion><Discussion><Para>In the following example, the <codeVoice>.priority</codeVoice> shipping option is removed from the <codeVoice>options</codeVoice> option set. Attempting to remove the same shipping option a second time results in <codeVoice>nil</codeVoice>, because <codeVoice>options</codeVoice> no longer contains <codeVoice>.priority</codeVoice> as a member.</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[var options: ShippingOptions = [.secondDay, .priority]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let priorityOption = options.remove(.priority)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(priorityOption == .priority)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"true\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(options.remove(.priority))]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"nil\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing><Para>In the next example, the <codeVoice>.express</codeVoice> element is passed to <codeVoice>remove(_:)</codeVoice>. Although <codeVoice>.express</codeVoice> is not a member of <codeVoice>options</codeVoice>, <codeVoice>.express</codeVoice> subsumes the remaining <codeVoice>.secondDay</codeVoice> element of the option set. Therefore, <codeVoice>options</codeVoice> is emptied and the intersection between <codeVoice>.express</codeVoice> and <codeVoice>options</codeVoice> is returned.</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[let expressOption = options.remove(.express)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(expressOption == .express)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"false\"]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(expressOption == .secondDay)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"true\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></CommentParts></Function>",
- key.offset: 2641,
+ key.offset: 2628,
key.length: 82,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.attribute.builtin><syntaxtype.attribute.name>@discardableResult</syntaxtype.attribute.name></syntaxtype.attribute.builtin> <syntaxtype.attribute.builtin><syntaxtype.attribute.name>@inlinable</syntaxtype.attribute.name></syntaxtype.attribute.builtin> <syntaxtype.keyword>mutating</syntaxtype.keyword> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>remove</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>member</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>) -> <decl.function.returntype><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct>?</decl.function.returntype></decl.function.method.instance>",
key.entities: [
@@ -5597,7 +5598,7 @@
key.kind: source.lang.swift.decl.var.local,
key.keyword: "_",
key.name: "member",
- key.offset: 2683,
+ key.offset: 2670,
key.length: 17
}
]
@@ -5608,7 +5609,7 @@
key.usr: "s:s9OptionSetPs7ElementQzRszrlE6update4withxSgx_tF::SYNTHESIZED::c:@E@FooRuncingOptions",
key.original_usr: "s:s9OptionSetPs7ElementQzRszrlE6update4withxSgx_tF",
key.doc.full_as_xml: "<Function><Name>update(with:)</Name><USR>s:s9OptionSetPs7ElementQzRszrlE6update4withxSgx_tF</USR><Declaration>@inlinable mutating func update(with newMember: Self.Element) -> Self.Element?</Declaration><CommentParts><Abstract><Para>Inserts the given element into the set.</Para></Abstract><ResultDiscussion><Para>The intersection of <codeVoice>[newMember]</codeVoice> and the set if the intersection was nonempty; otherwise, <codeVoice>nil</codeVoice>.</Para></ResultDiscussion><Discussion><Para>If <codeVoice>newMember</codeVoice> is not contained in the set but subsumes current members of the set, the subsumed members are returned.</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[var options: ShippingOptions = [.secondDay, .priority]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let replaced = options.update(with: .express)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(replaced == .secondDay)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"true\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></CommentParts></Function>",
- key.offset: 2729,
+ key.offset: 2716,
key.length: 88,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.attribute.builtin><syntaxtype.attribute.name>@discardableResult</syntaxtype.attribute.name></syntaxtype.attribute.builtin> <syntaxtype.attribute.builtin><syntaxtype.attribute.name>@inlinable</syntaxtype.attribute.name></syntaxtype.attribute.builtin> <syntaxtype.keyword>mutating</syntaxtype.keyword> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>update</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>with</decl.var.parameter.argument_label> <decl.var.parameter.name>newMember</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>) -> <decl.function.returntype><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct>?</decl.function.returntype></decl.function.method.instance>",
key.entities: [
@@ -5616,7 +5617,7 @@
key.kind: source.lang.swift.decl.var.local,
key.keyword: "with",
key.name: "newMember",
- key.offset: 2777,
+ key.offset: 2764,
key.length: 17
}
]
@@ -5631,8 +5632,9 @@
}
],
key.doc.full_as_xml: "<Other><Name></Name><Declaration>extension FooRuncingOptions where Self.RawValue : FixedWidthInteger</Declaration><CommentParts><Abstract><Para><codeVoice>OptionSet</codeVoice> requirements for which default implementations are supplied when <codeVoice>RawValue</codeVoice> conforms to <codeVoice>FixedWidthInteger</codeVoice>, which is the usual case. Each distinct bit of an option set’s <codeVoice>.rawValue</codeVoice> corresponds to a disjoint value of the <codeVoice>OptionSet</codeVoice>.</Para></Abstract><Discussion><Note><Para>A type conforming to <codeVoice>OptionSet</codeVoice> can implement any of these initializers or methods, and those implementations will be used in lieu of these defaults.</Para></Note><List-Bullet><Item><Para><codeVoice>union</codeVoice> is implemented as a bitwise “or” (<codeVoice>|</codeVoice>) of <codeVoice>rawValue</codeVoice>s</Para></Item><Item><Para><codeVoice>intersection</codeVoice> is implemented as a bitwise “and” (<codeVoice>&</codeVoice>) of <codeVoice>rawValue</codeVoice>s</Para></Item><Item><Para><codeVoice>symmetricDifference</codeVoice> is implemented as a bitwise “exclusive or” (<codeVoice>^</codeVoice>) of <codeVoice>rawValue</codeVoice>s</Para></Item></List-Bullet></Discussion></CommentParts></Other>",
- key.offset: 2821,
+ key.offset: 2808,
key.length: 279,
+ key.fully_annotated_generic_signature: "<<decl.generic_type_param usr=\"s:s9OptionSetPss17FixedWidthInteger8RawValueRpzrlE4Selfxmfp\"><decl.generic_type_param.name>Self</decl.generic_type_param.name></decl.generic_type_param> <syntaxtype.keyword>where</syntaxtype.keyword> <decl.generic_type_requirement><ref.generic_type_param usr=\"s:s9OptionSetPss17FixedWidthInteger8RawValueRpzrlE4Selfxmfp\">Self</ref.generic_type_param> : <ref.protocol usr=\"s:s9OptionSetP\">OptionSet</ref.protocol></decl.generic_type_requirement>, <decl.generic_type_requirement><ref.generic_type_param usr=\"s:s9OptionSetPss17FixedWidthInteger8RawValueRpzrlE4Selfxmfp\">Self</ref.generic_type_param>.RawValue : <ref.protocol usr=\"s:s17FixedWidthIntegerP\">FixedWidthInteger</ref.protocol></decl.generic_type_requirement>>",
key.extends: {
key.kind: source.lang.swift.ref.struct,
key.name: "FooRuncingOptions",
@@ -5645,7 +5647,7 @@
key.usr: "s:s9OptionSetPss17FixedWidthInteger8RawValueRpzrlExycfc::SYNTHESIZED::c:@E@FooRuncingOptions",
key.original_usr: "s:s9OptionSetPss17FixedWidthInteger8RawValueRpzrlExycfc",
key.doc.full_as_xml: "<Function><Name>init()</Name><USR>s:s9OptionSetPss17FixedWidthInteger8RawValueRpzrlExycfc</USR><Declaration>@inlinable init()</Declaration><CommentParts><Abstract><Para>Creates an empty option set.</Para></Abstract><Discussion><Para>This initializer creates an option set with a raw value of zero.</Para></Discussion></CommentParts></Function>",
- key.offset: 2856,
+ key.offset: 2843,
key.length: 17,
key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.attribute.builtin><syntaxtype.attribute.name>@inlinable</syntaxtype.attribute.name></syntaxtype.attribute.builtin> <syntaxtype.keyword>init</syntaxtype.keyword>()</decl.function.constructor>"
},
@@ -5655,7 +5657,7 @@
key.usr: "s:s9OptionSetPss17FixedWidthInteger8RawValueRpzrlE9formUnionyyxF::SYNTHESIZED::c:@E@FooRuncingOptions",
key.original_usr: "s:s9OptionSetPss17FixedWidthInteger8RawValueRpzrlE9formUnionyyxF",
key.doc.full_as_xml: "<Function><Name>formUnion(_:)</Name><USR>s:s9OptionSetPss17FixedWidthInteger8RawValueRpzrlE9formUnionyyxF</USR><Declaration>@inlinable mutating func formUnion(_ other: Self)</Declaration><CommentParts><Abstract><Para>Inserts the elements of another set into this option set.</Para></Abstract><Parameters><Parameter><Name>other</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>An option set.</Para></Discussion></Parameter></Parameters><Discussion><Para>This method is implemented as a <codeVoice>|</codeVoice> (bitwise OR) operation on the two sets’ raw values.</Para></Discussion></CommentParts></Function>",
- key.offset: 2879,
+ key.offset: 2866,
key.length: 62,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.attribute.builtin><syntaxtype.attribute.name>@inlinable</syntaxtype.attribute.name></syntaxtype.attribute.builtin> <syntaxtype.keyword>mutating</syntaxtype.keyword> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>formUnion</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>other</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.method.instance>",
key.entities: [
@@ -5663,7 +5665,7 @@
key.kind: source.lang.swift.decl.var.local,
key.keyword: "_",
key.name: "other",
- key.offset: 2923,
+ key.offset: 2910,
key.length: 17
}
]
@@ -5674,7 +5676,7 @@
key.usr: "s:s9OptionSetPss17FixedWidthInteger8RawValueRpzrlE16formIntersectionyyxF::SYNTHESIZED::c:@E@FooRuncingOptions",
key.original_usr: "s:s9OptionSetPss17FixedWidthInteger8RawValueRpzrlE16formIntersectionyyxF",
key.doc.full_as_xml: "<Function><Name>formIntersection(_:)</Name><USR>s:s9OptionSetPss17FixedWidthInteger8RawValueRpzrlE16formIntersectionyyxF</USR><Declaration>@inlinable mutating func formIntersection(_ other: Self)</Declaration><CommentParts><Abstract><Para>Removes all elements of this option set that are not also present in the given set.</Para></Abstract><Parameters><Parameter><Name>other</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>An option set.</Para></Discussion></Parameter></Parameters><Discussion><Para>This method is implemented as a <codeVoice>&</codeVoice> (bitwise AND) operation on the two sets’ raw values.</Para></Discussion></CommentParts></Function>",
- key.offset: 2947,
+ key.offset: 2934,
key.length: 69,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.attribute.builtin><syntaxtype.attribute.name>@inlinable</syntaxtype.attribute.name></syntaxtype.attribute.builtin> <syntaxtype.keyword>mutating</syntaxtype.keyword> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>formIntersection</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>other</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.method.instance>",
key.entities: [
@@ -5682,7 +5684,7 @@
key.kind: source.lang.swift.decl.var.local,
key.keyword: "_",
key.name: "other",
- key.offset: 2998,
+ key.offset: 2985,
key.length: 17
}
]
@@ -5693,7 +5695,7 @@
key.usr: "s:s9OptionSetPss17FixedWidthInteger8RawValueRpzrlE23formSymmetricDifferenceyyxF::SYNTHESIZED::c:@E@FooRuncingOptions",
key.original_usr: "s:s9OptionSetPss17FixedWidthInteger8RawValueRpzrlE23formSymmetricDifferenceyyxF",
key.doc.full_as_xml: "<Function><Name>formSymmetricDifference(_:)</Name><USR>s:s9OptionSetPss17FixedWidthInteger8RawValueRpzrlE23formSymmetricDifferenceyyxF</USR><Declaration>@inlinable mutating func formSymmetricDifference(_ other: Self)</Declaration><CommentParts><Abstract><Para>Replaces this set with a new set containing all elements contained in either this set or the given set, but not in both.</Para></Abstract><Parameters><Parameter><Name>other</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>An option set.</Para></Discussion></Parameter></Parameters><Discussion><Para>This method is implemented as a <codeVoice>^</codeVoice> (bitwise XOR) operation on the two sets’ raw values.</Para></Discussion></CommentParts></Function>",
- key.offset: 3022,
+ key.offset: 3009,
key.length: 76,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.attribute.builtin><syntaxtype.attribute.name>@inlinable</syntaxtype.attribute.name></syntaxtype.attribute.builtin> <syntaxtype.keyword>mutating</syntaxtype.keyword> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>formSymmetricDifference</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>other</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.method.instance>",
key.entities: [
@@ -5701,7 +5703,7 @@
key.kind: source.lang.swift.decl.var.local,
key.keyword: "_",
key.name: "other",
- key.offset: 3080,
+ key.offset: 3067,
key.length: 17
}
]
@@ -5712,7 +5714,7 @@
key.kind: source.lang.swift.decl.struct,
key.name: "FooStruct1",
key.usr: "c:@S@FooStruct1",
- key.offset: 3101,
+ key.offset: 3088,
key.length: 105,
key.fully_annotated_decl: "<decl.struct><syntaxtype.keyword>struct</syntaxtype.keyword> <decl.name>FooStruct1</decl.name></decl.struct>",
key.entities: [
@@ -5720,7 +5722,7 @@
key.kind: source.lang.swift.decl.var.instance,
key.name: "x",
key.usr: "c:@S@FooStruct1@FI@x",
- key.offset: 3126,
+ key.offset: 3113,
key.length: 12,
key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>x</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type></decl.var.instance>"
},
@@ -5728,7 +5730,7 @@
key.kind: source.lang.swift.decl.var.instance,
key.name: "y",
key.usr: "c:@S@FooStruct1@FI@y",
- key.offset: 3144,
+ key.offset: 3131,
key.length: 13,
key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>y</decl.name>: <decl.var.type><ref.struct usr=\"s:Sd\">Double</ref.struct></decl.var.type></decl.var.instance>"
},
@@ -5736,7 +5738,7 @@
key.kind: source.lang.swift.decl.function.constructor,
key.name: "init()",
key.usr: "s:So10FooStruct1VABycfc",
- key.offset: 3163,
+ key.offset: 3150,
key.length: 6,
key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>()</decl.function.constructor>"
},
@@ -5744,7 +5746,7 @@
key.kind: source.lang.swift.decl.function.constructor,
key.name: "init(x:y:)",
key.usr: "s:So10FooStruct1V1x1yABs5Int32V_Sdtcfc",
- key.offset: 3175,
+ key.offset: 3162,
key.length: 29,
key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.argument_label>x</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>y</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr=\"s:Sd\">Double</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>",
key.entities: [
@@ -5752,14 +5754,14 @@
key.kind: source.lang.swift.decl.var.local,
key.keyword: "x",
key.name: "x",
- key.offset: 3185,
+ key.offset: 3172,
key.length: 5
},
{
key.kind: source.lang.swift.decl.var.local,
key.keyword: "y",
key.name: "y",
- key.offset: 3197,
+ key.offset: 3184,
key.length: 6
}
]
@@ -5770,7 +5772,7 @@
key.kind: source.lang.swift.decl.typealias,
key.name: "FooStruct1Pointer",
key.usr: "c:Foo.h@T@FooStruct1Pointer",
- key.offset: 3207,
+ key.offset: 3194,
key.length: 62,
key.fully_annotated_decl: "<decl.typealias><syntaxtype.keyword>typealias</syntaxtype.keyword> <decl.name>FooStruct1Pointer</decl.name> = <ref.struct usr=\"s:Sp\">UnsafeMutablePointer</ref.struct><<ref.struct usr=\"c:@S@FooStruct1\">FooStruct1</ref.struct>></decl.typealias>",
key.conforms: [
@@ -5785,7 +5787,7 @@
key.kind: source.lang.swift.decl.struct,
key.name: "FooStruct2",
key.usr: "c:@S@FooStruct2",
- key.offset: 3270,
+ key.offset: 3257,
key.length: 105,
key.fully_annotated_decl: "<decl.struct><syntaxtype.keyword>struct</syntaxtype.keyword> <decl.name>FooStruct2</decl.name></decl.struct>",
key.entities: [
@@ -5793,7 +5795,7 @@
key.kind: source.lang.swift.decl.var.instance,
key.name: "x",
key.usr: "c:@S@FooStruct2@FI@x",
- key.offset: 3295,
+ key.offset: 3282,
key.length: 12,
key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>x</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type></decl.var.instance>"
},
@@ -5801,7 +5803,7 @@
key.kind: source.lang.swift.decl.var.instance,
key.name: "y",
key.usr: "c:@S@FooStruct2@FI@y",
- key.offset: 3313,
+ key.offset: 3300,
key.length: 13,
key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>y</decl.name>: <decl.var.type><ref.struct usr=\"s:Sd\">Double</ref.struct></decl.var.type></decl.var.instance>"
},
@@ -5809,7 +5811,7 @@
key.kind: source.lang.swift.decl.function.constructor,
key.name: "init()",
key.usr: "s:So10FooStruct2VABycfc",
- key.offset: 3332,
+ key.offset: 3319,
key.length: 6,
key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>()</decl.function.constructor>"
},
@@ -5817,7 +5819,7 @@
key.kind: source.lang.swift.decl.function.constructor,
key.name: "init(x:y:)",
key.usr: "s:So10FooStruct2V1x1yABs5Int32V_Sdtcfc",
- key.offset: 3344,
+ key.offset: 3331,
key.length: 29,
key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.argument_label>x</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>y</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr=\"s:Sd\">Double</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>",
key.entities: [
@@ -5825,14 +5827,14 @@
key.kind: source.lang.swift.decl.var.local,
key.keyword: "x",
key.name: "x",
- key.offset: 3354,
+ key.offset: 3341,
key.length: 5
},
{
key.kind: source.lang.swift.decl.var.local,
key.keyword: "y",
key.name: "y",
- key.offset: 3366,
+ key.offset: 3353,
key.length: 6
}
]
@@ -5843,7 +5845,7 @@
key.kind: source.lang.swift.decl.typealias,
key.name: "FooStructTypedef1",
key.usr: "c:Foo.h@T@FooStructTypedef1",
- key.offset: 3376,
+ key.offset: 3363,
key.length: 40,
key.fully_annotated_decl: "<decl.typealias><syntaxtype.keyword>typealias</syntaxtype.keyword> <decl.name>FooStructTypedef1</decl.name> = <ref.struct usr=\"c:@S@FooStruct2\">FooStruct2</ref.struct></decl.typealias>"
},
@@ -5851,7 +5853,7 @@
key.kind: source.lang.swift.decl.struct,
key.name: "FooStructTypedef2",
key.usr: "c:@SA@FooStructTypedef2",
- key.offset: 3417,
+ key.offset: 3404,
key.length: 112,
key.fully_annotated_decl: "<decl.struct><syntaxtype.keyword>struct</syntaxtype.keyword> <decl.name>FooStructTypedef2</decl.name></decl.struct>",
key.entities: [
@@ -5859,7 +5861,7 @@
key.kind: source.lang.swift.decl.var.instance,
key.name: "x",
key.usr: "c:@SA@FooStructTypedef2@FI@x",
- key.offset: 3449,
+ key.offset: 3436,
key.length: 12,
key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>x</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type></decl.var.instance>"
},
@@ -5867,7 +5869,7 @@
key.kind: source.lang.swift.decl.var.instance,
key.name: "y",
key.usr: "c:@SA@FooStructTypedef2@FI@y",
- key.offset: 3467,
+ key.offset: 3454,
key.length: 13,
key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>y</decl.name>: <decl.var.type><ref.struct usr=\"s:Sd\">Double</ref.struct></decl.var.type></decl.var.instance>"
},
@@ -5875,7 +5877,7 @@
key.kind: source.lang.swift.decl.function.constructor,
key.name: "init()",
key.usr: "s:So17FooStructTypedef2aABycfc",
- key.offset: 3486,
+ key.offset: 3473,
key.length: 6,
key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>()</decl.function.constructor>"
},
@@ -5883,7 +5885,7 @@
key.kind: source.lang.swift.decl.function.constructor,
key.name: "init(x:y:)",
key.usr: "s:So17FooStructTypedef2a1x1yABs5Int32V_Sdtcfc",
- key.offset: 3498,
+ key.offset: 3485,
key.length: 29,
key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.argument_label>x</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>y</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr=\"s:Sd\">Double</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>",
key.entities: [
@@ -5891,14 +5893,14 @@
key.kind: source.lang.swift.decl.var.local,
key.keyword: "x",
key.name: "x",
- key.offset: 3508,
+ key.offset: 3495,
key.length: 5
},
{
key.kind: source.lang.swift.decl.var.local,
key.keyword: "y",
key.name: "y",
- key.offset: 3520,
+ key.offset: 3507,
key.length: 6
}
]
@@ -5910,7 +5912,7 @@
key.name: "FooTypedef1",
key.usr: "c:Foo.h@T@FooTypedef1",
key.doc.full_as_xml: "<Typedef file=Foo.h line=\"60\" column=\"13\"><Name>FooTypedef1</Name><USR>c:Foo.h@T@FooTypedef1</USR><Declaration>typealias FooTypedef1 = Int32</Declaration><Abstract><Para> Aaa. FooTypedef1. Bbb.</Para></Abstract></Typedef>",
- key.offset: 3530,
+ key.offset: 3517,
key.length: 29,
key.fully_annotated_decl: "<decl.typealias><syntaxtype.keyword>typealias</syntaxtype.keyword> <decl.name>FooTypedef1</decl.name> = <ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.typealias>",
key.conforms: [
@@ -5936,7 +5938,7 @@
key.name: "fooIntVar",
key.usr: "c:@fooIntVar",
key.doc.full_as_xml: "<Variable file=Foo.h line=\"63\" column=\"12\"><Name>fooIntVar</Name><USR>c:@fooIntVar</USR><Declaration>var fooIntVar: Int32</Declaration><Abstract><Para> Aaa. fooIntVar. Bbb.</Para></Abstract></Variable>",
- key.offset: 3560,
+ key.offset: 3547,
key.length: 20,
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>fooIntVar</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type></decl.var.global>"
},
@@ -5945,7 +5947,7 @@
key.name: "fooFunc1(_:)",
key.usr: "c:@F@fooFunc1",
key.doc.full_as_xml: "<Function file=Foo.h line=\"66\" column=\"5\"><Name>fooFunc1</Name><USR>c:@F@fooFunc1</USR><Declaration>func fooFunc1(_ a: Int32) -> Int32</Declaration><Abstract><Para> Aaa. fooFunc1. Bbb.</Para></Abstract></Function>",
- key.offset: 3581,
+ key.offset: 3568,
key.length: 34,
key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooFunc1</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>a</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.parameter.type></decl.var.parameter>) -> <decl.function.returntype><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.function.returntype></decl.function.free>",
key.entities: [
@@ -5953,7 +5955,7 @@
key.kind: source.lang.swift.decl.var.local,
key.keyword: "_",
key.name: "a",
- key.offset: 3600,
+ key.offset: 3587,
key.length: 5
}
]
@@ -5962,14 +5964,14 @@
key.kind: source.lang.swift.decl.function.free,
key.name: "fooFunc1AnonymousParam(_:)",
key.usr: "c:@F@fooFunc1AnonymousParam",
- key.offset: 3616,
+ key.offset: 3603,
key.length: 48,
key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooFunc1AnonymousParam</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.parameter.type></decl.var.parameter>) -> <decl.function.returntype><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.function.returntype></decl.function.free>",
key.entities: [
{
key.kind: source.lang.swift.decl.var.local,
key.keyword: "_",
- key.offset: 3649,
+ key.offset: 3636,
key.length: 5
}
]
@@ -5978,7 +5980,7 @@
key.kind: source.lang.swift.decl.function.free,
key.name: "fooFunc3(_:_:_:_:)",
key.usr: "c:@F@fooFunc3",
- key.offset: 3665,
+ key.offset: 3652,
key.length: 94,
key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooFunc3</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>a</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>b</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:Sf\">Float</ref.struct></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>c</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:Sd\">Double</ref.struct></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>d</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:Sp\">UnsafeMutablePointer</ref.struct><<ref.struct usr=\"s:s5Int32V\">Int32</ref.struct>>!</decl.var.parameter.type></decl.var.parameter>) -> <decl.function.returntype><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.function.returntype></decl.function.free>",
key.entities: [
@@ -5986,28 +5988,28 @@
key.kind: source.lang.swift.decl.var.local,
key.keyword: "_",
key.name: "a",
- key.offset: 3684,
+ key.offset: 3671,
key.length: 5
},
{
key.kind: source.lang.swift.decl.var.local,
key.keyword: "_",
key.name: "b",
- key.offset: 3696,
+ key.offset: 3683,
key.length: 5
},
{
key.kind: source.lang.swift.decl.var.local,
key.keyword: "_",
key.name: "c",
- key.offset: 3708,
+ key.offset: 3695,
key.length: 6
},
{
key.kind: source.lang.swift.decl.var.local,
key.keyword: "_",
key.name: "d",
- key.offset: 3721,
+ key.offset: 3708,
key.length: 28
}
]
@@ -6016,7 +6018,7 @@
key.kind: source.lang.swift.decl.function.free,
key.name: "fooFuncWithBlock(_:)",
key.usr: "c:@F@fooFuncWithBlock",
- key.offset: 3760,
+ key.offset: 3747,
key.length: 49,
key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooFuncWithBlock</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>blk</decl.var.parameter.name>: <decl.var.parameter.type>((<decl.var.parameter><decl.var.parameter.type><ref.struct usr=\"s:Sf\">Float</ref.struct></decl.var.parameter.type></decl.var.parameter>) -> <decl.function.returntype><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.function.returntype>)!</decl.var.parameter.type></decl.var.parameter>)</decl.function.free>",
key.entities: [
@@ -6024,7 +6026,7 @@
key.kind: source.lang.swift.decl.var.local,
key.keyword: "_",
key.name: "blk",
- key.offset: 3789,
+ key.offset: 3776,
key.length: 19
}
]
@@ -6033,7 +6035,7 @@
key.kind: source.lang.swift.decl.function.free,
key.name: "fooFuncWithFunctionPointer(_:)",
key.usr: "c:@F@fooFuncWithFunctionPointer",
- key.offset: 3810,
+ key.offset: 3797,
key.length: 60,
key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooFuncWithFunctionPointer</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>fptr</decl.var.parameter.name>: <decl.var.parameter.type>((<decl.var.parameter><decl.var.parameter.type><ref.struct usr=\"s:Sf\">Float</ref.struct></decl.var.parameter.type></decl.var.parameter>) -> <decl.function.returntype><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.function.returntype>)!</decl.var.parameter.type></decl.var.parameter>)</decl.function.free>",
key.entities: [
@@ -6041,7 +6043,7 @@
key.kind: source.lang.swift.decl.var.local,
key.keyword: "_",
key.name: "fptr",
- key.offset: 3850,
+ key.offset: 3837,
key.length: 19
}
]
@@ -6050,7 +6052,7 @@
key.kind: source.lang.swift.decl.function.free,
key.name: "fooFuncNoreturn1()",
key.usr: "c:@F@fooFuncNoreturn1",
- key.offset: 3871,
+ key.offset: 3858,
key.length: 32,
key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooFuncNoreturn1</decl.name>() -> <decl.function.returntype><ref.enum usr=\"s:s5NeverO\">Never</ref.enum></decl.function.returntype></decl.function.free>"
},
@@ -6058,7 +6060,7 @@
key.kind: source.lang.swift.decl.function.free,
key.name: "fooFuncNoreturn2()",
key.usr: "c:@F@fooFuncNoreturn2",
- key.offset: 3904,
+ key.offset: 3891,
key.length: 32,
key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooFuncNoreturn2</decl.name>() -> <decl.function.returntype><ref.enum usr=\"s:s5NeverO\">Never</ref.enum></decl.function.returntype></decl.function.free>"
},
@@ -6067,7 +6069,7 @@
key.name: "fooFuncWithComment1()",
key.usr: "c:@F@fooFuncWithComment1",
key.doc.full_as_xml: "<Function file=Foo.h line=\"89\" column=\"6\"><Name>fooFuncWithComment1</Name><USR>c:@F@fooFuncWithComment1</USR><Declaration>func fooFuncWithComment1()</Declaration><Abstract><Para> Aaa. fooFuncWithComment1. Bbb. Ccc.</Para></Abstract><Discussion><Para> Ddd.</Para></Discussion></Function>",
- key.offset: 3937,
+ key.offset: 3924,
key.length: 26,
key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooFuncWithComment1</decl.name>()</decl.function.free>"
},
@@ -6076,7 +6078,7 @@
key.name: "fooFuncWithComment2()",
key.usr: "c:@F@fooFuncWithComment2",
key.doc.full_as_xml: "<Function file=Foo.h line=\"94\" column=\"6\"><Name>fooFuncWithComment2</Name><USR>c:@F@fooFuncWithComment2</USR><Declaration>func fooFuncWithComment2()</Declaration><Abstract><Para> Aaa. fooFuncWithComment2. Bbb.</Para></Abstract></Function>",
- key.offset: 3964,
+ key.offset: 3951,
key.length: 26,
key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooFuncWithComment2</decl.name>()</decl.function.free>"
},
@@ -6085,7 +6087,7 @@
key.name: "fooFuncWithComment3()",
key.usr: "c:@F@fooFuncWithComment3",
key.doc.full_as_xml: "<Function file=Foo.h line=\"102\" column=\"6\"><Name>fooFuncWithComment3</Name><USR>c:@F@fooFuncWithComment3</USR><Declaration>func fooFuncWithComment3()</Declaration><Abstract><Para> Aaa. fooFuncWithComment3. Bbb.</Para></Abstract><Discussion><Para> Ccc.</Para></Discussion></Function>",
- key.offset: 3991,
+ key.offset: 3978,
key.length: 26,
key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooFuncWithComment3</decl.name>()</decl.function.free>"
},
@@ -6094,7 +6096,7 @@
key.name: "fooFuncWithComment4()",
key.usr: "c:@F@fooFuncWithComment4",
key.doc.full_as_xml: "<Function file=Foo.h line=\"108\" column=\"6\"><Name>fooFuncWithComment4</Name><USR>c:@F@fooFuncWithComment4</USR><Declaration>func fooFuncWithComment4()</Declaration><Abstract><Para> Aaa. fooFuncWithComment4. Bbb.</Para></Abstract><Discussion><Para> Ddd.</Para></Discussion></Function>",
- key.offset: 4018,
+ key.offset: 4005,
key.length: 26,
key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooFuncWithComment4</decl.name>()</decl.function.free>"
},
@@ -6103,7 +6105,7 @@
key.name: "fooFuncWithComment5()",
key.usr: "c:@F@fooFuncWithComment5",
key.doc.full_as_xml: "<Function file=Foo.h line=\"114\" column=\"6\"><Name>fooFuncWithComment5</Name><USR>c:@F@fooFuncWithComment5</USR><Declaration>func fooFuncWithComment5()</Declaration><Abstract><Para> Aaa. fooFuncWithComment5. Bbb. Ccc.</Para></Abstract><Discussion><Para> Ddd.</Para></Discussion></Function>",
- key.offset: 4045,
+ key.offset: 4032,
key.length: 26,
key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooFuncWithComment5</decl.name>()</decl.function.free>"
},
@@ -6112,7 +6114,7 @@
key.name: "redeclaredInMultipleModulesFunc1(_:)",
key.usr: "c:@F@redeclaredInMultipleModulesFunc1",
key.doc.full_as_xml: "<Function file=Foo.h line=\"118\" column=\"5\"><Name>redeclaredInMultipleModulesFunc1</Name><USR>c:@F@redeclaredInMultipleModulesFunc1</USR><Declaration>func redeclaredInMultipleModulesFunc1(_ a: Int32) -> Int32</Declaration><Abstract><Para> Aaa. redeclaredInMultipleModulesFunc1. Bbb.</Para></Abstract></Function>",
- key.offset: 4072,
+ key.offset: 4059,
key.length: 58,
key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>redeclaredInMultipleModulesFunc1</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>a</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.parameter.type></decl.var.parameter>) -> <decl.function.returntype><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.function.returntype></decl.function.free>",
key.entities: [
@@ -6120,7 +6122,7 @@
key.kind: source.lang.swift.decl.var.local,
key.keyword: "_",
key.name: "a",
- key.offset: 4115,
+ key.offset: 4102,
key.length: 5
}
]
@@ -6130,7 +6132,7 @@
key.name: "FooProtocolBase",
key.usr: "c:objc(pl)FooProtocolBase",
key.doc.full_as_xml: "<Other file=Foo.h line=\"121\" column=\"11\"><Name>FooProtocolBase</Name><USR>c:objc(pl)FooProtocolBase</USR><Declaration>protocol FooProtocolBase</Declaration><Abstract><Para> Aaa. FooProtocolBase. Bbb.</Para></Abstract></Other>",
- key.offset: 4131,
+ key.offset: 4118,
key.length: 301,
key.fully_annotated_decl: "<decl.protocol><syntaxtype.keyword>protocol</syntaxtype.keyword> <decl.name>FooProtocolBase</decl.name></decl.protocol>",
key.entities: [
@@ -6139,7 +6141,7 @@
key.name: "fooProtoFunc()",
key.usr: "c:objc(pl)FooProtocolBase(im)fooProtoFunc",
key.doc.full_as_xml: "<Function isInstanceMethod=\"1\" file=Foo.h line=\"125\" column=\"1\"><Name>fooProtoFunc</Name><USR>c:objc(pl)FooProtocolBase(im)fooProtoFunc</USR><Declaration>func fooProtoFunc()</Declaration><Abstract><Para> Aaa. fooProtoFunc. Bbb. Ccc.</Para></Abstract></Function>",
- key.offset: 4163,
+ key.offset: 4150,
key.length: 19,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooProtoFunc</decl.name>()</decl.function.method.instance>"
},
@@ -6148,7 +6150,7 @@
key.name: "fooProtoFuncWithExtraIndentation1()",
key.usr: "c:objc(pl)FooProtocolBase(im)fooProtoFuncWithExtraIndentation1",
key.doc.full_as_xml: "<Function isInstanceMethod=\"1\" file=Foo.h line=\"129\" column=\"3\"><Name>fooProtoFuncWithExtraIndentation1</Name><USR>c:objc(pl)FooProtocolBase(im)fooProtoFuncWithExtraIndentation1</USR><Declaration>func fooProtoFuncWithExtraIndentation1()</Declaration><Abstract><Para> Aaa. fooProtoFuncWithExtraIndentation1. Bbb. Ccc.</Para></Abstract></Function>",
- key.offset: 4188,
+ key.offset: 4175,
key.length: 40,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooProtoFuncWithExtraIndentation1</decl.name>()</decl.function.method.instance>"
},
@@ -6157,7 +6159,7 @@
key.name: "fooProtoFuncWithExtraIndentation2()",
key.usr: "c:objc(pl)FooProtocolBase(im)fooProtoFuncWithExtraIndentation2",
key.doc.full_as_xml: "<Function isInstanceMethod=\"1\" file=Foo.h line=\"135\" column=\"3\"><Name>fooProtoFuncWithExtraIndentation2</Name><USR>c:objc(pl)FooProtocolBase(im)fooProtoFuncWithExtraIndentation2</USR><Declaration>func fooProtoFuncWithExtraIndentation2()</Declaration><Abstract><Para> Aaa. fooProtoFuncWithExtraIndentation2. Bbb. Ccc.</Para></Abstract></Function>",
- key.offset: 4234,
+ key.offset: 4221,
key.length: 40,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooProtoFuncWithExtraIndentation2</decl.name>()</decl.function.method.instance>"
},
@@ -6165,7 +6167,7 @@
key.kind: source.lang.swift.decl.function.method.static,
key.name: "fooProtoClassFunc()",
key.usr: "c:objc(pl)FooProtocolBase(cm)fooProtoClassFunc",
- key.offset: 4280,
+ key.offset: 4267,
key.length: 31,
key.fully_annotated_decl: "<decl.function.method.static><syntaxtype.keyword>static</syntaxtype.keyword> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooProtoClassFunc</decl.name>()</decl.function.method.static>"
},
@@ -6173,7 +6175,7 @@
key.kind: source.lang.swift.decl.var.instance,
key.name: "fooProperty1",
key.usr: "c:objc(pl)FooProtocolBase(py)fooProperty1",
- key.offset: 4317,
+ key.offset: 4304,
key.length: 35,
key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>fooProperty1</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> <syntaxtype.keyword>set</syntaxtype.keyword> }</decl.var.instance>"
},
@@ -6181,7 +6183,7 @@
key.kind: source.lang.swift.decl.var.instance,
key.name: "fooProperty2",
key.usr: "c:objc(pl)FooProtocolBase(py)fooProperty2",
- key.offset: 4358,
+ key.offset: 4345,
key.length: 35,
key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>fooProperty2</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> <syntaxtype.keyword>set</syntaxtype.keyword> }</decl.var.instance>"
},
@@ -6189,7 +6191,7 @@
key.kind: source.lang.swift.decl.var.instance,
key.name: "fooProperty3",
key.usr: "c:objc(pl)FooProtocolBase(py)fooProperty3",
- key.offset: 4399,
+ key.offset: 4386,
key.length: 31,
key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>fooProperty3</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.instance>"
}
@@ -6199,7 +6201,7 @@
key.kind: source.lang.swift.decl.protocol,
key.name: "FooProtocolDerived",
key.usr: "c:objc(pl)FooProtocolDerived",
- key.offset: 4433,
+ key.offset: 4420,
key.length: 49,
key.fully_annotated_decl: "<decl.protocol><syntaxtype.keyword>protocol</syntaxtype.keyword> <decl.name>FooProtocolDerived</decl.name> : <ref.protocol usr=\"c:objc(pl)FooProtocolBase\">FooProtocolBase</ref.protocol></decl.protocol>",
key.conforms: [
@@ -6214,7 +6216,7 @@
key.kind: source.lang.swift.decl.class,
key.name: "FooClassBase",
key.usr: "c:objc(cs)FooClassBase",
- key.offset: 4483,
+ key.offset: 4470,
key.length: 392,
key.fully_annotated_decl: "<decl.class><syntaxtype.keyword>class</syntaxtype.keyword> <decl.name>FooClassBase</decl.name></decl.class>",
key.entities: [
@@ -6222,7 +6224,7 @@
key.kind: source.lang.swift.decl.function.method.instance,
key.name: "fooBaseInstanceFunc0()",
key.usr: "c:objc(cs)FooClassBase(im)fooBaseInstanceFunc0",
- key.offset: 4509,
+ key.offset: 4496,
key.length: 27,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooBaseInstanceFunc0</decl.name>()</decl.function.method.instance>"
},
@@ -6230,7 +6232,7 @@
key.kind: source.lang.swift.decl.function.method.instance,
key.name: "fooBaseInstanceFunc1(_:)",
key.usr: "c:objc(cs)FooClassBase(im)fooBaseInstanceFunc1:",
- key.offset: 4542,
+ key.offset: 4529,
key.length: 60,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooBaseInstanceFunc1</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>anObject</decl.var.parameter.name>: <decl.var.parameter.type>Any!</decl.var.parameter.type></decl.var.parameter>) -> <decl.function.returntype><ref.class usr=\"c:objc(cs)FooClassBase\">FooClassBase</ref.class>!</decl.function.returntype></decl.function.method.instance>",
key.entities: [
@@ -6238,7 +6240,7 @@
key.kind: source.lang.swift.decl.var.local,
key.keyword: "_",
key.name: "anObject",
- key.offset: 4580,
+ key.offset: 4567,
key.length: 4
}
]
@@ -6247,7 +6249,7 @@
key.kind: source.lang.swift.decl.function.constructor,
key.name: "init()",
key.usr: "c:objc(cs)FooClassBase(im)init",
- key.offset: 4608,
+ key.offset: 4595,
key.length: 7,
key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>!()</decl.function.constructor>"
},
@@ -6255,7 +6257,7 @@
key.kind: source.lang.swift.decl.function.constructor,
key.name: "init(float:)",
key.usr: "c:objc(cs)FooClassBase(im)initWithFloat:",
- key.offset: 4621,
+ key.offset: 4608,
key.length: 33,
key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>convenience</syntaxtype.keyword> <syntaxtype.keyword>init</syntaxtype.keyword>!(<decl.var.parameter><decl.var.parameter.argument_label>float</decl.var.parameter.argument_label> <decl.var.parameter.name>f</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:Sf\">Float</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>",
key.entities: [
@@ -6263,7 +6265,7 @@
key.kind: source.lang.swift.decl.var.local,
key.keyword: "float",
key.name: "f",
- key.offset: 4648,
+ key.offset: 4635,
key.length: 5
}
]
@@ -6272,7 +6274,7 @@
key.kind: source.lang.swift.decl.function.method.instance,
key.name: "fooBaseInstanceFuncOverridden()",
key.usr: "c:objc(cs)FooClassBase(im)fooBaseInstanceFuncOverridden",
- key.offset: 4660,
+ key.offset: 4647,
key.length: 36,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooBaseInstanceFuncOverridden</decl.name>()</decl.function.method.instance>"
},
@@ -6280,7 +6282,7 @@
key.kind: source.lang.swift.decl.function.method.class,
key.name: "fooBaseClassFunc0()",
key.usr: "c:objc(cs)FooClassBase(cm)fooBaseClassFunc0",
- key.offset: 4702,
+ key.offset: 4689,
key.length: 30,
key.fully_annotated_decl: "<decl.function.method.class><syntaxtype.keyword>class</syntaxtype.keyword> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooBaseClassFunc0</decl.name>()</decl.function.method.class>"
},
@@ -6288,7 +6290,7 @@
key.kind: source.lang.swift.decl.function.method.instance,
key.name: "_internalMeth1()",
key.usr: "c:objc(cs)FooClassBase(im)_internalMeth1",
- key.offset: 4738,
+ key.offset: 4725,
key.length: 29,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>_internalMeth1</decl.name>() -> <decl.function.returntype>Any!</decl.function.returntype></decl.function.method.instance>"
},
@@ -6296,7 +6298,7 @@
key.kind: source.lang.swift.decl.function.method.instance,
key.name: "_internalMeth2()",
key.usr: "c:objc(cs)FooClassBase(im)_internalMeth2",
- key.offset: 4773,
+ key.offset: 4760,
key.length: 29,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>_internalMeth2</decl.name>() -> <decl.function.returntype>Any!</decl.function.returntype></decl.function.method.instance>"
},
@@ -6304,7 +6306,7 @@
key.kind: source.lang.swift.decl.function.method.instance,
key.name: "nonInternalMeth()",
key.usr: "c:objc(cs)FooClassBase(im)nonInternalMeth",
- key.offset: 4808,
+ key.offset: 4795,
key.length: 30,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>nonInternalMeth</decl.name>() -> <decl.function.returntype>Any!</decl.function.returntype></decl.function.method.instance>"
},
@@ -6312,7 +6314,7 @@
key.kind: source.lang.swift.decl.function.method.instance,
key.name: "_internalMeth3()",
key.usr: "c:objc(cs)FooClassBase(im)_internalMeth3",
- key.offset: 4844,
+ key.offset: 4831,
key.length: 29,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>_internalMeth3</decl.name>() -> <decl.function.returntype>Any!</decl.function.returntype></decl.function.method.instance>"
}
@@ -6323,7 +6325,7 @@
key.name: "FooClassDerived",
key.usr: "c:objc(cs)FooClassDerived",
key.doc.full_as_xml: "<Other file=Foo.h line=\"158\" column=\"12\"><Name>FooClassDerived</Name><USR>c:objc(cs)FooClassDerived</USR><Declaration>class FooClassDerived : FooClassBase, FooProtocolDerived</Declaration><Abstract><Para> Aaa. FooClassDerived. Bbb.</Para></Abstract></Other>",
- key.offset: 4876,
+ key.offset: 4863,
key.length: 493,
key.fully_annotated_decl: "<decl.class><syntaxtype.keyword>class</syntaxtype.keyword> <decl.name>FooClassDerived</decl.name> : <ref.class usr=\"c:objc(cs)FooClassBase\">FooClassBase</ref.class>, <ref.protocol usr=\"c:objc(pl)FooProtocolDerived\">FooProtocolDerived</ref.protocol></decl.class>",
key.inherits: [
@@ -6345,7 +6347,7 @@
key.kind: source.lang.swift.decl.var.instance,
key.name: "fooProperty1",
key.usr: "c:objc(cs)FooClassDerived(py)fooProperty1",
- key.offset: 4940,
+ key.offset: 4927,
key.length: 23,
key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>fooProperty1</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> <syntaxtype.keyword>set</syntaxtype.keyword> }</decl.var.instance>"
},
@@ -6353,7 +6355,7 @@
key.kind: source.lang.swift.decl.var.instance,
key.name: "fooProperty2",
key.usr: "c:objc(cs)FooClassDerived(py)fooProperty2",
- key.offset: 4969,
+ key.offset: 4956,
key.length: 23,
key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>fooProperty2</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> <syntaxtype.keyword>set</syntaxtype.keyword> }</decl.var.instance>"
},
@@ -6361,7 +6363,7 @@
key.kind: source.lang.swift.decl.var.instance,
key.name: "fooProperty3",
key.usr: "c:objc(cs)FooClassDerived(py)fooProperty3",
- key.offset: 4998,
+ key.offset: 4985,
key.length: 31,
key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>fooProperty3</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.instance>"
},
@@ -6369,7 +6371,7 @@
key.kind: source.lang.swift.decl.function.method.instance,
key.name: "fooInstanceFunc0()",
key.usr: "c:objc(cs)FooClassDerived(im)fooInstanceFunc0",
- key.offset: 5035,
+ key.offset: 5022,
key.length: 23,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooInstanceFunc0</decl.name>()</decl.function.method.instance>"
},
@@ -6377,7 +6379,7 @@
key.kind: source.lang.swift.decl.function.method.instance,
key.name: "fooInstanceFunc1(_:)",
key.usr: "c:objc(cs)FooClassDerived(im)fooInstanceFunc1:",
- key.offset: 5064,
+ key.offset: 5051,
key.length: 33,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooInstanceFunc1</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>a</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.method.instance>",
key.entities: [
@@ -6385,7 +6387,7 @@
key.kind: source.lang.swift.decl.var.local,
key.keyword: "_",
key.name: "a",
- key.offset: 5091,
+ key.offset: 5078,
key.length: 5
}
]
@@ -6394,7 +6396,7 @@
key.kind: source.lang.swift.decl.function.method.instance,
key.name: "fooInstanceFunc2(_:withB:)",
key.usr: "c:objc(cs)FooClassDerived(im)fooInstanceFunc2:withB:",
- key.offset: 5103,
+ key.offset: 5090,
key.length: 49,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooInstanceFunc2</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>a</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>withB</decl.var.parameter.argument_label> <decl.var.parameter.name>b</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.method.instance>",
key.entities: [
@@ -6402,14 +6404,14 @@
key.kind: source.lang.swift.decl.var.local,
key.keyword: "_",
key.name: "a",
- key.offset: 5130,
+ key.offset: 5117,
key.length: 5
},
{
key.kind: source.lang.swift.decl.var.local,
key.keyword: "withB",
key.name: "b",
- key.offset: 5146,
+ key.offset: 5133,
key.length: 5
}
]
@@ -6418,7 +6420,7 @@
key.kind: source.lang.swift.decl.function.method.instance,
key.name: "fooBaseInstanceFuncOverridden()",
key.usr: "c:objc(cs)FooClassDerived(im)fooBaseInstanceFuncOverridden",
- key.offset: 5158,
+ key.offset: 5145,
key.length: 36,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooBaseInstanceFuncOverridden</decl.name>()</decl.function.method.instance>",
key.inherits: [
@@ -6433,7 +6435,7 @@
key.kind: source.lang.swift.decl.function.method.class,
key.name: "fooClassFunc0()",
key.usr: "c:objc(cs)FooClassDerived(cm)fooClassFunc0",
- key.offset: 5200,
+ key.offset: 5187,
key.length: 26,
key.fully_annotated_decl: "<decl.function.method.class><syntaxtype.keyword>class</syntaxtype.keyword> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooClassFunc0</decl.name>()</decl.function.method.class>"
},
@@ -6442,7 +6444,7 @@
key.name: "_internalMeth1()",
key.usr: "c:objc(cs)FooClassBase(im)_internalMeth1::SYNTHESIZED::c:objc(cs)FooClassDerived",
key.original_usr: "c:objc(cs)FooClassBase(im)_internalMeth1",
- key.offset: 5232,
+ key.offset: 5219,
key.length: 29,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>_internalMeth1</decl.name>() -> <decl.function.returntype>Any!</decl.function.returntype></decl.function.method.instance>"
},
@@ -6451,7 +6453,7 @@
key.name: "_internalMeth2()",
key.usr: "c:objc(cs)FooClassBase(im)_internalMeth2::SYNTHESIZED::c:objc(cs)FooClassDerived",
key.original_usr: "c:objc(cs)FooClassBase(im)_internalMeth2",
- key.offset: 5267,
+ key.offset: 5254,
key.length: 29,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>_internalMeth2</decl.name>() -> <decl.function.returntype>Any!</decl.function.returntype></decl.function.method.instance>"
},
@@ -6460,7 +6462,7 @@
key.name: "nonInternalMeth()",
key.usr: "c:objc(cs)FooClassBase(im)nonInternalMeth::SYNTHESIZED::c:objc(cs)FooClassDerived",
key.original_usr: "c:objc(cs)FooClassBase(im)nonInternalMeth",
- key.offset: 5302,
+ key.offset: 5289,
key.length: 30,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>nonInternalMeth</decl.name>() -> <decl.function.returntype>Any!</decl.function.returntype></decl.function.method.instance>"
},
@@ -6469,7 +6471,7 @@
key.name: "_internalMeth3()",
key.usr: "c:objc(cs)FooClassBase(im)_internalMeth3::SYNTHESIZED::c:objc(cs)FooClassDerived",
key.original_usr: "c:objc(cs)FooClassBase(im)_internalMeth3",
- key.offset: 5338,
+ key.offset: 5325,
key.length: 29,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>_internalMeth3</decl.name>() -> <decl.function.returntype>Any!</decl.function.returntype></decl.function.method.instance>"
}
@@ -6479,7 +6481,7 @@
key.kind: source.lang.swift.decl.typealias,
key.name: "typedef_int_t",
key.usr: "c:Foo.h@T@typedef_int_t",
- key.offset: 5370,
+ key.offset: 5357,
key.length: 31,
key.fully_annotated_decl: "<decl.typealias><syntaxtype.keyword>typealias</syntaxtype.keyword> <decl.name>typedef_int_t</decl.name> = <ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.typealias>",
key.conforms: [
@@ -6504,7 +6506,7 @@
key.kind: source.lang.swift.decl.var.global,
key.name: "FOO_MACRO_1",
key.usr: "c:Foo.h@3720@macro@FOO_MACRO_1",
- key.offset: 5402,
+ key.offset: 5389,
key.length: 30,
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_1</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
},
@@ -6512,7 +6514,7 @@
key.kind: source.lang.swift.decl.var.global,
key.name: "FOO_MACRO_2",
key.usr: "c:Foo.h@3742@macro@FOO_MACRO_2",
- key.offset: 5433,
+ key.offset: 5420,
key.length: 30,
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_2</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
},
@@ -6520,7 +6522,7 @@
key.kind: source.lang.swift.decl.var.global,
key.name: "FOO_MACRO_3",
key.usr: "c:Foo.h@3764@macro@FOO_MACRO_3",
- key.offset: 5464,
+ key.offset: 5451,
key.length: 30,
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_3</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
},
@@ -6528,7 +6530,7 @@
key.kind: source.lang.swift.decl.var.global,
key.name: "FOO_MACRO_4",
key.usr: "c:Foo.h@3828@macro@FOO_MACRO_4",
- key.offset: 5495,
+ key.offset: 5482,
key.length: 31,
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_4</decl.name>: <decl.var.type><ref.struct usr=\"s:s6UInt32V\">UInt32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
},
@@ -6536,7 +6538,7 @@
key.kind: source.lang.swift.decl.var.global,
key.name: "FOO_MACRO_5",
key.usr: "c:Foo.h@3860@macro@FOO_MACRO_5",
- key.offset: 5527,
+ key.offset: 5514,
key.length: 31,
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_5</decl.name>: <decl.var.type><ref.struct usr=\"s:s6UInt64V\">UInt64</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
},
@@ -6544,7 +6546,7 @@
key.kind: source.lang.swift.decl.var.global,
key.name: "FOO_MACRO_6",
key.usr: "c:Foo.h@3902@macro@FOO_MACRO_6",
- key.offset: 5559,
+ key.offset: 5546,
key.length: 38,
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_6</decl.name>: <decl.var.type><ref.typealias usr=\"c:Foo.h@T@typedef_int_t\">typedef_int_t</ref.typealias></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
},
@@ -6552,7 +6554,7 @@
key.kind: source.lang.swift.decl.var.global,
key.name: "FOO_MACRO_7",
key.usr: "c:Foo.h@3943@macro@FOO_MACRO_7",
- key.offset: 5598,
+ key.offset: 5585,
key.length: 38,
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_7</decl.name>: <decl.var.type><ref.typealias usr=\"c:Foo.h@T@typedef_int_t\">typedef_int_t</ref.typealias></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
},
@@ -6560,7 +6562,7 @@
key.kind: source.lang.swift.decl.var.global,
key.name: "FOO_MACRO_8",
key.usr: "c:Foo.h@3984@macro@FOO_MACRO_8",
- key.offset: 5637,
+ key.offset: 5624,
key.length: 29,
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_8</decl.name>: <decl.var.type><ref.struct usr=\"s:s4Int8V\">Int8</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
},
@@ -6568,7 +6570,7 @@
key.kind: source.lang.swift.decl.var.global,
key.name: "FOO_MACRO_9",
key.usr: "c:Foo.h@4015@macro@FOO_MACRO_9",
- key.offset: 5667,
+ key.offset: 5654,
key.length: 30,
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_9</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
},
@@ -6576,7 +6578,7 @@
key.kind: source.lang.swift.decl.var.global,
key.name: "FOO_MACRO_10",
key.usr: "c:Foo.h@4045@macro@FOO_MACRO_10",
- key.offset: 5698,
+ key.offset: 5685,
key.length: 31,
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_10</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int16V\">Int16</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
},
@@ -6584,7 +6586,7 @@
key.kind: source.lang.swift.decl.var.global,
key.name: "FOO_MACRO_11",
key.usr: "c:Foo.h@4079@macro@FOO_MACRO_11",
- key.offset: 5730,
+ key.offset: 5717,
key.length: 29,
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_11</decl.name>: <decl.var.type><ref.struct usr=\"s:Si\">Int</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
},
@@ -6592,7 +6594,7 @@
key.kind: source.lang.swift.decl.var.global,
key.name: "FOO_MACRO_OR",
key.usr: "c:Foo.h@4112@macro@FOO_MACRO_OR",
- key.offset: 5760,
+ key.offset: 5747,
key.length: 31,
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_OR</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
},
@@ -6600,7 +6602,7 @@
key.kind: source.lang.swift.decl.var.global,
key.name: "FOO_MACRO_AND",
key.usr: "c:Foo.h@4161@macro@FOO_MACRO_AND",
- key.offset: 5792,
+ key.offset: 5779,
key.length: 32,
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_AND</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
},
@@ -6608,7 +6610,7 @@
key.kind: source.lang.swift.decl.var.global,
key.name: "FOO_MACRO_BITWIDTH",
key.usr: "c:Foo.h@4211@macro@FOO_MACRO_BITWIDTH",
- key.offset: 5825,
+ key.offset: 5812,
key.length: 38,
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_BITWIDTH</decl.name>: <decl.var.type><ref.struct usr=\"s:s6UInt64V\">UInt64</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
},
@@ -6616,7 +6618,7 @@
key.kind: source.lang.swift.decl.var.global,
key.name: "FOO_MACRO_SIGNED",
key.usr: "c:Foo.h@4266@macro@FOO_MACRO_SIGNED",
- key.offset: 5864,
+ key.offset: 5851,
key.length: 36,
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_SIGNED</decl.name>: <decl.var.type><ref.struct usr=\"s:s6UInt32V\">UInt32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
},
@@ -6624,7 +6626,7 @@
key.kind: source.lang.swift.decl.var.global,
key.name: "FOO_MACRO_REDEF_1",
key.usr: "c:Foo.h@4477@macro@FOO_MACRO_REDEF_1",
- key.offset: 5901,
+ key.offset: 5888,
key.length: 36,
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_REDEF_1</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
},
@@ -6632,7 +6634,7 @@
key.kind: source.lang.swift.decl.var.global,
key.name: "FOO_MACRO_REDEF_2",
key.usr: "c:Foo.h@4534@macro@FOO_MACRO_REDEF_2",
- key.offset: 5938,
+ key.offset: 5925,
key.length: 36,
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_REDEF_2</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
},
@@ -6640,7 +6642,7 @@
key.kind: source.lang.swift.decl.function.free,
key.name: "theLastDeclInFoo()",
key.usr: "c:@F@theLastDeclInFoo",
- key.offset: 5975,
+ key.offset: 5962,
key.length: 23,
key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>theLastDeclInFoo</decl.name>()</decl.function.free>"
},
@@ -6648,7 +6650,7 @@
key.kind: source.lang.swift.decl.function.free,
key.name: "_internalTopLevelFunc()",
key.usr: "c:@F@_internalTopLevelFunc",
- key.offset: 5999,
+ key.offset: 5986,
key.length: 28,
key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>_internalTopLevelFunc</decl.name>()</decl.function.free>"
},
@@ -6656,7 +6658,7 @@
key.kind: source.lang.swift.decl.struct,
key.name: "_InternalStruct",
key.usr: "c:@S@_InternalStruct",
- key.offset: 6028,
+ key.offset: 6015,
key.length: 78,
key.fully_annotated_decl: "<decl.struct><syntaxtype.keyword>struct</syntaxtype.keyword> <decl.name>_InternalStruct</decl.name></decl.struct>",
key.entities: [
@@ -6664,7 +6666,7 @@
key.kind: source.lang.swift.decl.var.instance,
key.name: "x",
key.usr: "c:@S@_InternalStruct@FI@x",
- key.offset: 6058,
+ key.offset: 6045,
key.length: 12,
key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>x</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type></decl.var.instance>"
},
@@ -6672,7 +6674,7 @@
key.kind: source.lang.swift.decl.function.constructor,
key.name: "init()",
key.usr: "s:So15_InternalStructVABycfc",
- key.offset: 6076,
+ key.offset: 6063,
key.length: 6,
key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>()</decl.function.constructor>"
},
@@ -6680,7 +6682,7 @@
key.kind: source.lang.swift.decl.function.constructor,
key.name: "init(x:)",
key.usr: "s:So15_InternalStructV1xABs5Int32V_tcfc",
- key.offset: 6088,
+ key.offset: 6075,
key.length: 16,
key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.argument_label>x</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>",
key.entities: [
@@ -6688,7 +6690,7 @@
key.kind: source.lang.swift.decl.var.local,
key.keyword: "x",
key.name: "x",
- key.offset: 6098,
+ key.offset: 6085,
key.length: 5
}
]
@@ -6697,7 +6699,7 @@
},
{
key.kind: source.lang.swift.decl.extension.class,
- key.offset: 6107,
+ key.offset: 6094,
key.length: 61,
key.extends: {
key.kind: source.lang.swift.ref.class,
@@ -6709,7 +6711,7 @@
key.kind: source.lang.swift.decl.function.method.instance,
key.name: "_internalMeth1()",
key.usr: "c:objc(cs)FooClassBase(im)_internalMeth1",
- key.offset: 6137,
+ key.offset: 6124,
key.length: 29,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>_internalMeth1</decl.name>() -> <decl.function.returntype>Any!</decl.function.returntype></decl.function.method.instance>"
}
@@ -6717,7 +6719,7 @@
},
{
key.kind: source.lang.swift.decl.extension.class,
- key.offset: 6169,
+ key.offset: 6156,
key.length: 97,
key.extends: {
key.kind: source.lang.swift.ref.class,
@@ -6729,7 +6731,7 @@
key.kind: source.lang.swift.decl.function.method.instance,
key.name: "_internalMeth2()",
key.usr: "c:objc(cs)FooClassBase(im)_internalMeth2",
- key.offset: 6199,
+ key.offset: 6186,
key.length: 29,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>_internalMeth2</decl.name>() -> <decl.function.returntype>Any!</decl.function.returntype></decl.function.method.instance>"
},
@@ -6737,7 +6739,7 @@
key.kind: source.lang.swift.decl.function.method.instance,
key.name: "nonInternalMeth()",
key.usr: "c:objc(cs)FooClassBase(im)nonInternalMeth",
- key.offset: 6234,
+ key.offset: 6221,
key.length: 30,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>nonInternalMeth</decl.name>() -> <decl.function.returntype>Any!</decl.function.returntype></decl.function.method.instance>"
}
@@ -6745,7 +6747,7 @@
},
{
key.kind: source.lang.swift.decl.extension.class,
- key.offset: 6267,
+ key.offset: 6254,
key.length: 61,
key.extends: {
key.kind: source.lang.swift.ref.class,
@@ -6757,7 +6759,7 @@
key.kind: source.lang.swift.decl.function.method.instance,
key.name: "_internalMeth3()",
key.usr: "c:objc(cs)FooClassBase(im)_internalMeth3",
- key.offset: 6297,
+ key.offset: 6284,
key.length: 29,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>_internalMeth3</decl.name>() -> <decl.function.returntype>Any!</decl.function.returntype></decl.function.method.instance>"
}
@@ -6767,7 +6769,7 @@
key.kind: source.lang.swift.decl.protocol,
key.name: "_InternalProt",
key.usr: "c:objc(pl)_InternalProt",
- key.offset: 6329,
+ key.offset: 6316,
key.length: 26,
key.fully_annotated_decl: "<decl.protocol><syntaxtype.keyword>protocol</syntaxtype.keyword> <decl.name>_InternalProt</decl.name></decl.protocol>"
},
@@ -6775,7 +6777,7 @@
key.kind: source.lang.swift.decl.class,
key.name: "ClassWithInternalProt",
key.usr: "c:objc(cs)ClassWithInternalProt",
- key.offset: 6356,
+ key.offset: 6343,
key.length: 47,
key.fully_annotated_decl: "<decl.class><syntaxtype.keyword>class</syntaxtype.keyword> <decl.name>ClassWithInternalProt</decl.name> : <ref.protocol usr=\"c:objc(pl)_InternalProt\">_InternalProt</ref.protocol></decl.class>",
key.conforms: [
@@ -6790,7 +6792,7 @@
key.kind: source.lang.swift.decl.class,
key.name: "FooClassPropertyOwnership",
key.usr: "c:objc(cs)FooClassPropertyOwnership",
- key.offset: 6404,
+ key.offset: 6391,
key.length: 425,
key.fully_annotated_decl: "<decl.class><syntaxtype.keyword>class</syntaxtype.keyword> <decl.name>FooClassPropertyOwnership</decl.name> : <ref.class usr=\"c:objc(cs)FooClassBase\">FooClassBase</ref.class></decl.class>",
key.inherits: [
@@ -6805,7 +6807,7 @@
key.kind: source.lang.swift.decl.var.instance,
key.name: "assignable",
key.usr: "c:objc(cs)FooClassPropertyOwnership(py)assignable",
- key.offset: 6458,
+ key.offset: 6445,
key.length: 42,
key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>unowned(unsafe)</syntaxtype.keyword> <syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>assignable</decl.name>: <decl.var.type>AnyObject!</decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> <syntaxtype.keyword>set</syntaxtype.keyword> }</decl.var.instance>"
},
@@ -6813,7 +6815,7 @@
key.kind: source.lang.swift.decl.var.instance,
key.name: "unsafeAssignable",
key.usr: "c:objc(cs)FooClassPropertyOwnership(py)unsafeAssignable",
- key.offset: 6506,
+ key.offset: 6493,
key.length: 48,
key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>unowned(unsafe)</syntaxtype.keyword> <syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>unsafeAssignable</decl.name>: <decl.var.type>AnyObject!</decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> <syntaxtype.keyword>set</syntaxtype.keyword> }</decl.var.instance>"
},
@@ -6821,7 +6823,7 @@
key.kind: source.lang.swift.decl.var.instance,
key.name: "retainable",
key.usr: "c:objc(cs)FooClassPropertyOwnership(py)retainable",
- key.offset: 6560,
+ key.offset: 6547,
key.length: 20,
key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>retainable</decl.name>: <decl.var.type>Any!</decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> <syntaxtype.keyword>set</syntaxtype.keyword> }</decl.var.instance>"
},
@@ -6829,7 +6831,7 @@
key.kind: source.lang.swift.decl.var.instance,
key.name: "strongRef",
key.usr: "c:objc(cs)FooClassPropertyOwnership(py)strongRef",
- key.offset: 6586,
+ key.offset: 6573,
key.length: 19,
key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>strongRef</decl.name>: <decl.var.type>Any!</decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> <syntaxtype.keyword>set</syntaxtype.keyword> }</decl.var.instance>"
},
@@ -6837,7 +6839,7 @@
key.kind: source.lang.swift.decl.var.instance,
key.name: "copyable",
key.usr: "c:objc(cs)FooClassPropertyOwnership(py)copyable",
- key.offset: 6611,
+ key.offset: 6598,
key.length: 18,
key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>copyable</decl.name>: <decl.var.type>Any!</decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> <syntaxtype.keyword>set</syntaxtype.keyword> }</decl.var.instance>"
},
@@ -6845,7 +6847,7 @@
key.kind: source.lang.swift.decl.var.instance,
key.name: "weakRef",
key.usr: "c:objc(cs)FooClassPropertyOwnership(py)weakRef",
- key.offset: 6635,
+ key.offset: 6622,
key.length: 28,
key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>weak</syntaxtype.keyword> <syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>weakRef</decl.name>: <decl.var.type>AnyObject!</decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> <syntaxtype.keyword>set</syntaxtype.keyword> }</decl.var.instance>"
},
@@ -6853,7 +6855,7 @@
key.kind: source.lang.swift.decl.var.instance,
key.name: "scalar",
key.usr: "c:objc(cs)FooClassPropertyOwnership(py)scalar",
- key.offset: 6669,
+ key.offset: 6656,
key.length: 17,
key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>scalar</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> <syntaxtype.keyword>set</syntaxtype.keyword> }</decl.var.instance>"
},
@@ -6862,7 +6864,7 @@
key.name: "_internalMeth1()",
key.usr: "c:objc(cs)FooClassBase(im)_internalMeth1::SYNTHESIZED::c:objc(cs)FooClassPropertyOwnership",
key.original_usr: "c:objc(cs)FooClassBase(im)_internalMeth1",
- key.offset: 6692,
+ key.offset: 6679,
key.length: 29,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>_internalMeth1</decl.name>() -> <decl.function.returntype>Any!</decl.function.returntype></decl.function.method.instance>"
},
@@ -6871,7 +6873,7 @@
key.name: "_internalMeth2()",
key.usr: "c:objc(cs)FooClassBase(im)_internalMeth2::SYNTHESIZED::c:objc(cs)FooClassPropertyOwnership",
key.original_usr: "c:objc(cs)FooClassBase(im)_internalMeth2",
- key.offset: 6727,
+ key.offset: 6714,
key.length: 29,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>_internalMeth2</decl.name>() -> <decl.function.returntype>Any!</decl.function.returntype></decl.function.method.instance>"
},
@@ -6880,7 +6882,7 @@
key.name: "nonInternalMeth()",
key.usr: "c:objc(cs)FooClassBase(im)nonInternalMeth::SYNTHESIZED::c:objc(cs)FooClassPropertyOwnership",
key.original_usr: "c:objc(cs)FooClassBase(im)nonInternalMeth",
- key.offset: 6762,
+ key.offset: 6749,
key.length: 30,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>nonInternalMeth</decl.name>() -> <decl.function.returntype>Any!</decl.function.returntype></decl.function.method.instance>"
},
@@ -6889,7 +6891,7 @@
key.name: "_internalMeth3()",
key.usr: "c:objc(cs)FooClassBase(im)_internalMeth3::SYNTHESIZED::c:objc(cs)FooClassPropertyOwnership",
key.original_usr: "c:objc(cs)FooClassBase(im)_internalMeth3",
- key.offset: 6798,
+ key.offset: 6785,
key.length: 29,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>_internalMeth3</decl.name>() -> <decl.function.returntype>Any!</decl.function.returntype></decl.function.method.instance>"
}
@@ -6899,7 +6901,7 @@
key.kind: source.lang.swift.decl.var.global,
key.name: "FOO_NIL",
key.usr: "c:Foo.h@5323@macro@FOO_NIL",
- key.offset: 6830,
+ key.offset: 6817,
key.length: 15,
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_NIL</decl.name>: <decl.var.type><tuple>()</tuple></decl.var.type></decl.var.global>",
key.attributes: [
@@ -6915,7 +6917,7 @@
key.kind: source.lang.swift.decl.class,
key.name: "FooUnavailableMembers",
key.usr: "c:objc(cs)FooUnavailableMembers",
- key.offset: 6846,
+ key.offset: 6833,
key.length: 592,
key.fully_annotated_decl: "<decl.class><syntaxtype.keyword>class</syntaxtype.keyword> <decl.name>FooUnavailableMembers</decl.name> : <ref.class usr=\"c:objc(cs)FooClassBase\">FooClassBase</ref.class></decl.class>",
key.inherits: [
@@ -6930,7 +6932,7 @@
key.kind: source.lang.swift.decl.function.constructor,
key.name: "init(int:)",
key.usr: "c:objc(cs)FooUnavailableMembers(cm)unavailableMembersWithInt:",
- key.offset: 6896,
+ key.offset: 6883,
key.length: 31,
key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>convenience</syntaxtype.keyword> <syntaxtype.keyword>init</syntaxtype.keyword>!(<decl.var.parameter><decl.var.parameter.argument_label>int</decl.var.parameter.argument_label> <decl.var.parameter.name>i</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>",
key.entities: [
@@ -6938,7 +6940,7 @@
key.kind: source.lang.swift.decl.var.local,
key.keyword: "int",
key.name: "i",
- key.offset: 6921,
+ key.offset: 6908,
key.length: 5
}
]
@@ -6947,7 +6949,7 @@
key.kind: source.lang.swift.decl.function.method.instance,
key.name: "unavailable()",
key.usr: "c:objc(cs)FooUnavailableMembers(im)unavailable",
- key.offset: 6933,
+ key.offset: 6920,
key.length: 18,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>unavailable</decl.name>()</decl.function.method.instance>",
key.attributes: [
@@ -6963,7 +6965,7 @@
key.kind: source.lang.swift.decl.function.method.instance,
key.name: "swiftUnavailable()",
key.usr: "c:objc(cs)FooUnavailableMembers(im)swiftUnavailable",
- key.offset: 6957,
+ key.offset: 6944,
key.length: 23,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>swiftUnavailable</decl.name>()</decl.function.method.instance>",
key.attributes: [
@@ -6978,7 +6980,7 @@
key.kind: source.lang.swift.decl.function.method.instance,
key.name: "deprecated()",
key.usr: "c:objc(cs)FooUnavailableMembers(im)deprecated",
- key.offset: 6986,
+ key.offset: 6973,
key.length: 17,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>deprecated</decl.name>()</decl.function.method.instance>",
key.attributes: [
@@ -6994,7 +6996,7 @@
key.kind: source.lang.swift.decl.function.method.instance,
key.name: "availabilityIntroduced()",
key.usr: "c:objc(cs)FooUnavailableMembers(im)availabilityIntroduced",
- key.offset: 7009,
+ key.offset: 6996,
key.length: 29,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>availabilityIntroduced</decl.name>()</decl.function.method.instance>",
key.attributes: [
@@ -7009,7 +7011,7 @@
key.kind: source.lang.swift.decl.function.method.instance,
key.name: "availabilityDeprecated()",
key.usr: "c:objc(cs)FooUnavailableMembers(im)availabilityDeprecated",
- key.offset: 7044,
+ key.offset: 7031,
key.length: 29,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>availabilityDeprecated</decl.name>()</decl.function.method.instance>",
key.attributes: [
@@ -7028,7 +7030,7 @@
key.kind: source.lang.swift.decl.function.method.instance,
key.name: "availabilityObsoleted()",
key.usr: "c:objc(cs)FooUnavailableMembers(im)availabilityObsoleted",
- key.offset: 7079,
+ key.offset: 7066,
key.length: 28,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>availabilityObsoleted</decl.name>()</decl.function.method.instance>",
key.attributes: [
@@ -7044,7 +7046,7 @@
key.kind: source.lang.swift.decl.function.method.instance,
key.name: "availabilityUnavailable()",
key.usr: "c:objc(cs)FooUnavailableMembers(im)availabilityUnavailable",
- key.offset: 7113,
+ key.offset: 7100,
key.length: 30,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>availabilityUnavailable</decl.name>()</decl.function.method.instance>",
key.attributes: [
@@ -7060,7 +7062,7 @@
key.kind: source.lang.swift.decl.function.method.instance,
key.name: "availabilityIntroducedMsg()",
key.usr: "c:objc(cs)FooUnavailableMembers(im)availabilityIntroducedMsg",
- key.offset: 7149,
+ key.offset: 7136,
key.length: 32,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>availabilityIntroducedMsg</decl.name>()</decl.function.method.instance>",
key.attributes: [
@@ -7076,7 +7078,7 @@
key.kind: source.lang.swift.decl.function.method.instance,
key.name: "availabilityDeprecatedMsg()",
key.usr: "c:objc(cs)FooUnavailableMembers(im)availabilityDeprecatedMsg",
- key.offset: 7187,
+ key.offset: 7174,
key.length: 32,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>availabilityDeprecatedMsg</decl.name>()</decl.function.method.instance>",
key.attributes: [
@@ -7095,7 +7097,7 @@
key.kind: source.lang.swift.decl.function.method.instance,
key.name: "availabilityObsoletedMsg()",
key.usr: "c:objc(cs)FooUnavailableMembers(im)availabilityObsoletedMsg",
- key.offset: 7225,
+ key.offset: 7212,
key.length: 31,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>availabilityObsoletedMsg</decl.name>()</decl.function.method.instance>",
key.attributes: [
@@ -7112,7 +7114,7 @@
key.kind: source.lang.swift.decl.function.method.instance,
key.name: "availabilityUnavailableMsg()",
key.usr: "c:objc(cs)FooUnavailableMembers(im)availabilityUnavailableMsg",
- key.offset: 7262,
+ key.offset: 7249,
key.length: 33,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>availabilityUnavailableMsg</decl.name>()</decl.function.method.instance>",
key.attributes: [
@@ -7130,7 +7132,7 @@
key.name: "_internalMeth1()",
key.usr: "c:objc(cs)FooClassBase(im)_internalMeth1::SYNTHESIZED::c:objc(cs)FooUnavailableMembers",
key.original_usr: "c:objc(cs)FooClassBase(im)_internalMeth1",
- key.offset: 7301,
+ key.offset: 7288,
key.length: 29,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>_internalMeth1</decl.name>() -> <decl.function.returntype>Any!</decl.function.returntype></decl.function.method.instance>"
},
@@ -7139,7 +7141,7 @@
key.name: "_internalMeth2()",
key.usr: "c:objc(cs)FooClassBase(im)_internalMeth2::SYNTHESIZED::c:objc(cs)FooUnavailableMembers",
key.original_usr: "c:objc(cs)FooClassBase(im)_internalMeth2",
- key.offset: 7336,
+ key.offset: 7323,
key.length: 29,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>_internalMeth2</decl.name>() -> <decl.function.returntype>Any!</decl.function.returntype></decl.function.method.instance>"
},
@@ -7148,7 +7150,7 @@
key.name: "nonInternalMeth()",
key.usr: "c:objc(cs)FooClassBase(im)nonInternalMeth::SYNTHESIZED::c:objc(cs)FooUnavailableMembers",
key.original_usr: "c:objc(cs)FooClassBase(im)nonInternalMeth",
- key.offset: 7371,
+ key.offset: 7358,
key.length: 30,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>nonInternalMeth</decl.name>() -> <decl.function.returntype>Any!</decl.function.returntype></decl.function.method.instance>"
},
@@ -7157,7 +7159,7 @@
key.name: "_internalMeth3()",
key.usr: "c:objc(cs)FooClassBase(im)_internalMeth3::SYNTHESIZED::c:objc(cs)FooUnavailableMembers",
key.original_usr: "c:objc(cs)FooClassBase(im)_internalMeth3",
- key.offset: 7407,
+ key.offset: 7394,
key.length: 29,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>_internalMeth3</decl.name>() -> <decl.function.returntype>Any!</decl.function.returntype></decl.function.method.instance>"
}
@@ -7167,7 +7169,7 @@
key.kind: source.lang.swift.decl.class,
key.name: "FooCFType",
key.usr: "c:Foo.h@T@FooCFTypeRef",
- key.offset: 7439,
+ key.offset: 7426,
key.length: 19,
key.fully_annotated_decl: "<decl.class><syntaxtype.keyword>class</syntaxtype.keyword> <decl.name>FooCFType</decl.name></decl.class>"
},
@@ -7175,14 +7177,14 @@
key.kind: source.lang.swift.decl.function.free,
key.name: "FooCFTypeRelease(_:)",
key.usr: "c:@F@FooCFTypeRelease",
- key.offset: 7459,
+ key.offset: 7446,
key.length: 38,
key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>FooCFTypeRelease</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.class usr=\"c:Foo.h@T@FooCFTypeRef\">FooCFType</ref.class>!</decl.var.parameter.type></decl.var.parameter>)</decl.function.free>",
key.entities: [
{
key.kind: source.lang.swift.decl.var.local,
key.keyword: "_",
- key.offset: 7486,
+ key.offset: 7473,
key.length: 10
}
],
@@ -7199,7 +7201,7 @@
key.kind: source.lang.swift.decl.enum,
key.name: "ABAuthorizationStatus",
key.usr: "c:@E@ABAuthorizationStatus",
- key.offset: 7498,
+ key.offset: 7485,
key.length: 266,
key.fully_annotated_decl: "<decl.enum><syntaxtype.keyword>enum</syntaxtype.keyword> <decl.name>ABAuthorizationStatus</decl.name> : <ref.struct usr=\"s:Si\">Int</ref.struct></decl.enum>",
key.inherits: [
@@ -7214,7 +7216,7 @@
key.kind: source.lang.swift.decl.enumelement,
key.name: "notDetermined",
key.usr: "c:@E@ABAuthorizationStatus@kABAuthorizationStatusNotDetermined",
- key.offset: 7538,
+ key.offset: 7525,
key.length: 18,
key.fully_annotated_decl: "<decl.enumelement><syntaxtype.keyword>case</syntaxtype.keyword> <decl.name>notDetermined</decl.name> = <syntaxtype.number>0</syntaxtype.number></decl.enumelement>",
key.attributes: [
@@ -7229,7 +7231,7 @@
key.kind: source.lang.swift.decl.enumelement,
key.name: "restricted",
key.usr: "c:@E@ABAuthorizationStatus@kABAuthorizationStatusRestricted",
- key.offset: 7562,
+ key.offset: 7549,
key.length: 15,
key.fully_annotated_decl: "<decl.enumelement><syntaxtype.keyword>case</syntaxtype.keyword> <decl.name>restricted</decl.name> = <syntaxtype.number>1</syntaxtype.number></decl.enumelement>",
key.attributes: [
@@ -7245,7 +7247,7 @@
key.name: "hashValue",
key.usr: "s:SYsSHRzSH8RawValueSYRpzrlE04hashB0Sivp::SYNTHESIZED::c:@E@ABAuthorizationStatus",
key.original_usr: "s:SYsSHRzSH8RawValueSYRpzrlE04hashB0Sivp",
- key.offset: 7583,
+ key.offset: 7570,
key.length: 37,
key.fully_annotated_decl: "<decl.var.instance><syntaxtype.attribute.builtin><syntaxtype.attribute.name>@inlinable</syntaxtype.attribute.name></syntaxtype.attribute.builtin> <syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>hashValue</decl.name>: <decl.var.type><ref.struct usr=\"s:Si\">Int</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.instance>"
},
@@ -7254,7 +7256,7 @@
key.name: "hash(into:)",
key.usr: "s:SYsSHRzSH8RawValueSYRpzrlE4hash4intoys6HasherVz_tF::SYNTHESIZED::c:@E@ABAuthorizationStatus",
key.original_usr: "s:SYsSHRzSH8RawValueSYRpzrlE4hash4intoys6HasherVz_tF",
- key.offset: 7626,
+ key.offset: 7613,
key.length: 47,
key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.attribute.builtin><syntaxtype.attribute.name>@inlinable</syntaxtype.attribute.name></syntaxtype.attribute.builtin> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>hash</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>into</decl.var.parameter.argument_label> <decl.var.parameter.name>hasher</decl.var.parameter.name>: inout <decl.var.parameter.type><ref.struct usr=\"s:s6HasherV\">Hasher</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.method.instance>",
key.entities: [
@@ -7262,7 +7264,7 @@
key.kind: source.lang.swift.decl.var.local,
key.keyword: "into",
key.name: "hasher",
- key.offset: 7666,
+ key.offset: 7653,
key.length: 6
}
]
@@ -7272,7 +7274,7 @@
key.name: "!=(_:_:)",
key.usr: "s:SQsE2neoiySbx_xtFZ::SYNTHESIZED::c:@E@ABAuthorizationStatus",
key.original_usr: "s:SQsE2neoiySbx_xtFZ",
- key.offset: 7679,
+ key.offset: 7666,
key.length: 83,
key.fully_annotated_decl: "<decl.function.operator.infix><syntaxtype.keyword>static</syntaxtype.keyword> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>!= </decl.name>(<decl.var.parameter><decl.var.parameter.name>lhs</decl.var.parameter.name>: <decl.var.parameter.type><ref.enum usr=\"c:@E@ABAuthorizationStatus\">ABAuthorizationStatus</ref.enum></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.name>rhs</decl.var.parameter.name>: <decl.var.parameter.type><ref.enum usr=\"c:@E@ABAuthorizationStatus\">ABAuthorizationStatus</ref.enum></decl.var.parameter.type></decl.var.parameter>) -> <decl.function.returntype><ref.struct usr=\"s:Sb\">Bool</ref.struct></decl.function.returntype></decl.function.operator.infix>",
key.entities: [
@@ -7280,14 +7282,14 @@
key.kind: source.lang.swift.decl.var.local,
key.keyword: "_",
key.name: "lhs",
- key.offset: 7702,
+ key.offset: 7689,
key.length: 21
},
{
key.kind: source.lang.swift.decl.var.local,
key.keyword: "_",
key.name: "rhs",
- key.offset: 7732,
+ key.offset: 7719,
key.length: 21
}
]
@@ -7306,7 +7308,7 @@
key.kind: source.lang.swift.decl.function.free,
key.name: "fooSubFunc1(_:)",
key.usr: "c:@F@fooSubFunc1",
- key.offset: 7765,
+ key.offset: 7752,
key.length: 37,
key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooSubFunc1</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>a</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.parameter.type></decl.var.parameter>) -> <decl.function.returntype><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.function.returntype></decl.function.free>",
key.entities: [
@@ -7314,7 +7316,7 @@
key.kind: source.lang.swift.decl.var.local,
key.keyword: "_",
key.name: "a",
- key.offset: 7787,
+ key.offset: 7774,
key.length: 5
}
],
@@ -7324,7 +7326,7 @@
key.kind: source.lang.swift.decl.struct,
key.name: "FooSubEnum1",
key.usr: "c:@E@FooSubEnum1",
- key.offset: 7803,
+ key.offset: 7790,
key.length: 214,
key.fully_annotated_decl: "<decl.struct><syntaxtype.keyword>struct</syntaxtype.keyword> <decl.name>FooSubEnum1</decl.name> : <ref.protocol usr=\"s:SQ\">Equatable</ref.protocol>, <ref.protocol usr=\"s:SY\">RawRepresentable</ref.protocol></decl.struct>",
key.conforms: [
@@ -7344,7 +7346,7 @@
key.kind: source.lang.swift.decl.function.constructor,
key.name: "init(_:)",
key.usr: "s:So11FooSubEnum1VyABs6UInt32Vcfc",
- key.offset: 7859,
+ key.offset: 7846,
key.length: 24,
key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>rawValue</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:s6UInt32V\">UInt32</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>",
key.entities: [
@@ -7352,7 +7354,7 @@
key.kind: source.lang.swift.decl.var.local,
key.keyword: "_",
key.name: "rawValue",
- key.offset: 7876,
+ key.offset: 7863,
key.length: 6
}
]
@@ -7361,7 +7363,7 @@
key.kind: source.lang.swift.decl.function.constructor,
key.name: "init(rawValue:)",
key.usr: "s:So11FooSubEnum1V8rawValueABs6UInt32V_tcfc",
- key.offset: 7889,
+ key.offset: 7876,
key.length: 31,
key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.argument_label>rawValue</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr=\"s:s6UInt32V\">UInt32</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>",
key.entities: [
@@ -7369,7 +7371,7 @@
key.kind: source.lang.swift.decl.var.local,
key.keyword: "rawValue",
key.name: "rawValue",
- key.offset: 7913,
+ key.offset: 7900,
key.length: 6
}
]
@@ -7378,7 +7380,7 @@
key.kind: source.lang.swift.decl.var.instance,
key.name: "rawValue",
key.usr: "s:So11FooSubEnum1V8rawValues6UInt32Vvp",
- key.offset: 7926,
+ key.offset: 7913,
key.length: 20,
key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>rawValue</decl.name>: <decl.var.type><ref.struct usr=\"s:s6UInt32V\">UInt32</ref.struct></decl.var.type></decl.var.instance>"
},
@@ -7387,7 +7389,7 @@
key.name: "!=(_:_:)",
key.usr: "s:SQsE2neoiySbx_xtFZ::SYNTHESIZED::c:@E@FooSubEnum1",
key.original_usr: "s:SQsE2neoiySbx_xtFZ",
- key.offset: 7952,
+ key.offset: 7939,
key.length: 63,
key.fully_annotated_decl: "<decl.function.operator.infix><syntaxtype.keyword>static</syntaxtype.keyword> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>!= </decl.name>(<decl.var.parameter><decl.var.parameter.name>lhs</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooSubEnum1\">FooSubEnum1</ref.struct></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.name>rhs</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooSubEnum1\">FooSubEnum1</ref.struct></decl.var.parameter.type></decl.var.parameter>) -> <decl.function.returntype><ref.struct usr=\"s:Sb\">Bool</ref.struct></decl.function.returntype></decl.function.operator.infix>",
key.entities: [
@@ -7395,14 +7397,14 @@
key.kind: source.lang.swift.decl.var.local,
key.keyword: "_",
key.name: "lhs",
- key.offset: 7975,
+ key.offset: 7962,
key.length: 11
},
{
key.kind: source.lang.swift.decl.var.local,
key.keyword: "_",
key.name: "rhs",
- key.offset: 7995,
+ key.offset: 7982,
key.length: 11
}
]
@@ -7414,7 +7416,7 @@
key.kind: source.lang.swift.decl.var.global,
key.name: "FooSubEnum1X",
key.usr: "c:@E@FooSubEnum1@FooSubEnum1X",
- key.offset: 8018,
+ key.offset: 8005,
key.length: 37,
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FooSubEnum1X</decl.name>: <decl.var.type><ref.struct usr=\"c:@E@FooSubEnum1\">FooSubEnum1</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>",
key.modulename: "Foo.FooSub"
@@ -7423,7 +7425,7 @@
key.kind: source.lang.swift.decl.var.global,
key.name: "FooSubEnum1Y",
key.usr: "c:@E@FooSubEnum1@FooSubEnum1Y",
- key.offset: 8056,
+ key.offset: 8043,
key.length: 37,
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FooSubEnum1Y</decl.name>: <decl.var.type><ref.struct usr=\"c:@E@FooSubEnum1\">FooSubEnum1</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>",
key.modulename: "Foo.FooSub"
@@ -7432,7 +7434,7 @@
key.kind: source.lang.swift.decl.var.global,
key.name: "FooSubUnnamedEnumeratorA1",
key.usr: "c:@Ea@FooSubUnnamedEnumeratorA1@FooSubUnnamedEnumeratorA1",
- key.offset: 8094,
+ key.offset: 8081,
key.length: 42,
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FooSubUnnamedEnumeratorA1</decl.name>: <decl.var.type><ref.struct usr=\"s:Si\">Int</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>",
key.modulename: "Foo.FooSub"
diff --git a/test/SourceKit/DocSupport/doc_swift_module.swift.response b/test/SourceKit/DocSupport/doc_swift_module.swift.response
index 6abdd9a..cc0ffc4 100644
--- a/test/SourceKit/DocSupport/doc_swift_module.swift.response
+++ b/test/SourceKit/DocSupport/doc_swift_module.swift.response
@@ -1874,6 +1874,7 @@
],
key.offset: 427,
key.length: 187,
+ key.fully_annotated_generic_signature: "<<decl.generic_type_param usr=\"s:SYsSHRzSH8RawValueSYRpzrlE4Selfxmfp\"><decl.generic_type_param.name>Self</decl.generic_type_param.name></decl.generic_type_param> <syntaxtype.keyword>where</syntaxtype.keyword> <decl.generic_type_requirement><ref.generic_type_param usr=\"s:SYsSHRzSH8RawValueSYRpzrlE4Selfxmfp\">Self</ref.generic_type_param> : <ref.protocol usr=\"s:SH\">Hashable</ref.protocol></decl.generic_type_requirement>, <decl.generic_type_requirement><ref.generic_type_param usr=\"s:SYsSHRzSH8RawValueSYRpzrlE4Selfxmfp\">Self</ref.generic_type_param> : <ref.protocol usr=\"s:SY\">RawRepresentable</ref.protocol></decl.generic_type_requirement>, <decl.generic_type_requirement><ref.generic_type_param usr=\"s:SYsSHRzSH8RawValueSYRpzrlE4Selfxmfp\">Self</ref.generic_type_param>.RawValue : <ref.protocol usr=\"s:SH\">Hashable</ref.protocol></decl.generic_type_requirement>>",
key.extends: {
key.kind: source.lang.swift.ref.enum,
key.name: "C1Cases",
@@ -2236,6 +2237,7 @@
key.kind: source.lang.swift.decl.extension.protocol,
key.offset: 1258,
key.length: 53,
+ key.fully_annotated_generic_signature: "<<decl.generic_type_param usr=\"s:4cake2P6P4Selfxmfp\"><decl.generic_type_param.name>Self</decl.generic_type_param.name></decl.generic_type_param> <syntaxtype.keyword>where</syntaxtype.keyword> <decl.generic_type_requirement><ref.generic_type_param usr=\"s:4cake2P6P4Selfxmfp\">Self</ref.generic_type_param> : <ref.protocol usr=\"s:4cake2P6P\">P6</ref.protocol></decl.generic_type_requirement>>",
key.extends: {
key.kind: source.lang.swift.ref.protocol,
key.name: "P6",
@@ -2298,6 +2300,7 @@
key.kind: source.lang.swift.decl.extension.protocol,
key.offset: 1417,
key.length: 79,
+ key.fully_annotated_generic_signature: "<<decl.generic_type_param usr=\"s:4cake4ProtP4Selfxmfp\"><decl.generic_type_param.name>Self</decl.generic_type_param.name></decl.generic_type_param> <syntaxtype.keyword>where</syntaxtype.keyword> <decl.generic_type_requirement><ref.generic_type_param usr=\"s:4cake4ProtP4Selfxmfp\">Self</ref.generic_type_param> : <ref.protocol usr=\"s:4cake4ProtP\">Prot</ref.protocol></decl.generic_type_requirement>>",
key.extends: {
key.kind: source.lang.swift.ref.protocol,
key.name: "Prot",
@@ -2341,6 +2344,7 @@
],
key.offset: 1498,
key.length: 63,
+ key.fully_annotated_generic_signature: "<<decl.generic_type_param usr=\"s:4cake4ProtPAASi7ElementRtzrlE4Selfxmfp\"><decl.generic_type_param.name>Self</decl.generic_type_param.name></decl.generic_type_param> <syntaxtype.keyword>where</syntaxtype.keyword> <decl.generic_type_requirement><ref.generic_type_param usr=\"s:4cake4ProtPAASi7ElementRtzrlE4Selfxmfp\">Self</ref.generic_type_param> : <ref.protocol usr=\"s:4cake4ProtP\">Prot</ref.protocol></decl.generic_type_requirement>, <decl.generic_type_requirement><ref.generic_type_param usr=\"s:4cake4ProtPAASi7ElementRtzrlE4Selfxmfp\">Self</ref.generic_type_param>.Element == <ref.struct usr=\"s:Si\">Int</ref.struct></decl.generic_type_requirement>>",
key.extends: {
key.kind: source.lang.swift.ref.protocol,
key.name: "Prot",
@@ -2431,6 +2435,7 @@
key.kind: source.lang.swift.decl.extension.enum,
key.offset: 1707,
key.length: 76,
+ key.fully_annotated_generic_signature: "<<decl.generic_type_param usr=\"s:SQ4Selfxmfp\"><decl.generic_type_param.name>Self</decl.generic_type_param.name></decl.generic_type_param> <syntaxtype.keyword>where</syntaxtype.keyword> <decl.generic_type_requirement><ref.generic_type_param usr=\"s:SQ4Selfxmfp\">Self</ref.generic_type_param> : <ref.protocol usr=\"s:SQ\">Equatable</ref.protocol></decl.generic_type_requirement>>",
key.extends: {
key.kind: source.lang.swift.ref.enum,
key.name: "SE",
@@ -2542,6 +2547,7 @@
key.kind: source.lang.swift.decl.extension.struct,
key.offset: 1921,
key.length: 56,
+ key.fully_annotated_generic_signature: "<<decl.generic_type_param usr=\"s:4cake2P6P4Selfxmfp\"><decl.generic_type_param.name>Self</decl.generic_type_param.name></decl.generic_type_param> <syntaxtype.keyword>where</syntaxtype.keyword> <decl.generic_type_requirement><ref.generic_type_param usr=\"s:4cake2P6P4Selfxmfp\">Self</ref.generic_type_param> : <ref.protocol usr=\"s:4cake2P6P\">P6</ref.protocol></decl.generic_type_requirement>>",
key.extends: {
key.kind: source.lang.swift.ref.struct,
key.name: "S3",
diff --git a/test/SourceKit/DocSupport/doc_swift_module1.swift.response b/test/SourceKit/DocSupport/doc_swift_module1.swift.response
index 0b9a8ea..a4f9d04 100644
--- a/test/SourceKit/DocSupport/doc_swift_module1.swift.response
+++ b/test/SourceKit/DocSupport/doc_swift_module1.swift.response
@@ -742,6 +742,7 @@
key.kind: source.lang.swift.decl.extension.protocol,
key.offset: 160,
key.length: 35,
+ key.fully_annotated_generic_signature: "<<decl.generic_type_param usr=\"s:5cake19InitProtoP4Selfxmfp\"><decl.generic_type_param.name>Self</decl.generic_type_param.name></decl.generic_type_param> <syntaxtype.keyword>where</syntaxtype.keyword> <decl.generic_type_requirement><ref.generic_type_param usr=\"s:5cake19InitProtoP4Selfxmfp\">Self</ref.generic_type_param> : <ref.protocol usr=\"s:5cake19InitProtoP\">InitProto</ref.protocol></decl.generic_type_requirement>>",
key.extends: {
key.kind: source.lang.swift.ref.protocol,
key.name: "InitProto",
@@ -920,6 +921,7 @@
key.kind: source.lang.swift.decl.extension.protocol,
key.offset: 493,
key.length: 118,
+ key.fully_annotated_generic_signature: "<<decl.generic_type_param usr=\"s:5cake12P2P4Selfxmfp\"><decl.generic_type_param.name>Self</decl.generic_type_param.name></decl.generic_type_param> <syntaxtype.keyword>where</syntaxtype.keyword> <decl.generic_type_requirement><ref.generic_type_param usr=\"s:5cake12P2P4Selfxmfp\">Self</ref.generic_type_param> : <ref.protocol usr=\"s:5cake12P2P\">P2</ref.protocol></decl.generic_type_requirement>>",
key.extends: {
key.kind: source.lang.swift.ref.protocol,
key.name: "P2",
@@ -998,6 +1000,7 @@
],
key.offset: 613,
key.length: 58,
+ key.fully_annotated_generic_signature: "<<decl.generic_type_param usr=\"s:5cake12P2PA2A2P3RzrlE4Selfxmfp\"><decl.generic_type_param.name>Self</decl.generic_type_param.name></decl.generic_type_param> <syntaxtype.keyword>where</syntaxtype.keyword> <decl.generic_type_requirement><ref.generic_type_param usr=\"s:5cake12P2PA2A2P3RzrlE4Selfxmfp\">Self</ref.generic_type_param> : <ref.protocol usr=\"s:5cake12P2P\">P2</ref.protocol></decl.generic_type_requirement>, <decl.generic_type_requirement><ref.generic_type_param usr=\"s:5cake12P2PA2A2P3RzrlE4Selfxmfp\">Self</ref.generic_type_param> : <ref.protocol usr=\"s:5cake12P3P\">P3</ref.protocol></decl.generic_type_requirement>>",
key.extends: {
key.kind: source.lang.swift.ref.protocol,
key.name: "P2",
@@ -1050,6 +1053,7 @@
],
key.offset: 713,
key.length: 45,
+ key.fully_annotated_generic_signature: "<<decl.generic_type_param usr=\"s:SD3Keyxmfp\"><decl.generic_type_param.name>Key</decl.generic_type_param.name></decl.generic_type_param>, <decl.generic_type_param usr=\"s:SD5Valueq_mfp\"><decl.generic_type_param.name>Value</decl.generic_type_param.name></decl.generic_type_param> <syntaxtype.keyword>where</syntaxtype.keyword> <decl.generic_type_requirement>Key : <ref.protocol usr=\"s:SH\">Hashable</ref.protocol></decl.generic_type_requirement>>",
key.extends: {
key.kind: source.lang.swift.ref.struct,
key.name: "Keys",
@@ -1078,6 +1082,7 @@
],
key.offset: 760,
key.length: 60,
+ key.fully_annotated_generic_signature: "<<decl.generic_type_param usr=\"s:SD4KeysV5cake1AC2P1RzrlE3Keyxmfp\"><decl.generic_type_param.name>Key</decl.generic_type_param.name></decl.generic_type_param>, <decl.generic_type_param usr=\"s:SD4KeysV5cake1AC2P1RzrlE5Valueq_mfp\"><decl.generic_type_param.name>Value</decl.generic_type_param.name></decl.generic_type_param> <syntaxtype.keyword>where</syntaxtype.keyword> <decl.generic_type_requirement>Key : <ref.protocol usr=\"s:SH\">Hashable</ref.protocol></decl.generic_type_requirement>, <decl.generic_type_requirement>Key : <ref.protocol usr=\"s:5cake12P1P\">P1</ref.protocol></decl.generic_type_requirement>>",
key.extends: {
key.kind: source.lang.swift.ref.struct,
key.name: "Keys",
diff --git a/test/api-digester/Outputs/stability-stdlib-abi.swift.expected b/test/api-digester/Outputs/stability-stdlib-abi.swift.expected
index 6ba2fd6..1694783 100644
--- a/test/api-digester/Outputs/stability-stdlib-abi.swift.expected
+++ b/test/api-digester/Outputs/stability-stdlib-abi.swift.expected
@@ -359,8 +359,6 @@
Struct _DropWhileSequence has removed conformance to IteratorProtocol
Struct _DropWhileSequence has type witness type for Sequence.Iterator changing from _DropWhileSequence<τ_0_0> to DropWhileSequence<τ_0_0>.Iterator
Var Collection.lazy has been removed
-Var Dictionary.keys has declared type change from LazyMapCollection<Dictionary<τ_0_0, τ_0_1>, τ_0_0> to LazyMapSequence<Dictionary<τ_0_0, τ_0_1>, τ_0_0>
-Var Dictionary.values has declared type change from LazyMapCollection<Dictionary<τ_0_0, τ_0_1>, τ_0_1> to LazyMapSequence<Dictionary<τ_0_0, τ_0_1>, τ_0_1>
Var LazySequence._base has removed its setter
Var _DropWhileSequence._iterator has declared type change from τ_0_0 to τ_0_0.Iterator
Func Collection._preprocessingPass(_:) has been removed
@@ -545,3 +543,61 @@
Func _AbstractStringStorage.getOrComputeBreadcrumbs() has been removed
Func Sequence.reduce(into:_:) has parameter 0 changing from Default to Owned
+
+Constructor String.Index.init(_codeUnitOffset:) has been removed (deprecated)
+Constructor String.Index.init(_position:) has been removed (deprecated)
+Constructor String.init(_:) has been removed (deprecated)
+Constructor String.init(_:obsoletedInSwift4:) has been removed
+Constructor _ExpressibleByColorLiteral.init(colorLiteralRed:green:blue:alpha:) has been removed (deprecated)
+Func BinaryInteger.toIntMax() has been removed
+Func Dictionary.filter(_:obsoletedInSwift4:) has been removed
+Func FixedWidthInteger.unsafeAdding(_:) has been removed
+Func FixedWidthInteger.unsafeDivided(by:) has been removed
+Func FixedWidthInteger.unsafeMultiplied(by:) has been removed
+Func FixedWidthInteger.unsafeSubtracting(_:) has been removed
+Func FloatingPoint._fromBitPattern(_:) has been removed
+Func FloatingPoint._toBitPattern() has been removed
+Func FloatingPoint.abs(_:) has been removed (deprecated)
+Func FloatingPoint.add(_:) has been removed
+Func FloatingPoint.adding(_:) has been removed
+Func FloatingPoint.divide(by:) has been removed
+Func FloatingPoint.divided(by:) has been removed
+Func FloatingPoint.multiplied(by:) has been removed
+Func FloatingPoint.multiply(by:) has been removed
+Func FloatingPoint.negated() has been removed
+Func FloatingPoint.subtract(_:) has been removed
+Func FloatingPoint.subtracting(_:) has been removed
+Func Optional....(_:_:) has been removed
+Func Optional...<(_:_:) has been removed
+Func Set.filter(_:obsoletedInSwift4:) has been removed
+Func SignedNumeric.abs(_:) has been removed
+Func Strideable.+(_:_:) has been removed (deprecated)
+Func Strideable.+=(_:_:) has been removed (deprecated)
+Func Strideable.-(_:_:) has been removed (deprecated)
+Func Strideable.-=(_:_:) has been removed (deprecated)
+Func String.UTF16View.distance(from:to:) has been removed
+Func String.UTF16View.index(_:offsetBy:) has been removed
+Func String.UTF16View.index(after:) has been removed
+Func String.UTF8View.distance(from:to:) has been removed
+Func String.UTF8View.index(_:offsetBy:) has been removed
+Func String.UTF8View.index(after:) has been removed
+Func String.UnicodeScalarView.distance(from:to:) has been removed
+Func String.UnicodeScalarView.index(_:offsetBy:) has been removed
+Func String.UnicodeScalarView.index(after:) has been removed
+Func String.UnicodeScalarView.popFirst() has been removed (deprecated)
+Func String.popFirst() has been removed (deprecated)
+Func TextOutputStreamable.writeTo(_:) has been removed
+Func UnsignedInteger.toUIntMax() has been removed
+Protocol _BitwiseOperations has been removed
+Subscript String.UTF16View.subscript(_:) has been removed
+Subscript String.UTF8View.subscript(_:) has been removed
+Subscript String.UnicodeScalarView.subscript(_:) has been removed
+Subscript String.subscript(_:) has been removed
+Var BinaryFloatingPoint.NaN has been removed
+Var BinaryFloatingPoint.isSignaling has been removed
+Var BinaryFloatingPoint.quietNaN has been removed
+Var Dictionary.keys has been removed
+Var Dictionary.values has been removed
+Var FixedWidthInteger.allZeros has been removed (deprecated)
+Var String.Index._offset has been removed (deprecated)
+Var String.Index._utf16Index has been removed (deprecated)
diff --git a/test/decl/init/failable.swift b/test/decl/init/failable.swift
index d93e439..d678ff8 100644
--- a/test/decl/init/failable.swift
+++ b/test/decl/init/failable.swift
@@ -60,7 +60,7 @@
}
convenience init(forceNonfail: Int) {
- self.init(nonfail: forceNonfail)! // expected-error{{cannot force unwrap value of non-optional type '()'}} {{37-38=}}
+ self.init(nonfail: forceNonfail)! // expected-error{{cannot force unwrap value of non-optional type 'Sub'}} {{37-38=}}
}
init(nonfail2: Int) { // okay, traps on nil
diff --git a/test/decl/protocol/conforms/error_self_conformance.swift b/test/decl/protocol/conforms/error_self_conformance.swift
new file mode 100644
index 0000000..7293d02
--- /dev/null
+++ b/test/decl/protocol/conforms/error_self_conformance.swift
@@ -0,0 +1,22 @@
+// RUN: %target-typecheck-verify-swift
+
+func wantsError<T: Error>(_: T) {}
+
+func testSimple(error: Error) {
+ wantsError(error)
+}
+
+protocol ErrorRefinement : Error {}
+func testErrorRefinment(error: ErrorRefinement) {
+ wantsError(error) // expected-error {{protocol type 'ErrorRefinement' cannot conform to 'Error' because only concrete types can conform to protocols}}
+}
+
+protocol OtherProtocol {}
+func testErrorComposition(error: Error & OtherProtocol) {
+ wantsError(error) // expected-error {{protocol type 'Error & OtherProtocol' cannot conform to 'Error' because only concrete types can conform to protocols}}
+}
+
+class C {}
+func testErrorCompositionWithClass(error: Error & C) {
+ wantsError(error) // expected-error {{protocol type 'C & Error' cannot conform to 'Error' because only concrete types can conform to protocols}}
+}
diff --git a/test/stdlib/IntegerRenames4.swift b/test/stdlib/IntegerRenames4.swift
index b6603c4..dbc1b1f 100644
--- a/test/stdlib/IntegerRenames4.swift
+++ b/test/stdlib/IntegerRenames4.swift
@@ -21,14 +21,8 @@
let _: UIntMax = 0 // expected-error {{'UIntMax' has been renamed to 'UInt64'}}
}
-func integer<T : Integer>(x: T) {} // expected-error {{'Integer' has been renamed to 'BinaryInteger'}}
-func integerArithmetic<T : IntegerArithmetic>(x: T) {} // expected-error {{'IntegerArithmetic' has been renamed to 'BinaryInteger'}}
-func signedNumber<T : SignedNumber>(x: T) {} // expected-error {{Please use 'SignedNumeric & Comparable' instead.}}
-func absoluteValuable<T : AbsoluteValuable>(x: T) {} // expected-error {{Please use 'SignedNumeric & Comparable' instead.}}
-func _signedInteger<T : _SignedInteger>(x: T) {} // expected-error {{'_SignedInteger' has been renamed to 'SignedInteger'}}
-
func absolutaValuable<T : SignedNumeric & Comparable>(x: T) {
- _ = T.abs(x) // expected-error {{use the 'abs(_:)' free function}}
+ _ = T.abs(x) // expected-error {{type 'T' has no member 'abs'}}
}
func signedIntegerMaskingArithmetics<T : SignedInteger>(x: T) {
diff --git a/test/stdlib/StringCompatibilityDiagnostics.swift b/test/stdlib/StringCompatibilityDiagnostics.swift
index 46b0542..5a594f1 100644
--- a/test/stdlib/StringCompatibilityDiagnostics.swift
+++ b/test/stdlib/StringCompatibilityDiagnostics.swift
@@ -2,11 +2,6 @@
func testPopFirst() {
var str = "abc"
- _ = str.popFirst() // expected-error{{'popFirst()' is unavailable: Please use 'first', 'dropFirst()', or 'Substring.popFirst()'}}
- _ = str.characters.popFirst() // expected-error{{'characters' is unavailable: Please use String directly}}
- // expected-error@-1{{'popFirst()' is unavailable: Please use 'first', 'dropFirst()', or 'Substring.popFirst()'}}
- _ = str.unicodeScalars.popFirst() // expected-error{{'popFirst()' is unavailable: Please use 'first', 'dropFirst()', or 'Substring.UnicodeScalarView.popFirst()'}}
-
var charView: String.CharacterView // expected-error{{'CharacterView' is unavailable: Please use String directly}}
_ = str.characters // expected-error{{'characters' is unavailable: Please use String directly}}
dump(charView)
diff --git a/test/stdlib/StringCompatibilityDiagnostics4.swift b/test/stdlib/StringCompatibilityDiagnostics4.swift
index 0bcc8f8..fcd3665 100644
--- a/test/stdlib/StringCompatibilityDiagnostics4.swift
+++ b/test/stdlib/StringCompatibilityDiagnostics4.swift
@@ -2,12 +2,6 @@
func testPopFirst() {
var str = "abc"
- _ = str.popFirst() // expected-error{{'popFirst()' is unavailable: Please use 'first', 'dropFirst()', or 'Substring.popFirst()'}}
- _ = str.characters.popFirst() // expected-warning{{'characters' is deprecated: Please use String directly}}
- // expected-error@-1{{'popFirst()' is unavailable: Please use 'first', 'dropFirst()', or 'Substring.popFirst()'}}
- _ = str.popFirst() // expected-error{{'popFirst()' is unavailable: Please use 'first', 'dropFirst()', or 'Substring.popFirst()'}}
- _ = str.unicodeScalars.popFirst() // expected-error{{'popFirst()' is unavailable: Please use 'first', 'dropFirst()', or 'Substring.UnicodeScalarView.popFirst()'}}
-
var charView: String.CharacterView // expected-warning{{'CharacterView' is deprecated: Please use String directly}}
charView = str.characters // expected-warning{{'characters' is deprecated: Please use String directly}}
dump(charView)
@@ -22,7 +16,6 @@
dump(charSubView)
var _ = String(str.utf8) ?? "" // expected-warning{{left side of nil coalescing operator '??' has non-optional type 'String', so the right side is never used}}
- var _: String = String(str.utf8)! // expected-error{{'init(_:)' is unavailable: Please use non-failable String.init(_:UTF8View) instead}}
var _: String = String(str.utf8) // ok
}
diff --git a/tools/SourceKit/include/SourceKit/Core/LLVM.h b/tools/SourceKit/include/SourceKit/Core/LLVM.h
index 437d3bc..a5dc041 100644
--- a/tools/SourceKit/include/SourceKit/Core/LLVM.h
+++ b/tools/SourceKit/include/SourceKit/Core/LLVM.h
@@ -11,7 +11,7 @@
//===----------------------------------------------------------------------===//
//
/// \file
-/// \brief Forward declares and imports various common LLVM datatypes.
+/// Forward declares and imports various common LLVM datatypes.
///
//===----------------------------------------------------------------------===//
diff --git a/tools/SourceKit/include/SourceKit/Core/LangSupport.h b/tools/SourceKit/include/SourceKit/Core/LangSupport.h
index 811323c..eb659d1 100644
--- a/tools/SourceKit/include/SourceKit/Core/LangSupport.h
+++ b/tools/SourceKit/include/SourceKit/Core/LangSupport.h
@@ -398,6 +398,7 @@
llvm::SmallString<64> ProvideImplementationOfUSR;
llvm::SmallString<64> DocComment;
llvm::SmallString<64> FullyAnnotatedDecl;
+ llvm::SmallString<64> FullyAnnotatedGenericSig;
llvm::SmallString<64> LocalizationKey;
std::vector<DocGenericParam> GenericParams;
std::vector<std::string> GenericRequirements;
diff --git a/tools/SourceKit/include/SourceKit/Support/Logging.h b/tools/SourceKit/include/SourceKit/Support/Logging.h
index cf2d19f..662577b 100644
--- a/tools/SourceKit/include/SourceKit/Support/Logging.h
+++ b/tools/SourceKit/include/SourceKit/Support/Logging.h
@@ -31,7 +31,7 @@
typedef IntrusiveRefCntPtr<Logger> LogRef;
-/// \brief Collects logging output and writes it to stderr when it's destructed.
+/// Collects logging output and writes it to stderr when it's destructed.
/// Common use case:
/// \code
/// if (LogRef Log = Logger::make(__func__, Logger::Level::Warning)) {
@@ -41,15 +41,15 @@
class Logger : public llvm::RefCountedBase<Logger> {
public:
enum class Level : uint8_t {
- /// \brief No logging.
+ /// No logging.
None = 0,
- /// \brief Warning level.
+ /// Warning level.
Warning = 1,
- /// \brief Information level for high priority messages.
+ /// Information level for high priority messages.
InfoHighPrio = 2,
- /// \brief Information level for medium priority messages.
+ /// Information level for medium priority messages.
InfoMediumPrio = 3,
- /// \brief Information level for low priority messages.
+ /// Information level for low priority messages.
InfoLowPrio = 4
};
@@ -97,7 +97,7 @@
} // namespace SourceKit
-/// \brief Macros to automate common uses of Logger. Like this:
+/// Macros to automate common uses of Logger. Like this:
/// \code
/// LOG_FUNC_SECTION_WARN {
/// *Log << "blah";
diff --git a/tools/SourceKit/include/SourceKit/Support/UIdent.h b/tools/SourceKit/include/SourceKit/Support/UIdent.h
index 816bd8b..7a06de4 100644
--- a/tools/SourceKit/include/SourceKit/Support/UIdent.h
+++ b/tools/SourceKit/include/SourceKit/Support/UIdent.h
@@ -23,7 +23,7 @@
namespace SourceKit {
-/// \brief A string identifier that is uniqued for the process lifetime.
+/// A string identifier that is uniqued for the process lifetime.
/// The string identifier should not contain any spaces.
class UIdent {
void *Ptr = 0;
diff --git a/tools/SourceKit/lib/SwiftLang/CMakeLists.txt b/tools/SourceKit/lib/SwiftLang/CMakeLists.txt
index 1ce8356..25b0cee 100644
--- a/tools/SourceKit/lib/SwiftLang/CMakeLists.txt
+++ b/tools/SourceKit/lib/SwiftLang/CMakeLists.txt
@@ -9,7 +9,8 @@
SwiftLangSupport.cpp
SwiftSourceDocInfo.cpp
LINK_LIBS
- SourceKitCore swiftDriver swiftFrontend swiftClangImporter swiftIDE
+ SourceKitCore swiftDriver swiftFrontend
+ swiftDWARFImporter swiftClangImporter swiftIDE
swiftAST swiftMarkup swiftParse swiftParseSIL swiftSIL swiftSILGen
swiftSILOptimizer swiftIRGen swiftSema swiftBasic swiftSerialization
swiftSyntax swiftOption libcmark_static
diff --git a/tools/SourceKit/lib/SwiftLang/SwiftDocSupport.cpp b/tools/SourceKit/lib/SwiftLang/SwiftDocSupport.cpp
index bee4396..f401953 100644
--- a/tools/SourceKit/lib/SwiftLang/SwiftDocSupport.cpp
+++ b/tools/SourceKit/lib/SwiftLang/SwiftDocSupport.cpp
@@ -397,6 +397,14 @@
VD, SynthesizedTarget, OS);
else
SwiftLangSupport::printFullyAnnotatedDeclaration(VD, Type(), OS);
+ } else if (auto *E = dyn_cast<ExtensionDecl>(D)) {
+ if (auto *Sig = E->getGenericSignature()) {
+ // The extension under printing is potentially part of a synthesized
+ // extension. Thus it's hard to print the fully annotated decl. We
+ // need to at least print the generic signature here.
+ llvm::raw_svector_ostream OS(Info.FullyAnnotatedGenericSig);
+ SwiftLangSupport::printFullyAnnotatedGenericReq(Sig, OS);
+ }
}
}
diff --git a/tools/SourceKit/lib/SwiftLang/SwiftLangSupport.h b/tools/SourceKit/lib/SwiftLang/SwiftLangSupport.h
index 4e148ed..bac2d2c 100644
--- a/tools/SourceKit/lib/SwiftLang/SwiftLangSupport.h
+++ b/tools/SourceKit/lib/SwiftLang/SwiftLangSupport.h
@@ -41,6 +41,7 @@
class SourceFile;
class SILOptions;
class ValueDecl;
+ class GenericSignature;
enum class AccessorKind;
namespace syntax {
@@ -377,6 +378,9 @@
swift::TypeOrExtensionDecl Target,
llvm::raw_ostream &OS);
+ static void
+ printFullyAnnotatedGenericReq(const swift::GenericSignature *Sig,
+ llvm::raw_ostream &OS);
/// Tries to resolve the path to the real file-system path. If it fails it
/// returns the original path;
static std::string resolvePathSymlinks(StringRef FilePath);
diff --git a/tools/SourceKit/lib/SwiftLang/SwiftSourceDocInfo.cpp b/tools/SourceKit/lib/SwiftLang/SwiftSourceDocInfo.cpp
index 62bdd2e..8d7881c 100644
--- a/tools/SourceKit/lib/SwiftLang/SwiftSourceDocInfo.cpp
+++ b/tools/SourceKit/lib/SwiftLang/SwiftSourceDocInfo.cpp
@@ -20,6 +20,7 @@
#include "swift/AST/Decl.h"
#include "swift/AST/NameLookup.h"
#include "swift/AST/SwiftNameTranslation.h"
+#include "swift/AST/GenericSignature.h"
#include "swift/Basic/SourceManager.h"
#include "swift/Frontend/Frontend.h"
#include "swift/Frontend/PrintingDiagnosticConsumer.h"
@@ -431,6 +432,14 @@
VD->print(Printer, PO);
}
+void SwiftLangSupport::printFullyAnnotatedGenericReq(
+ const swift::GenericSignature *Sig, llvm::raw_ostream &OS) {
+ assert(Sig);
+ FullyAnnotatedDeclarationPrinter Printer(OS);
+ PrintOptions PO = PrintOptions::printQuickHelpDeclaration();
+ Sig->print(Printer, PO);
+}
+
void SwiftLangSupport::printFullyAnnotatedSynthesizedDeclaration(
const swift::ValueDecl *VD, TypeOrExtensionDecl Target,
llvm::raw_ostream &OS) {
diff --git a/tools/SourceKit/tools/sourcekitd/bin/XPC/Service/XPCService.cpp b/tools/SourceKit/tools/sourcekitd/bin/XPC/Service/XPCService.cpp
index 9f05d24..9c80853 100644
--- a/tools/SourceKit/tools/sourcekitd/bin/XPC/Service/XPCService.cpp
+++ b/tools/SourceKit/tools/sourcekitd/bin/XPC/Service/XPCService.cpp
@@ -57,7 +57,7 @@
}
namespace {
-/// \brief Associates sourcekitd_uid_t to a UIdent.
+/// Associates sourcekitd_uid_t to a UIdent.
class SKUIDToUIDMap {
typedef llvm::DenseMap<void *, UIdent> MapTy;
MapTy Map;
diff --git a/tools/SourceKit/tools/sourcekitd/include/sourcekitd/Internal.h b/tools/SourceKit/tools/sourcekitd/include/sourcekitd/Internal.h
index c91c4ab..6c2ac41 100644
--- a/tools/SourceKit/tools/sourcekitd/include/sourcekitd/Internal.h
+++ b/tools/SourceKit/tools/sourcekitd/include/sourcekitd/Internal.h
@@ -129,7 +129,7 @@
Optional<llvm::StringRef> getString(SourceKit::UIdent Key);
Optional<RequestDict> getDictionary(SourceKit::UIdent Key);
- /// \brief Populate the vector with an array of C strings.
+ /// Populate the vector with an array of C strings.
/// \param isOptional true if the key is optional. If false and the key is
/// missing, the function will return true to indicate an error.
/// \returns true if there is an error, like the key is not of an array type or
diff --git a/tools/SourceKit/tools/sourcekitd/include/sourcekitd/sourcekitd.h b/tools/SourceKit/tools/sourcekitd/include/sourcekitd/sourcekitd.h
index f99d30f..ab404b1 100644
--- a/tools/SourceKit/tools/sourcekitd/include/sourcekitd/sourcekitd.h
+++ b/tools/SourceKit/tools/sourcekitd/include/sourcekitd/sourcekitd.h
@@ -17,7 +17,7 @@
#include <stdint.h>
#include <stdbool.h>
-/// \brief The version constants for the sourcekitd API.
+/// The version constants for the sourcekitd API.
/// SOURCEKITD_VERSION_MINOR should increase when there are API additions.
/// SOURCEKITD_VERSION_MAJOR is intended for "major" source/ABI breaking
/// changes.
@@ -87,7 +87,7 @@
SOURCEKITD_BEGIN_DECLS
-/// \brief Initializes structures needed across the rest of the sourcekitd API.
+/// Initializes structures needed across the rest of the sourcekitd API.
///
/// Must be called before any other sourcekitd call.
/// Can be called multiple times as long as it is matched with a
@@ -100,7 +100,7 @@
void
sourcekitd_initialize(void);
-/// \brief Deallocates structures needed across the rest of the sourcekitd API.
+/// Deallocates structures needed across the rest of the sourcekitd API.
///
/// If there are response handlers still waiting for a response, they will
/// receive a SOURCEKITD_ERROR_REQUEST_CANCELLED response.
@@ -115,7 +115,7 @@
typedef void(^sourcekitd_interrupted_connection_handler_t)(void);
-/// \brief Sets the handler which should be called whenever the connection to
+/// Sets the handler which should be called whenever the connection to
/// SourceKit is interrupted.
///
/// The handler should reestablish any necessary state, such as re-opening any
@@ -133,7 +133,7 @@
#endif
-/// \brief A "unique identifier" utilized by the request/response protocol.
+/// A "unique identifier" utilized by the request/response protocol.
///
/// A \c sourcekitd_uid_t object is associated with a string and is uniqued for
/// the lifetime of the process. Its usefulness is in providing an "infinite
@@ -141,22 +141,22 @@
/// A \c sourcekitd_uid_t object remains valid even if the service crashes.
typedef struct sourcekitd_uid_s *sourcekitd_uid_t;
-/// \brief Create a \c sourcekitd_uid_t from a C string.
+/// Create a \c sourcekitd_uid_t from a C string.
SOURCEKITD_PUBLIC SOURCEKITD_NONNULL1 SOURCEKITD_WARN_RESULT
sourcekitd_uid_t
sourcekitd_uid_get_from_cstr(const char *string);
-/// \brief Create a \c sourcekitd_uid_t from a string buffer.
+/// Create a \c sourcekitd_uid_t from a string buffer.
SOURCEKITD_PUBLIC SOURCEKITD_NONNULL1 SOURCEKITD_WARN_RESULT
sourcekitd_uid_t
sourcekitd_uid_get_from_buf(const char *buf, size_t length);
-/// \brief Get the length of the string associated with a \c sourcekitd_uid_t.
+/// Get the length of the string associated with a \c sourcekitd_uid_t.
SOURCEKITD_PUBLIC SOURCEKITD_NONNULL1 SOURCEKITD_WARN_RESULT
size_t
sourcekitd_uid_get_length(sourcekitd_uid_t obj);
-/// \brief Get the C string pointer associated with a \c sourcekitd_uid_t.
+/// Get the C string pointer associated with a \c sourcekitd_uid_t.
SOURCEKITD_PUBLIC SOURCEKITD_NONNULL1 SOURCEKITD_WARN_RESULT
const char *
sourcekitd_uid_get_string_ptr(sourcekitd_uid_t obj);
@@ -165,7 +165,7 @@
///
/// @{
///
-/// \brief Used for constructing a request object.
+/// Used for constructing a request object.
typedef void *sourcekitd_object_t;
SOURCEKITD_PUBLIC SOURCEKITD_NONNULL1
@@ -255,7 +255,7 @@
sourcekitd_object_t
sourcekitd_request_uid_create(sourcekitd_uid_t uid);
-/// \brief Creates a request object by parsing the provided string in YAML
+/// Creates a request object by parsing the provided string in YAML
/// format.
///
/// \param yaml The string in YAML format.
@@ -269,13 +269,13 @@
sourcekitd_object_t
sourcekitd_request_create_from_yaml(const char *yaml, char **error);
-/// \brief Prints to stderr a string representation of the request object in
+/// Prints to stderr a string representation of the request object in
/// YAML format.
SOURCEKITD_PUBLIC SOURCEKITD_NONNULL1
void
sourcekitd_request_description_dump(sourcekitd_object_t obj);
-/// \brief Copies a string representation of the request object in YAML format.
+/// Copies a string representation of the request object in YAML format.
/// \returns A string representation of the request object. This string should
/// be disposed of with \c free when done.
SOURCEKITD_PUBLIC SOURCEKITD_NONNULL1
@@ -288,14 +288,14 @@
///
/// @{
-/// \brief The result of a request.
+/// The result of a request.
///
/// If the request failed \c sourcekitd_response_t will be an error response and
/// will contain information about the error, otherwise it will contain the
/// resulting values of the request.
typedef void *sourcekitd_response_t;
-/// \brief A value of the response object.
+/// A value of the response object.
///
/// Its lifetime is tied to the sourcekitd_response_t object that it came from.
typedef struct {
@@ -326,12 +326,12 @@
void
sourcekitd_response_dispose(sourcekitd_response_t obj);
-/// \brief Returns true if the given response is an error.
+/// Returns true if the given response is an error.
SOURCEKITD_PUBLIC SOURCEKITD_NONNULL_ALL SOURCEKITD_WARN_RESULT
bool
sourcekitd_response_is_error(sourcekitd_response_t obj);
-/// \brief Returns the error kind given a response error.
+/// Returns the error kind given a response error.
///
/// Passing a response object that is not an error will result in undefined
/// behavior.
@@ -339,7 +339,7 @@
sourcekitd_error_t
sourcekitd_response_error_get_kind(sourcekitd_response_t err);
-/// \brief Returns a C string of the error description.
+/// Returns a C string of the error description.
///
/// Passing a response object that is not an error will result in undefined
/// behavior.
@@ -347,7 +347,7 @@
const char *
sourcekitd_response_error_get_description(sourcekitd_response_t err);
-/// \brief Returns the value contained in the response.
+/// Returns the value contained in the response.
///
/// If the response is an error it will return a null variant.
SOURCEKITD_PUBLIC SOURCEKITD_NONNULL1 SOURCEKITD_WARN_RESULT
@@ -396,7 +396,7 @@
sourcekitd_uid_t key);
#if SOURCEKITD_HAS_BLOCKS
-/// \brief A block to be invoked for every key/value pair in the dictionary.
+/// A block to be invoked for every key/value pair in the dictionary.
///
/// \param key The current key in the iteration.
///
@@ -406,7 +406,7 @@
typedef bool (^sourcekitd_variant_dictionary_applier_t)(sourcekitd_uid_t key,
sourcekitd_variant_t value);
-/// \brief Invokes the given block for every key/value pair in the dictionary.
+/// Invokes the given block for every key/value pair in the dictionary.
///
/// \returns true to indicate that iteration of the dictionary completed
/// successfully. Iteration will only fail if the applier block returns false.
@@ -416,7 +416,7 @@
sourcekitd_variant_dictionary_applier_t applier);
#endif
-/// \brief A function to be invoked for every key/value pair in the dictionary.
+/// A function to be invoked for every key/value pair in the dictionary.
///
/// \param key The current key in the iteration.
///
@@ -427,7 +427,7 @@
sourcekitd_variant_t value,
void *context);
-/// \brief Invokes the given function for every key/value pair in the
+/// Invokes the given function for every key/value pair in the
/// dictionary.
///
/// \returns true to indicate that iteration of the dictionary completed
@@ -463,7 +463,7 @@
sourcekitd_variant_array_get_uid(sourcekitd_variant_t array, size_t index);
#if SOURCEKITD_HAS_BLOCKS
-/// \brief A block to be invoked for every value in the array.
+/// A block to be invoked for every value in the array.
///
/// \param index The current index in the iteration.
///
@@ -473,7 +473,7 @@
typedef bool (^sourcekitd_variant_array_applier_t)(size_t index,
sourcekitd_variant_t value);
-/// \brief Invokes the given block for every value in the array.
+/// Invokes the given block for every value in the array.
///
/// \returns true to indicate that iteration of the array completed
/// successfully. Iteration will only fail if the applier block returns false.
@@ -483,7 +483,7 @@
sourcekitd_variant_array_applier_t applier);
#endif
-/// \brief A function to be invoked for every value in the array.
+/// A function to be invoked for every value in the array.
///
/// \param index The current index in the iteration.
///
@@ -494,7 +494,7 @@
sourcekitd_variant_t value,
void *context);
-/// \brief Invokes the given function for every value in the array.
+/// Invokes the given function for every value in the array.
///
/// \returns true to indicate that iteration of the array completed
/// successfully. Iteration will only fail if the applier block returns false.
@@ -532,46 +532,46 @@
sourcekitd_uid_t
sourcekitd_variant_uid_get_value(sourcekitd_variant_t obj);
-/// \brief Prints to stderr a string representation of the response object in
+/// Prints to stderr a string representation of the response object in
/// YAML format.
SOURCEKITD_PUBLIC SOURCEKITD_NONNULL1
void
sourcekitd_response_description_dump(sourcekitd_response_t resp);
-/// \brief Prints to the given file descriptor a string representation of the
+/// Prints to the given file descriptor a string representation of the
/// response object.
SOURCEKITD_PUBLIC SOURCEKITD_NONNULL1
void
sourcekitd_response_description_dump_filedesc(sourcekitd_response_t resp,
int fd);
-/// \brief Copies a string representation of the response object in YAML format.
+/// Copies a string representation of the response object in YAML format.
/// \returns A string representation of the response object. This string should
/// be disposed of with \c free when done.
SOURCEKITD_PUBLIC SOURCEKITD_NONNULL1
char *
sourcekitd_response_description_copy(sourcekitd_response_t resp);
-/// \brief Prints to stderr a string representation of the variant object in
+/// Prints to stderr a string representation of the variant object in
/// YAML format.
SOURCEKITD_PUBLIC
void
sourcekitd_variant_description_dump(sourcekitd_variant_t obj);
-/// \brief Prints to the given file descriptor a string representation of the
+/// Prints to the given file descriptor a string representation of the
/// variant object.
SOURCEKITD_PUBLIC
void
sourcekitd_variant_description_dump_filedesc(sourcekitd_variant_t obj, int fd);
-/// \brief Copies a string representation of the variant object in YAML format.
+/// Copies a string representation of the variant object in YAML format.
/// \returns A string representation of the variant object. This string should
/// be disposed of with \c free when done.
SOURCEKITD_PUBLIC
char *
sourcekitd_variant_description_copy(sourcekitd_variant_t obj);
-/// \brief Copies a string representation of the variant object in JSON format.
+/// Copies a string representation of the variant object in JSON format.
/// \returns A string representation of the variant object. This string should
/// be disposed of with \c free when done.
SOURCEKITD_PUBLIC
@@ -580,7 +580,7 @@
/// @}
-/// \brief Invoke a request synchronously.
+/// Invoke a request synchronously.
///
/// The caller accepts ownership of the returned sourcekitd_response_t object
/// and should invoke \c sourcekitd_response_dispose on it when it is done with
@@ -589,17 +589,17 @@
sourcekitd_response_t
sourcekitd_send_request_sync(sourcekitd_object_t req);
-/// \brief Used to cancel a request that has been invoked asynchronously.
+/// Used to cancel a request that has been invoked asynchronously.
typedef void *sourcekitd_request_handle_t;
#if SOURCEKITD_HAS_BLOCKS
-/// \brief Receives the response of an asynchronous request or notification.
+/// Receives the response of an asynchronous request or notification.
///
/// The receiver accepts ownership of the response object and should invoke
/// \c sourcekitd_response_dispose on it when it is done with it.
typedef void (^sourcekitd_response_receiver_t)(sourcekitd_response_t resp);
-/// \brief Invoke a request asynchronously.
+/// Invoke a request asynchronously.
///
/// \param req the request object.
///
@@ -614,7 +614,7 @@
sourcekitd_response_receiver_t receiver);
#endif
-/// \brief Cancel a request using the associated request handle returned by
+/// Cancel a request using the associated request handle returned by
/// \c sourcekitd_send_request.
///
/// It is not guaranteed that invoking \c sourcekitd_cancel_request will cancel
@@ -629,7 +629,7 @@
#if SOURCEKITD_HAS_BLOCKS
-/// \brief Sets the handler which should be called to receive notifications.
+/// Sets the handler which should be called to receive notifications.
/// The block will be set to be executed in the main thread queue.
///
/// If the connection to SourceKit is interrupted the handler will receive an
diff --git a/tools/SourceKit/tools/sourcekitd/lib/API/DictionaryKeys.h b/tools/SourceKit/tools/sourcekitd/lib/API/DictionaryKeys.h
index 4a60d27..04606d8 100644
--- a/tools/SourceKit/tools/sourcekitd/lib/API/DictionaryKeys.h
+++ b/tools/SourceKit/tools/sourcekitd/lib/API/DictionaryKeys.h
@@ -22,7 +22,7 @@
#define KEY(NAME, CONTENT) extern SourceKit::UIdent Key##NAME;
#include "SourceKit/Core/ProtocolUIDs.def"
-/// \brief Used for determining the printing order of dictionary keys.
+/// Used for determining the printing order of dictionary keys.
bool compareDictKeys(SourceKit::UIdent LHS, SourceKit::UIdent RHS);
}
diff --git a/tools/SourceKit/tools/sourcekitd/lib/API/Requests.cpp b/tools/SourceKit/tools/sourcekitd/lib/API/Requests.cpp
index ef4332e..40baa90 100644
--- a/tools/SourceKit/tools/sourcekitd/lib/API/Requests.cpp
+++ b/tools/SourceKit/tools/sourcekitd/lib/API/Requests.cpp
@@ -1410,6 +1410,8 @@
Elem.set(KeyDocFullAsXML, Info.DocComment);
if (!Info.FullyAnnotatedDecl.empty())
Elem.set(KeyFullyAnnotatedDecl, Info.FullyAnnotatedDecl);
+ if (!Info.FullyAnnotatedGenericSig.empty())
+ Elem.set(KeyFullyAnnotatedGenericSignature, Info.FullyAnnotatedGenericSig);
if (!Info.LocalizationKey.empty())
Elem.set(KeyLocalizationKey, Info.LocalizationKey);
diff --git a/tools/SourceKit/tools/sourcekitd/lib/API/sourcekitdAPI-Common.cpp b/tools/SourceKit/tools/sourcekitd/lib/API/sourcekitdAPI-Common.cpp
index d3a234c..7b0cd6e 100644
--- a/tools/SourceKit/tools/sourcekitd/lib/API/sourcekitdAPI-Common.cpp
+++ b/tools/SourceKit/tools/sourcekitd/lib/API/sourcekitdAPI-Common.cpp
@@ -35,7 +35,7 @@
#define KEY(NAME, CONTENT) UIdent sourcekitd::Key##NAME(CONTENT);
#include "SourceKit/Core/ProtocolUIDs.def"
-/// \brief Order for the keys to use when emitting the debug description of
+/// Order for the keys to use when emitting the debug description of
/// dictionaries.
static UIdent *OrderedKeys[] = {
#define KEY(NAME, CONTENT) &Key##NAME,
diff --git a/tools/driver/api_notes.cpp b/tools/driver/api_notes.cpp
index 8e0c57e..57f85bb 100644
--- a/tools/driver/api_notes.cpp
+++ b/tools/driver/api_notes.cpp
@@ -11,7 +11,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief This is the YAML to binary converter for API notes.
+/// This is the YAML to binary converter for API notes.
///
//===----------------------------------------------------------------------===//
#include "clang/APINotes/APINotesYAMLCompiler.h"
diff --git a/tools/lldb-moduleimport-test/CMakeLists.txt b/tools/lldb-moduleimport-test/CMakeLists.txt
index 3256cbc..62811e1 100644
--- a/tools/lldb-moduleimport-test/CMakeLists.txt
+++ b/tools/lldb-moduleimport-test/CMakeLists.txt
@@ -6,5 +6,6 @@
PRIVATE
swiftASTSectionImporter
swiftClangImporter
+ swiftDWARFImporter
swiftFrontend)
diff --git a/tools/lldb-moduleimport-test/lldb-moduleimport-test.cpp b/tools/lldb-moduleimport-test/lldb-moduleimport-test.cpp
index db9ac84..5627cf4 100644
--- a/tools/lldb-moduleimport-test/lldb-moduleimport-test.cpp
+++ b/tools/lldb-moduleimport-test/lldb-moduleimport-test.cpp
@@ -212,7 +212,12 @@
desc("The directory that holds the compiler resource files"),
cat(Visible));
+ opt<bool> EnableDWARFImporter(
+ "enable-dwarf-importer",
+ desc("Import with LangOptions.EnableDWARFImporter = true"), cat(Visible));
+
ParseCommandLineOptions(argc, argv);
+
// Unregister our options so they don't interfere with the command line
// parsing in CodeGen/BackendUtil.cpp.
ModuleCachePath.removeArgument();
@@ -273,6 +278,7 @@
Invocation.setModuleName("lldbtest");
Invocation.getClangImporterOptions().ModuleCachePath = ModuleCachePath;
+ Invocation.getLangOptions().EnableDWARFImporter = EnableDWARFImporter;
if (!ResourceDir.empty()) {
Invocation.setRuntimeResourcePath(ResourceDir);
diff --git a/tools/sil-func-extractor/CMakeLists.txt b/tools/sil-func-extractor/CMakeLists.txt
index 491b70c..5fbffe7 100644
--- a/tools/sil-func-extractor/CMakeLists.txt
+++ b/tools/sil-func-extractor/CMakeLists.txt
@@ -5,6 +5,7 @@
target_link_libraries(sil-func-extractor
PRIVATE
swiftClangImporter
+ swiftDWARFImporter
swiftFrontend
swiftSerialization
swiftSILGen
diff --git a/tools/sil-nm/CMakeLists.txt b/tools/sil-nm/CMakeLists.txt
index 851f4ae..0a7838a 100644
--- a/tools/sil-nm/CMakeLists.txt
+++ b/tools/sil-nm/CMakeLists.txt
@@ -5,6 +5,7 @@
target_link_libraries(sil-nm
PRIVATE
swiftClangImporter
+ swiftDWARFImporter
swiftFrontend
swiftSerialization
swiftSILGen
diff --git a/tools/sil-passpipeline-dumper/CMakeLists.txt b/tools/sil-passpipeline-dumper/CMakeLists.txt
index a968e53..5fa881f 100644
--- a/tools/sil-passpipeline-dumper/CMakeLists.txt
+++ b/tools/sil-passpipeline-dumper/CMakeLists.txt
@@ -5,6 +5,7 @@
target_link_libraries(sil-passpipeline-dumper
PRIVATE
swiftClangImporter
+ swiftDWARFImporter
swiftFrontend
swiftSerialization
swiftSILGen
diff --git a/tools/swift-api-digester/ModuleDiagsConsumer.h b/tools/swift-api-digester/ModuleDiagsConsumer.h
index 83de957..5ef90d1 100644
--- a/tools/swift-api-digester/ModuleDiagsConsumer.h
+++ b/tools/swift-api-digester/ModuleDiagsConsumer.h
@@ -30,7 +30,7 @@
namespace ide {
namespace api {
-/// \brief Diagnostic consumer that displays diagnostics to standard output.
+/// Diagnostic consumer that displays diagnostics to standard output.
class ModuleDifferDiagsConsumer: public PrintingDiagnosticConsumer {
llvm::raw_ostream &OS;
bool DiagnoseModuleDiff;
diff --git a/unittests/Basic/BlotMapVectorTest.cpp b/unittests/Basic/BlotMapVectorTest.cpp
index ae06980..4e07d78 100644
--- a/unittests/Basic/BlotMapVectorTest.cpp
+++ b/unittests/Basic/BlotMapVectorTest.cpp
@@ -78,7 +78,7 @@
Lazy<CtorTesterSet> ConstructedTesters;
-/// \brief A test class that tries to check that construction and destruction
+/// A test class that tries to check that construction and destruction
/// occur correctly.
class CtorTester {
friend class CtorTesterSet;
diff --git a/unittests/Parse/CMakeLists.txt b/unittests/Parse/CMakeLists.txt
index d94b310..d762d4b 100644
--- a/unittests/Parse/CMakeLists.txt
+++ b/unittests/Parse/CMakeLists.txt
@@ -10,6 +10,7 @@
PRIVATE
swiftSIL
swiftClangImporter
+ swiftDWARFImporter
swiftParse
swiftAST
# FIXME: Sema must go last because of circular dependencies with AST.
diff --git a/utils/gyb_sourcekit_support/UIDs.py b/utils/gyb_sourcekit_support/UIDs.py
index 83f12b1..789ef1b 100644
--- a/utils/gyb_sourcekit_support/UIDs.py
+++ b/utils/gyb_sourcekit_support/UIDs.py
@@ -59,6 +59,8 @@
KEY('SelectorName', 'key.selector_name'),
KEY('AnnotatedDecl', 'key.annotated_decl'),
KEY('FullyAnnotatedDecl', 'key.fully_annotated_decl'),
+ KEY('FullyAnnotatedGenericSignature',
+ 'key.fully_annotated_generic_signature'),
KEY('DocBrief', 'key.doc.brief'),
KEY('Context', 'key.context'),
KEY('ModuleImportDepth', 'key.moduleimportdepth'),
diff --git a/utils/incrparse/validate_parse.py b/utils/incrparse/validate_parse.py
index f7c38a9..f61999d 100755
--- a/utils/incrparse/validate_parse.py
+++ b/utils/incrparse/validate_parse.py
@@ -3,12 +3,11 @@
from __future__ import print_function
import argparse
+import difflib
import os
-import subprocess
import sys
-from test_util import TestFailedError, run_command, \
- serializeIncrParseMarkupFile
+from test_util import TestFailedError, serializeIncrParseMarkupFile
def main():
@@ -102,19 +101,17 @@
sys.exit(1)
# Check if the two syntax trees are the same
- try:
- run_command(
- [
- 'diff', '-u',
- incremental_serialized_file,
- post_edit_serialized_file
- ])
- except subprocess.CalledProcessError as e:
+ lines = difflib.unified_diff(open(incremental_serialized_file).readlines(),
+ open(post_edit_serialized_file).readlines(),
+ fromfile=incremental_serialized_file,
+ tofile=incremental_serialized_file)
+ diff = '\n'.join(line for line in lines)
+ if diff:
print('Test case "%s" of %s FAILed' % (test_case, test_file),
file=sys.stderr)
print('Syntax tree of incremental parsing does not match '
'from-scratch parsing of post-edit file:\n\n', file=sys.stderr)
- print(e.output, file=sys.stderr)
+ print(diff, file=sys.stderr)
sys.exit(1)
diff --git a/validation-test/Sema/wmo_verify_loaded.swift b/validation-test/Sema/wmo_verify_loaded.swift
index 090aa4e..01cc236 100644
--- a/validation-test/Sema/wmo_verify_loaded.swift
+++ b/validation-test/Sema/wmo_verify_loaded.swift
@@ -21,6 +21,6 @@
// NSPasteboardType.init(rawValue:)
// - just make sure it has a body.
// CHECK-LABEL: sil shared [transparent] [serializable] @$sSo16NSPasteboardTypea8rawValueABSS_tcfC : $@convention(method) (@owned String, @thin NSPasteboard.PasteboardType.Type) -> @owned NSPasteboard.PasteboardType {
-// CHECK: bb0(%0 : @owned $String, %1 : @trivial $@thin NSPasteboard.PasteboardType.Type):
+// CHECK: bb0(%0 : @owned $String, %1 : $@thin NSPasteboard.PasteboardType.Type):
// CHECK: return %{{.*}} : $NSPasteboard.PasteboardType
// CHECK-LABEL: } // end sil function '$sSo16NSPasteboardTypea8rawValueABSS_tcfC'
diff --git a/validation-test/stdlib/FixedPointDiagnostics.swift.gyb b/validation-test/stdlib/FixedPointDiagnostics.swift.gyb
index 164a162..dfdaf7f 100644
--- a/validation-test/stdlib/FixedPointDiagnostics.swift.gyb
+++ b/validation-test/stdlib/FixedPointDiagnostics.swift.gyb
@@ -87,23 +87,22 @@
typealias Stride = ${T}.Stride
_ = ${T}(1) + 0 // OK
_ = 0 + ${T}(1) // OK
- _ = ${T}(1) + Stride(0) // expected-error {{'+' is unavailable: Please use explicit type conversions or Strideable methods for mixed-type arithmetics.}}
- _ = Stride(1) + ${T}(0) // expected-error {{'+' is unavailable: Please use explicit type conversions or Strideable methods for mixed-type arithmetics.}}
- _ = ${T}(1) - Stride(0) // expected-error {{'-' is unavailable: Please use explicit type conversions or Strideable methods for mixed-type arithmetics.}}
+ _ = ${T}(1) + Stride(0) // expected-error {{}} expected-note {{}}
+ _ = Stride(1) + ${T}(0) // expected-error {{}} expected-note {{}}
+ _ = ${T}(1) - Stride(0) // expected-error {{}} expected-note {{}}
var x: ${T} = 0
x += 1 // OK
- x += Stride(1) // expected-error {{'+=' is unavailable: Please use explicit type conversions or Strideable methods for mixed-type arithmetics.}}
- x -= Stride(1) // expected-error {{'-=' is unavailable: Please use explicit type conversions or Strideable methods for mixed-type arithmetics.}}
+ x += Stride(1) // expected-error {{}} expected-note {{}}
+ x -= Stride(1) // expected-error {{}} expected-note {{}}
- // Terrible over-specific error, but at least disabled
- _ = (x - x) as Stride // expected-error {{'(@lvalue ${T}, @lvalue ${T}) -> ${T}' is not convertible to '(${T}, ${T}) -> ${T}'}}
+ _ = (x - x) as Stride // expected-error {{}}
//===------------------------------------------------------------------===//
// The following errors are different because they're not being
// disabled by the ambiguity trick.
//===------------------------------------------------------------------===//
- (x + x) as Stride // expected-error {{cannot convert value of type '${T}' to type 'Stride' (aka 'Int') in coercion}}
+ (x + x) as Stride // expected-error {{}}
Stride(1) - ${T}(0) // expected-error {{}} expected-note {{}}
// These tests are expected to start failing when we get improved diagnostics.
diff --git a/validation-test/stdlib/StringNormalization.swift b/validation-test/stdlib/StringNormalization.swift
index 3b820bf..1bd3f706 100644
--- a/validation-test/stdlib/StringNormalization.swift
+++ b/validation-test/stdlib/StringNormalization.swift
@@ -9,8 +9,16 @@
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
-// RUN: mkdir -p %t
-// RUN: %target-build-swift %s -o %t/a.out
+// RUN: %empty-directory(%t)
+// RUN: if [ %target-runtime == "objc" ]; \
+// RUN: then \
+// RUN: %target-clang -fobjc-arc %S/Inputs/NSSlowString/NSSlowString.m -c -o %t/NSSlowString.o && \
+// RUN: %target-build-swift -I %S/Inputs/NSSlowString/ %t/NSSlowString.o %s -o %t/a.out; \
+// RUN: else \
+// RUN: %target-build-swift %s -o %t/a.out; \
+// RUN: fi
+
+// RUN: %target-codesign %t/a.out
// RUN: %target-run %t/a.out %S/Inputs/NormalizationTest.txt
// REQUIRES: executable_test
// REQUIRES: objc_interop
@@ -19,6 +27,10 @@
import StdlibUnittest
import StdlibUnicodeUnittest
+#if _runtime(_ObjC)
+import NSSlowString
+#endif
+
private func expectEqualIterators(
label: String,
expected: [UInt8],
@@ -453,6 +465,18 @@
let codeUnits = test.1._nfcCodeUnits
expectEqual(test.0, codeUnits)
}
+#if _runtime(_ObjC)
+ tests.test("CodeUnitNormalizationTest#\(i)/Opaque")
+.skip(.custom({
+ if #available(macOS 10.14, iOS 12, watchOS 5, tvOS 12, *) { return false }
+ return true
+ }, reason: "NormalizationTest.txt requires Unicode 11"))
+.code {
+ let opaqueString = NSSlowString(string: test.1) as String
+ let codeUnits = opaqueString._nfcCodeUnits
+ expectEqual(test.0, codeUnits)
+ }
+#endif
}
runAllTests()