mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
[gardening] Fix accidental uses of \t
This commit is contained in:
@@ -35,8 +35,8 @@ We describe each in detail below:
|
||||
|
||||
Platform | Comment | Check Status
|
||||
------------ | ------- | ------------
|
||||
All supported platforms | @swift-ci Please smoke test | Swift Test Linux Platform (smoke test) <br> Swift Test OS X Platform (smoke test)
|
||||
All supported platforms | @swift-ci Please smoke test and merge | Swift Test Linux Platform (smoke test) <br> Swift Test OS X Platform (smoke test)
|
||||
All supported platforms | @swift-ci Please smoke test | Swift Test Linux Platform (smoke test)<br>Swift Test OS X Platform (smoke test)
|
||||
All supported platforms | @swift-ci Please smoke test and mere | Swift Test Linux Platform (smoke test)<br>Swift Test OS X Platform (smoke test)
|
||||
OS X platform | @swift-ci Please smoke test OS X platform | Swift Test OS X Platform (smoke test)
|
||||
Linux platform | @swift-ci Please smoke test Linux platform | Swift Test Linux Platform (smoke test)
|
||||
|
||||
@@ -66,14 +66,14 @@ A smoke test on Linux does the following:
|
||||
|
||||
Platform | Comment | Check Status
|
||||
------------ | ------- | ------------
|
||||
All supported platforms | @swift-ci Please test | Swift Test Linux Platform (smoke test)<br>Swift Test OS X Platform (smoke test)<br>Swift Test Linux Platform<br>Swift Test OS X Platform<br>
|
||||
All supported platforms | @swift-ci Please clean test | Swift Test Linux Platform (smoke test)<br>Swift Test OS X Platform (smoke test)<br>Swift Test Linux Platform<br>Swift Test OS X Platform<br>
|
||||
All supported platforms | @swift-ci Please test and merge | Swift Test Linux Platform (smoke test) <br> Swift Test OS X Platform (smoke test)<br> Swift Test Linux Platform <br>Swift Test OS X Platform
|
||||
OS X platform | @swift-ci Please test OS X platform | Swift Test OS X Platform (smoke test)<br>Swift Test OS X Platform
|
||||
All supported platforms | @swift-ci Please test | Swift Test Linux Platform (smoke test)<br>Swift Test OS X Platform (smoke test)<br>Swift Test Linux Platform<br>Swift Test OS X Platform<br>
|
||||
All supported platforms | @swift-ci Please clean test | Swift Test Linux Platform (smoke test)<br>Swift Test OS X Platform (smoke test)<br>Swift Test Linux Platform<br>Swift Test OS X Platform<br>
|
||||
All supported platforms | @swift-ci Please test and merge | Swift Test Linux Platform (smoke test)<br>Swift Test OS X Platform (smoke test)<br> Swift Test Linux Platform <br>Swift Test OS X Platform
|
||||
OS X platform | @swift-ci Please test OS X platform | Swift Test OS X Platform (smoke test)<br>Swift Test OS X Platform
|
||||
OS X platform | @swift-ci Please clean test OS X platform | Swift Test OS X Platform (smoke test)<br>Swift Test OS X Platform
|
||||
OS X platform | @swift-ci Please benchmark | Swift Benchmark on OS X Platform
|
||||
Linux platform | @swift-ci Please test Linux platform | Swift Test Linux Platform (smoke test) <br> Swift Test Linux Platform
|
||||
Linux platform | @swift-ci Please clean test Linux platform | Swift Test Linux Platform (smoke test) <br> Swift Test Linux Platform
|
||||
Linux platform | @swift-ci Please test Linux platform | Swift Test Linux Platform (smoke test)<br>Swift Test Linux Platform
|
||||
Linux platform | @swift-ci Please clean test Linux platform | Swift Test Linux Platform (smoke test)<br>Swift Test Linux Platform
|
||||
|
||||
The core principles of validation testing is that:
|
||||
|
||||
|
||||
@@ -560,16 +560,15 @@ RValue RValue::extractElement(unsigned n) && {
|
||||
assert(isComplete() && "rvalue is not complete");
|
||||
|
||||
CanTupleType tupleTy = dyn_cast<TupleType>(type);
|
||||
if (!tupleTy) {
|
||||
assert(n == 0);
|
||||
if (!tupleTy) {
|
||||
assert(n == 0);
|
||||
unsigned to = getRValueSize(type);
|
||||
assert(to == values.size());
|
||||
RValue element({llvm::makeArrayRef(values).slice(0, to), type});
|
||||
makeUsed();
|
||||
return element;
|
||||
assert(to == values.size());
|
||||
RValue element({llvm::makeArrayRef(values).slice(0, to), type});
|
||||
makeUsed();
|
||||
return element;
|
||||
}
|
||||
|
||||
|
||||
auto range = getElementRange(tupleTy, n);
|
||||
unsigned from = range.first, to = range.second;
|
||||
|
||||
@@ -583,12 +582,12 @@ void RValue::extractElements(SmallVectorImpl<RValue> &elements) && {
|
||||
assert(isComplete() && "rvalue is not complete");
|
||||
|
||||
CanTupleType tupleTy = dyn_cast<TupleType>(type);
|
||||
if (!tupleTy) {
|
||||
if (!tupleTy) {
|
||||
unsigned to = getRValueSize(type);
|
||||
assert(to == values.size());
|
||||
elements.push_back({llvm::makeArrayRef(values).slice(0, to), type});
|
||||
makeUsed();
|
||||
return;
|
||||
assert(to == values.size());
|
||||
elements.push_back({llvm::makeArrayRef(values).slice(0, to), type});
|
||||
makeUsed();
|
||||
return;
|
||||
}
|
||||
|
||||
unsigned from = 0;
|
||||
|
||||
@@ -2976,25 +2976,25 @@ namespace {
|
||||
if (arg.isRValue()) {
|
||||
if (CanTupleType substArgType =
|
||||
dyn_cast<TupleType>(arg.getSubstType())) {
|
||||
// The original type isn't necessarily a tuple.
|
||||
assert(origParamType.matchesTuple(substArgType));
|
||||
// The original type isn't necessarily a tuple.
|
||||
assert(origParamType.matchesTuple(substArgType));
|
||||
|
||||
auto loc = arg.getKnownRValueLocation();
|
||||
SmallVector<RValue, 4> elts;
|
||||
std::move(arg).asKnownRValue().extractElements(elts);
|
||||
for (auto i : indices(substArgType.getElementTypes())) {
|
||||
emit({ loc, std::move(elts[i]) },
|
||||
origParamType.getTupleElementType(i));
|
||||
}
|
||||
return;
|
||||
}
|
||||
auto loc = arg.getKnownRValueLocation();
|
||||
SmallVector<RValue, 4> elts;
|
||||
std::move(arg).asKnownRValue().extractElements(elts);
|
||||
for (auto i : indices(substArgType.getElementTypes())) {
|
||||
emit({ loc, std::move(elts[i]) },
|
||||
origParamType.getTupleElementType(i));
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
auto loc = arg.getKnownRValueLocation();
|
||||
SmallVector<RValue, 1> elts;
|
||||
std::move(arg).asKnownRValue().extractElements(elts);
|
||||
emit({ loc, std::move(elts[0]) },
|
||||
origParamType.getTupleElementType(0));
|
||||
return;
|
||||
auto loc = arg.getKnownRValueLocation();
|
||||
SmallVector<RValue, 1> elts;
|
||||
std::move(arg).asKnownRValue().extractElements(elts);
|
||||
emit({ loc, std::move(elts[0]) },
|
||||
origParamType.getTupleElementType(0));
|
||||
return;
|
||||
}
|
||||
|
||||
// Otherwise, we're working with an expression.
|
||||
|
||||
@@ -72,7 +72,7 @@ bool EpilogueARCContext::convergeDataflow() {
|
||||
BBSetOut = EpilogueARCBlockStates[*Iter]->BBSetIn;
|
||||
Iter = std::next(Iter);
|
||||
for (auto E = B->succ_end(); Iter != E; ++Iter) {
|
||||
BBSetOut &= EpilogueARCBlockStates[*Iter]->BBSetIn;
|
||||
BBSetOut &= EpilogueARCBlockStates[*Iter]->BBSetIn;
|
||||
}
|
||||
} else if (isExitBlock(B)) {
|
||||
// We set the BBSetOut for exit blocks.
|
||||
|
||||
@@ -2685,7 +2685,7 @@ bool swift::calleesAreStaticallyKnowable(SILModule &M, SILDeclRef Decl) {
|
||||
case Accessibility::Public:
|
||||
if (auto ctor = dyn_cast<ConstructorDecl>(AFD)) {
|
||||
if (ctor->isRequired())
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
SWIFT_FALLTHROUGH;
|
||||
case Accessibility::Internal:
|
||||
|
||||
@@ -86,7 +86,7 @@ static void deriveBodyRawRepresentable_raw(AbstractFunctionDecl *toRawDecl) {
|
||||
|
||||
for (auto elt : enumDecl->getAllElements()) {
|
||||
assert(elt->getTypeCheckedRawValueExpr() &&
|
||||
"Enum element has no literal - missing a call to checkEnumRawValues()");
|
||||
"Enum element has no literal - missing a call to checkEnumRawValues()");
|
||||
assert(elt->getTypeCheckedRawValueExpr()->getType()->isEqual(rawTy));
|
||||
}
|
||||
|
||||
@@ -188,7 +188,7 @@ deriveBodyRawRepresentable_init(AbstractFunctionDecl *initDecl) {
|
||||
|
||||
for (auto elt : enumDecl->getAllElements()) {
|
||||
assert(elt->getTypeCheckedRawValueExpr() &&
|
||||
"Enum element has no literal - missing a call to checkEnumRawValues()");
|
||||
"Enum element has no literal - missing a call to checkEnumRawValues()");
|
||||
assert(elt->getTypeCheckedRawValueExpr()->getType()->isEqual(rawTy));
|
||||
}
|
||||
|
||||
|
||||
@@ -242,7 +242,7 @@ void IterativeTypeChecker::processInheritedProtocols(
|
||||
if (inheritedProtocol == protocol ||
|
||||
inheritedProtocol->inheritsFrom(protocol)) {
|
||||
if (!diagnosedCircularity &&
|
||||
!protocol->isInheritedProtocolsValid()) {
|
||||
!protocol->isInheritedProtocolsValid()) {
|
||||
diagnose(protocol,
|
||||
diag::circular_protocol_def, protocol->getName().str())
|
||||
.fixItRemove(inherited.getSourceRange());
|
||||
|
||||
@@ -4019,8 +4019,8 @@ static void diagnoseConformanceFailure(TypeChecker &TC, Type T,
|
||||
// Special case: for enums with a raw type, explain that the failing
|
||||
// conformance to RawRepresentable was inferred.
|
||||
if (auto enumDecl = T->getEnumOrBoundGenericEnum()) {
|
||||
if (Proto->isSpecificProtocol(KnownProtocolKind::RawRepresentable) &&
|
||||
enumDecl->derivesProtocolConformance(Proto) && enumDecl->hasRawType()) {
|
||||
if (Proto->isSpecificProtocol(KnownProtocolKind::RawRepresentable) &&
|
||||
enumDecl->derivesProtocolConformance(Proto) && enumDecl->hasRawType()) {
|
||||
|
||||
TC.diagnose(enumDecl->getInherited()[0].getSourceRange().Start,
|
||||
diag::enum_raw_type_nonconforming_and_nonsynthable,
|
||||
|
||||
@@ -38,16 +38,16 @@ void __NSDataInvokeDeallocatorFree(void *mem, NSUInteger length) {
|
||||
static int __NSFileProtectionClassForOptions(NSUInteger options) {
|
||||
int result;
|
||||
switch (options & NSDataWritingFileProtectionMask) {
|
||||
case NSDataWritingFileProtectionComplete: // Class A
|
||||
case NSDataWritingFileProtectionComplete: // Class A
|
||||
result = 1;
|
||||
break;
|
||||
case NSDataWritingFileProtectionCompleteUnlessOpen: // Class B
|
||||
case NSDataWritingFileProtectionCompleteUnlessOpen: // Class B
|
||||
result = 2;
|
||||
break;
|
||||
case NSDataWritingFileProtectionCompleteUntilFirstUserAuthentication: // Class C
|
||||
case NSDataWritingFileProtectionCompleteUntilFirstUserAuthentication: // Class C
|
||||
result = 3;
|
||||
break;
|
||||
case NSDataWritingFileProtectionNone: // Class D
|
||||
case NSDataWritingFileProtectionNone: // Class D
|
||||
result = 4;
|
||||
break;
|
||||
default:
|
||||
|
||||
@@ -44,355 +44,355 @@
|
||||
#define OS_LOG_PRIVACY_OPTION_PUBLIC 2
|
||||
|
||||
enum os_trace_int_types_t {
|
||||
T_CHAR = -2,
|
||||
T_SHORT = -1,
|
||||
T_INT = 0,
|
||||
T_LONG = 1,
|
||||
T_LONGLONG = 2,
|
||||
T_SIZE = 3,
|
||||
T_INTMAX = 4,
|
||||
T_PTRDIFF = 5,
|
||||
T_CHAR = -2,
|
||||
T_SHORT = -1,
|
||||
T_INT = 0,
|
||||
T_LONG = 1,
|
||||
T_LONGLONG = 2,
|
||||
T_SIZE = 3,
|
||||
T_INTMAX = 4,
|
||||
T_PTRDIFF = 5,
|
||||
};
|
||||
|
||||
OS_ENUM(os_log_value_type, uint8_t,
|
||||
OS_LOG_BUFFER_VALUE_TYPE_SCALAR = 0,
|
||||
OS_LOG_BUFFER_VALUE_TYPE_COUNT = 1,
|
||||
OS_LOG_BUFFER_VALUE_TYPE_STRING = 2,
|
||||
OS_LOG_BUFFER_VALUE_TYPE_POINTER = 3,
|
||||
OS_LOG_BUFFER_VALUE_TYPE_OBJECT = 4,
|
||||
OS_LOG_BUFFER_VALUE_TYPE_SCALAR = 0,
|
||||
OS_LOG_BUFFER_VALUE_TYPE_COUNT = 1,
|
||||
OS_LOG_BUFFER_VALUE_TYPE_STRING = 2,
|
||||
OS_LOG_BUFFER_VALUE_TYPE_POINTER = 3,
|
||||
OS_LOG_BUFFER_VALUE_TYPE_OBJECT = 4,
|
||||
);
|
||||
|
||||
OS_ENUM(os_log_value_subtype, uint8_t,
|
||||
OS_LOG_BUFFER_VALUE_SUBTYPE_NONE = 0,
|
||||
OS_LOG_BUFFER_VALUE_SUBTYPE_INTEGER = 1,
|
||||
OS_LOG_BUFFER_VALUE_SUBTYPE_FLOAT = 2,
|
||||
OS_LOG_BUFFER_VALUE_SUBTYPE_NONE = 0,
|
||||
OS_LOG_BUFFER_VALUE_SUBTYPE_INTEGER = 1,
|
||||
OS_LOG_BUFFER_VALUE_SUBTYPE_FLOAT = 2,
|
||||
);
|
||||
|
||||
enum os_log_int_types_t {
|
||||
OST_CHAR = -2,
|
||||
OST_SHORT = -1,
|
||||
OST_INT = 0,
|
||||
OST_LONG = 1,
|
||||
OST_LONGLONG = 2,
|
||||
OST_SIZE = 3,
|
||||
OST_INTMAX = 4,
|
||||
OST_PTRDIFF = 5,
|
||||
OST_CHAR = -2,
|
||||
OST_SHORT = -1,
|
||||
OST_INT = 0,
|
||||
OST_LONG = 1,
|
||||
OST_LONGLONG = 2,
|
||||
OST_SIZE = 3,
|
||||
OST_INTMAX = 4,
|
||||
OST_PTRDIFF = 5,
|
||||
};
|
||||
|
||||
union os_log_format_types_u {
|
||||
uint16_t u16;
|
||||
uint32_t u32;
|
||||
uint64_t u64;
|
||||
char ch;
|
||||
short s;
|
||||
int i;
|
||||
void *p;
|
||||
char *pch;
|
||||
wchar_t wch;
|
||||
wchar_t *pwch;
|
||||
size_t z;
|
||||
intmax_t im;
|
||||
ptrdiff_t pd;
|
||||
long l;
|
||||
long long ll;
|
||||
double d;
|
||||
float f;
|
||||
long double ld;
|
||||
uint16_t u16;
|
||||
uint32_t u32;
|
||||
uint64_t u64;
|
||||
char ch;
|
||||
short s;
|
||||
int i;
|
||||
void *p;
|
||||
char *pch;
|
||||
wchar_t wch;
|
||||
wchar_t *pwch;
|
||||
size_t z;
|
||||
intmax_t im;
|
||||
ptrdiff_t pd;
|
||||
long l;
|
||||
long long ll;
|
||||
double d;
|
||||
float f;
|
||||
long double ld;
|
||||
};
|
||||
|
||||
typedef struct os_log_format_value_s {
|
||||
union os_log_format_types_u type;
|
||||
os_log_value_type_t ctype;
|
||||
uint16_t size;
|
||||
union os_log_format_types_u type;
|
||||
os_log_value_type_t ctype;
|
||||
uint16_t size;
|
||||
} *os_log_format_value_t;
|
||||
|
||||
typedef struct os_log_buffer_value_s {
|
||||
#define OS_LOG_CONTENT_FLAG_PRIVATE 0x1
|
||||
#define OS_LOG_CONTENT_FLAG_PUBLIC 0x2
|
||||
uint8_t flags : 4;
|
||||
os_log_value_type_t type : 4;
|
||||
uint8_t size;
|
||||
uint8_t value[];
|
||||
uint8_t flags : 4;
|
||||
os_log_value_type_t type : 4;
|
||||
uint8_t size;
|
||||
uint8_t value[];
|
||||
} *os_log_buffer_value_t;
|
||||
|
||||
typedef struct os_log_buffer_s {
|
||||
#define OS_LOG_BUFFER_HAS_PRIVATE 0x1
|
||||
#define OS_LOG_BUFFER_HAS_NON_SCALAR 0x2
|
||||
#define OS_LOG_BUFFER_MAX_SIZE 1024
|
||||
uint8_t flags;
|
||||
uint8_t arg_cnt;
|
||||
uint8_t content[];
|
||||
uint8_t flags;
|
||||
uint8_t arg_cnt;
|
||||
uint8_t content[];
|
||||
} *os_log_buffer_t;
|
||||
|
||||
typedef struct os_log_buffer_context_s {
|
||||
os_log_t log;
|
||||
os_log_buffer_t buffer;
|
||||
os_log_t log;
|
||||
os_log_buffer_t buffer;
|
||||
|
||||
// sizes and offsets
|
||||
uint16_t content_off; // offset into buffer->content
|
||||
uint16_t content_sz; // size not including the header
|
||||
uint8_t arg_idx;
|
||||
// sizes and offsets
|
||||
uint16_t content_off; // offset into buffer->content
|
||||
uint16_t content_sz; // size not including the header
|
||||
uint8_t arg_idx;
|
||||
} *os_log_buffer_context_t;
|
||||
|
||||
static bool
|
||||
_os_log_encode_arg(const void *arg, uint16_t arg_len, os_log_value_type_t ctype, uint8_t flags, os_log_buffer_context_t context)
|
||||
{
|
||||
os_log_buffer_value_t content = (os_log_buffer_value_t) &context->buffer->content[context->content_off];
|
||||
size_t content_sz = sizeof(*content) + arg_len;
|
||||
os_log_buffer_value_t content = (os_log_buffer_value_t) &context->buffer->content[context->content_off];
|
||||
size_t content_sz = sizeof(*content) + arg_len;
|
||||
|
||||
content->type = ctype;
|
||||
content->flags = flags;
|
||||
content->type = ctype;
|
||||
content->flags = flags;
|
||||
|
||||
switch (ctype) {
|
||||
case OS_LOG_BUFFER_VALUE_TYPE_COUNT:
|
||||
case OS_LOG_BUFFER_VALUE_TYPE_SCALAR:
|
||||
if ((context->content_off + content_sz) > context->content_sz) {
|
||||
return false;
|
||||
}
|
||||
switch (ctype) {
|
||||
case OS_LOG_BUFFER_VALUE_TYPE_COUNT:
|
||||
case OS_LOG_BUFFER_VALUE_TYPE_SCALAR:
|
||||
if ((context->content_off + content_sz) > context->content_sz) {
|
||||
return false;
|
||||
}
|
||||
|
||||
memcpy(content->value, arg, arg_len);
|
||||
content->size = arg_len;
|
||||
context->content_off += content_sz;
|
||||
break;
|
||||
memcpy(content->value, arg, arg_len);
|
||||
content->size = arg_len;
|
||||
context->content_off += content_sz;
|
||||
break;
|
||||
|
||||
case OS_LOG_BUFFER_VALUE_TYPE_STRING:
|
||||
case OS_LOG_BUFFER_VALUE_TYPE_POINTER:
|
||||
case OS_LOG_BUFFER_VALUE_TYPE_OBJECT:
|
||||
memcpy(content->value, arg, arg_len);
|
||||
context->buffer->flags |= OS_LOG_BUFFER_HAS_NON_SCALAR;
|
||||
content->size = arg_len;
|
||||
context->content_off += content_sz;
|
||||
break;
|
||||
case OS_LOG_BUFFER_VALUE_TYPE_STRING:
|
||||
case OS_LOG_BUFFER_VALUE_TYPE_POINTER:
|
||||
case OS_LOG_BUFFER_VALUE_TYPE_OBJECT:
|
||||
memcpy(content->value, arg, arg_len);
|
||||
context->buffer->flags |= OS_LOG_BUFFER_HAS_NON_SCALAR;
|
||||
content->size = arg_len;
|
||||
context->content_off += content_sz;
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if (content->flags & OS_LOG_CONTENT_FLAG_PRIVATE) {
|
||||
context->buffer->flags |= OS_LOG_BUFFER_HAS_PRIVATE;
|
||||
}
|
||||
if (content->flags & OS_LOG_CONTENT_FLAG_PRIVATE) {
|
||||
context->buffer->flags |= OS_LOG_BUFFER_HAS_PRIVATE;
|
||||
}
|
||||
|
||||
context->arg_idx++;
|
||||
context->arg_idx++;
|
||||
|
||||
return true;
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool
|
||||
_os_log_encode(const char *format, va_list args, int saved_errno, os_log_buffer_context_t context)
|
||||
{
|
||||
const char *percent = strchr(format, '%');
|
||||
const char *percent = strchr(format, '%');
|
||||
|
||||
while (percent != NULL) {
|
||||
++percent;
|
||||
if (percent[0] != '%') {
|
||||
struct os_log_format_value_s value;
|
||||
uint8_t flags = 0;
|
||||
int type = T_INT;
|
||||
bool long_double = false;
|
||||
int prec = 0;
|
||||
char ch;
|
||||
while (percent != NULL) {
|
||||
++percent;
|
||||
if (percent[0] != '%') {
|
||||
struct os_log_format_value_s value;
|
||||
uint8_t flags = 0;
|
||||
int type = T_INT;
|
||||
bool long_double = false;
|
||||
int prec = 0;
|
||||
char ch;
|
||||
|
||||
for (bool done = false; !done; percent++) {
|
||||
switch (ch = percent[0]) {
|
||||
/* type of types or other */
|
||||
case 'l': // longer
|
||||
type++;
|
||||
break;
|
||||
for (bool done = false; !done; percent++) {
|
||||
switch (ch = percent[0]) {
|
||||
/* type of types or other */
|
||||
case 'l': // longer
|
||||
type++;
|
||||
break;
|
||||
|
||||
case 'h': // shorter
|
||||
type--;
|
||||
break;
|
||||
case 'h': // shorter
|
||||
type--;
|
||||
break;
|
||||
|
||||
case 'z':
|
||||
type = T_SIZE;
|
||||
break;
|
||||
case 'z':
|
||||
type = T_SIZE;
|
||||
break;
|
||||
|
||||
case 'j':
|
||||
type = T_INTMAX;
|
||||
break;
|
||||
case 'j':
|
||||
type = T_INTMAX;
|
||||
break;
|
||||
|
||||
case 't':
|
||||
type = T_PTRDIFF;
|
||||
break;
|
||||
case 't':
|
||||
type = T_PTRDIFF;
|
||||
break;
|
||||
|
||||
case '.': // precision
|
||||
if ((percent[1]) == '*') {
|
||||
prec = va_arg(args, int);
|
||||
_os_log_encode_arg(&prec, sizeof(prec), OS_LOG_BUFFER_VALUE_TYPE_COUNT, flags, context);
|
||||
percent++;
|
||||
continue;
|
||||
} else {
|
||||
// we have to read the precision and do the right thing
|
||||
const char *fmt = percent + 1;
|
||||
prec = 0;
|
||||
while (isdigit(ch = *fmt++)) {
|
||||
prec = 10 * prec + (ch - '0');
|
||||
}
|
||||
case '.': // precision
|
||||
if ((percent[1]) == '*') {
|
||||
prec = va_arg(args, int);
|
||||
_os_log_encode_arg(&prec, sizeof(prec), OS_LOG_BUFFER_VALUE_TYPE_COUNT, flags, context);
|
||||
percent++;
|
||||
continue;
|
||||
} else {
|
||||
// we have to read the precision and do the right thing
|
||||
const char *fmt = percent + 1;
|
||||
prec = 0;
|
||||
while (isdigit(ch = *fmt++)) {
|
||||
prec = 10 * prec + (ch - '0');
|
||||
}
|
||||
|
||||
if (prec > 1024) {
|
||||
prec = 1024;
|
||||
}
|
||||
if (prec > 1024) {
|
||||
prec = 1024;
|
||||
}
|
||||
|
||||
_os_log_encode_arg(&prec, sizeof(prec), OS_LOG_BUFFER_VALUE_TYPE_COUNT, flags, context);
|
||||
}
|
||||
break;
|
||||
_os_log_encode_arg(&prec, sizeof(prec), OS_LOG_BUFFER_VALUE_TYPE_COUNT, flags, context);
|
||||
}
|
||||
break;
|
||||
|
||||
case '-': // left-align
|
||||
case '+': // force sign
|
||||
case ' ': // prefix non-negative with space
|
||||
case '#': // alternate
|
||||
case '\'': // group by thousands
|
||||
break;
|
||||
case '-': // left-align
|
||||
case '+': // force sign
|
||||
case ' ': // prefix non-negative with space
|
||||
case '#': // alternate
|
||||
case '\'': // group by thousands
|
||||
break;
|
||||
|
||||
case '{': // annotated symbols
|
||||
for (const char *curr2 = percent + 1; (ch = (*curr2)) != 0; curr2++) {
|
||||
if (ch == '}') {
|
||||
if (strncmp(percent + 1, "private", MIN(curr2 - percent - 1, 7)) == 0) {
|
||||
flags |= OS_LOG_CONTENT_FLAG_PRIVATE;
|
||||
}
|
||||
percent = curr2;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case '{': // annotated symbols
|
||||
for (const char *curr2 = percent + 1; (ch = (*curr2)) != 0; curr2++) {
|
||||
if (ch == '}') {
|
||||
if (strncmp(percent + 1, "private", MIN(curr2 - percent - 1, 7)) == 0) {
|
||||
flags |= OS_LOG_CONTENT_FLAG_PRIVATE;
|
||||
}
|
||||
percent = curr2;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
/* fixed types */
|
||||
case 'd': // integer
|
||||
case 'i': // integer
|
||||
case 'o': // octal
|
||||
case 'u': // unsigned
|
||||
case 'x': // hex
|
||||
case 'X': // upper-hex
|
||||
switch (type) {
|
||||
case T_CHAR:
|
||||
value.type.ch = va_arg(args, int);
|
||||
_os_log_encode_arg(&value.type.ch, sizeof(value.type.ch), OS_LOG_BUFFER_VALUE_TYPE_SCALAR, flags, context);
|
||||
break;
|
||||
/* fixed types */
|
||||
case 'd': // integer
|
||||
case 'i': // integer
|
||||
case 'o': // octal
|
||||
case 'u': // unsigned
|
||||
case 'x': // hex
|
||||
case 'X': // upper-hex
|
||||
switch (type) {
|
||||
case T_CHAR:
|
||||
value.type.ch = va_arg(args, int);
|
||||
_os_log_encode_arg(&value.type.ch, sizeof(value.type.ch), OS_LOG_BUFFER_VALUE_TYPE_SCALAR, flags, context);
|
||||
break;
|
||||
|
||||
case T_SHORT:
|
||||
value.type.s = va_arg(args, int);
|
||||
_os_log_encode_arg(&value.type.s, sizeof(value.type.s), OS_LOG_BUFFER_VALUE_TYPE_SCALAR, flags, context);
|
||||
break;
|
||||
case T_SHORT:
|
||||
value.type.s = va_arg(args, int);
|
||||
_os_log_encode_arg(&value.type.s, sizeof(value.type.s), OS_LOG_BUFFER_VALUE_TYPE_SCALAR, flags, context);
|
||||
break;
|
||||
|
||||
case T_INT:
|
||||
value.type.i = va_arg(args, int);
|
||||
_os_log_encode_arg(&value.type.i, sizeof(value.type.i), OS_LOG_BUFFER_VALUE_TYPE_SCALAR, flags, context);
|
||||
break;
|
||||
case T_INT:
|
||||
value.type.i = va_arg(args, int);
|
||||
_os_log_encode_arg(&value.type.i, sizeof(value.type.i), OS_LOG_BUFFER_VALUE_TYPE_SCALAR, flags, context);
|
||||
break;
|
||||
|
||||
case T_LONG:
|
||||
value.type.l = va_arg(args, long);
|
||||
_os_log_encode_arg(&value.type.l, sizeof(value.type.l), OS_LOG_BUFFER_VALUE_TYPE_SCALAR, flags, context);
|
||||
break;
|
||||
case T_LONG:
|
||||
value.type.l = va_arg(args, long);
|
||||
_os_log_encode_arg(&value.type.l, sizeof(value.type.l), OS_LOG_BUFFER_VALUE_TYPE_SCALAR, flags, context);
|
||||
break;
|
||||
|
||||
case T_LONGLONG:
|
||||
value.type.ll = va_arg(args, long long);
|
||||
_os_log_encode_arg(&value.type.ll, sizeof(value.type.ll), OS_LOG_BUFFER_VALUE_TYPE_SCALAR, flags, context);
|
||||
break;
|
||||
case T_LONGLONG:
|
||||
value.type.ll = va_arg(args, long long);
|
||||
_os_log_encode_arg(&value.type.ll, sizeof(value.type.ll), OS_LOG_BUFFER_VALUE_TYPE_SCALAR, flags, context);
|
||||
break;
|
||||
|
||||
case T_SIZE:
|
||||
value.type.z = va_arg(args, size_t);
|
||||
_os_log_encode_arg(&value.type.z, sizeof(value.type.z), OS_LOG_BUFFER_VALUE_TYPE_SCALAR, flags, context);
|
||||
break;
|
||||
case T_SIZE:
|
||||
value.type.z = va_arg(args, size_t);
|
||||
_os_log_encode_arg(&value.type.z, sizeof(value.type.z), OS_LOG_BUFFER_VALUE_TYPE_SCALAR, flags, context);
|
||||
break;
|
||||
|
||||
case T_INTMAX:
|
||||
value.type.im = va_arg(args, intmax_t);
|
||||
_os_log_encode_arg(&value.type.im, sizeof(value.type.im), OS_LOG_BUFFER_VALUE_TYPE_SCALAR, flags, context);
|
||||
break;
|
||||
case T_INTMAX:
|
||||
value.type.im = va_arg(args, intmax_t);
|
||||
_os_log_encode_arg(&value.type.im, sizeof(value.type.im), OS_LOG_BUFFER_VALUE_TYPE_SCALAR, flags, context);
|
||||
break;
|
||||
|
||||
case T_PTRDIFF:
|
||||
value.type.pd = va_arg(args, ptrdiff_t);
|
||||
_os_log_encode_arg(&value.type.pd, sizeof(value.type.pd), OS_LOG_BUFFER_VALUE_TYPE_SCALAR, flags, context);
|
||||
break;
|
||||
case T_PTRDIFF:
|
||||
value.type.pd = va_arg(args, ptrdiff_t);
|
||||
_os_log_encode_arg(&value.type.pd, sizeof(value.type.pd), OS_LOG_BUFFER_VALUE_TYPE_SCALAR, flags, context);
|
||||
break;
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
done = true;
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
done = true;
|
||||
break;
|
||||
|
||||
case 'P': // pointer data
|
||||
if (prec > 0) { // only encode a pointer if we have been given a length
|
||||
context->buffer->flags |= OS_LOG_BUFFER_HAS_NON_SCALAR;
|
||||
value.type.p = va_arg(args, void *);
|
||||
case 'P': // pointer data
|
||||
if (prec > 0) { // only encode a pointer if we have been given a length
|
||||
context->buffer->flags |= OS_LOG_BUFFER_HAS_NON_SCALAR;
|
||||
value.type.p = va_arg(args, void *);
|
||||
|
||||
_os_log_encode_arg(value.type.p, prec, OS_LOG_BUFFER_VALUE_TYPE_POINTER, flags, context);
|
||||
prec = 0;
|
||||
done = true;
|
||||
}
|
||||
break;
|
||||
_os_log_encode_arg(value.type.p, prec, OS_LOG_BUFFER_VALUE_TYPE_POINTER, flags, context);
|
||||
prec = 0;
|
||||
done = true;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'L': // long double
|
||||
long_double = true;
|
||||
break;
|
||||
case 'L': // long double
|
||||
long_double = true;
|
||||
break;
|
||||
|
||||
case 'a': case 'A': case 'e': case 'E': // floating types
|
||||
case 'f': case 'F': case 'g': case 'G':
|
||||
if (long_double) {
|
||||
value.type.ld = va_arg(args, long double);
|
||||
_os_log_encode_arg(&value.type.ld, sizeof(value.type.ld), OS_LOG_BUFFER_VALUE_TYPE_SCALAR, flags, context);
|
||||
} else {
|
||||
value.type.d = va_arg(args, double);
|
||||
_os_log_encode_arg(&value.type.d, sizeof(value.type.d), OS_LOG_BUFFER_VALUE_TYPE_SCALAR, flags, context);
|
||||
}
|
||||
done = true;
|
||||
break;
|
||||
case 'a': case 'A': case 'e': case 'E': // floating types
|
||||
case 'f': case 'F': case 'g': case 'G':
|
||||
if (long_double) {
|
||||
value.type.ld = va_arg(args, long double);
|
||||
_os_log_encode_arg(&value.type.ld, sizeof(value.type.ld), OS_LOG_BUFFER_VALUE_TYPE_SCALAR, flags, context);
|
||||
} else {
|
||||
value.type.d = va_arg(args, double);
|
||||
_os_log_encode_arg(&value.type.d, sizeof(value.type.d), OS_LOG_BUFFER_VALUE_TYPE_SCALAR, flags, context);
|
||||
}
|
||||
done = true;
|
||||
break;
|
||||
|
||||
case 'c': // char
|
||||
value.type.ch = va_arg(args, int);
|
||||
_os_log_encode_arg(&value.type.ch, sizeof(value.type.ch), OS_LOG_BUFFER_VALUE_TYPE_SCALAR, flags, context);
|
||||
done = true;
|
||||
break;
|
||||
case 'c': // char
|
||||
value.type.ch = va_arg(args, int);
|
||||
_os_log_encode_arg(&value.type.ch, sizeof(value.type.ch), OS_LOG_BUFFER_VALUE_TYPE_SCALAR, flags, context);
|
||||
done = true;
|
||||
break;
|
||||
|
||||
case 'C': // wide-char
|
||||
value.type.wch = va_arg(args, wint_t);
|
||||
_os_log_encode_arg(&value.type.wch, sizeof(value.type.wch), OS_LOG_BUFFER_VALUE_TYPE_SCALAR, flags, context);
|
||||
done = true;
|
||||
break;
|
||||
case 'C': // wide-char
|
||||
value.type.wch = va_arg(args, wint_t);
|
||||
_os_log_encode_arg(&value.type.wch, sizeof(value.type.wch), OS_LOG_BUFFER_VALUE_TYPE_SCALAR, flags, context);
|
||||
done = true;
|
||||
break;
|
||||
|
||||
#if 0
|
||||
// String types get sent from Swift as NSString objects.
|
||||
case 's': // string
|
||||
value.type.pch = va_arg(args, char *);
|
||||
context->buffer->flags |= OS_LOG_BUFFER_HAS_NON_SCALAR;
|
||||
_os_log_encode_arg(&value.type.pch, sizeof(value.type.pch), OS_LOG_BUFFER_VALUE_TYPE_STRING, flags, context);
|
||||
prec = 0;
|
||||
done = true;
|
||||
break;
|
||||
// String types get sent from Swift as NSString objects.
|
||||
case 's': // string
|
||||
value.type.pch = va_arg(args, char *);
|
||||
context->buffer->flags |= OS_LOG_BUFFER_HAS_NON_SCALAR;
|
||||
_os_log_encode_arg(&value.type.pch, sizeof(value.type.pch), OS_LOG_BUFFER_VALUE_TYPE_STRING, flags, context);
|
||||
prec = 0;
|
||||
done = true;
|
||||
break;
|
||||
#endif
|
||||
|
||||
case '@': // CFTypeRef aka NSObject *
|
||||
value.type.p = va_arg(args, void *);
|
||||
context->buffer->flags |= OS_LOG_BUFFER_HAS_NON_SCALAR;
|
||||
_os_log_encode_arg(&value.type.p, sizeof(value.type.p), OS_LOG_BUFFER_VALUE_TYPE_OBJECT, flags, context);
|
||||
done = true;
|
||||
break;
|
||||
case '@': // CFTypeRef aka NSObject *
|
||||
value.type.p = va_arg(args, void *);
|
||||
context->buffer->flags |= OS_LOG_BUFFER_HAS_NON_SCALAR;
|
||||
_os_log_encode_arg(&value.type.p, sizeof(value.type.p), OS_LOG_BUFFER_VALUE_TYPE_OBJECT, flags, context);
|
||||
done = true;
|
||||
break;
|
||||
|
||||
case 'm':
|
||||
value.type.i = saved_errno;
|
||||
_os_log_encode_arg(&value.type.i, sizeof(value.type.i), OS_LOG_BUFFER_VALUE_TYPE_SCALAR, flags, context);
|
||||
done = true;
|
||||
break;
|
||||
case 'm':
|
||||
value.type.i = saved_errno;
|
||||
_os_log_encode_arg(&value.type.i, sizeof(value.type.i), OS_LOG_BUFFER_VALUE_TYPE_SCALAR, flags, context);
|
||||
done = true;
|
||||
break;
|
||||
|
||||
default:
|
||||
if (isdigit(ch)) { // [0-9]
|
||||
continue;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
default:
|
||||
if (isdigit(ch)) { // [0-9]
|
||||
continue;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
if (done) {
|
||||
percent = strchr(percent, '%'); // Find next format
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
percent = strchr(percent+1, '%'); // Find next format after %%
|
||||
}
|
||||
}
|
||||
if (done) {
|
||||
percent = strchr(percent, '%'); // Find next format
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
percent = strchr(percent+1, '%'); // Find next format after %%
|
||||
}
|
||||
}
|
||||
|
||||
context->buffer->arg_cnt = context->arg_idx;
|
||||
context->content_sz = context->content_off;
|
||||
context->arg_idx = context->content_off = 0;
|
||||
context->buffer->arg_cnt = context->arg_idx;
|
||||
context->content_sz = context->content_off;
|
||||
context->arg_idx = context->content_off = 0;
|
||||
|
||||
return true;
|
||||
return true;
|
||||
}
|
||||
|
||||
#include "swift/Runtime/Config.h"
|
||||
@@ -401,22 +401,22 @@ SWIFT_CC(swift) __attribute__((__visibility__("default")))
|
||||
extern "C" void
|
||||
_swift_os_log(void *dso, os_log_t oslog, os_log_type_t type, const char *format, va_list args)
|
||||
{
|
||||
struct os_log_buffer_context_s context = { 0, 0, 0, 0, 0 };
|
||||
os_log_buffer_t buffer = (os_log_buffer_t)alloca(OS_LOG_BUFFER_MAX_SIZE);
|
||||
int save_errno = errno; // %m
|
||||
struct os_log_buffer_context_s context = { 0, 0, 0, 0, 0 };
|
||||
os_log_buffer_t buffer = (os_log_buffer_t)alloca(OS_LOG_BUFFER_MAX_SIZE);
|
||||
int save_errno = errno; // %m
|
||||
|
||||
memset(buffer, 0, OS_LOG_BUFFER_MAX_SIZE);
|
||||
memset(buffer, 0, OS_LOG_BUFFER_MAX_SIZE);
|
||||
|
||||
context.buffer = buffer;
|
||||
context.content_sz = OS_LOG_BUFFER_MAX_SIZE - sizeof(*buffer);
|
||||
context.buffer = buffer;
|
||||
context.content_sz = OS_LOG_BUFFER_MAX_SIZE - sizeof(*buffer);
|
||||
|
||||
if (_os_log_encode(format, args, save_errno, &context)) {
|
||||
_os_log_impl(dso, oslog, type, format, (uint8_t *)buffer, context.content_sz);
|
||||
}
|
||||
if (_os_log_encode(format, args, save_errno, &context)) {
|
||||
_os_log_impl(dso, oslog, type, format, (uint8_t *)buffer, context.content_sz);
|
||||
}
|
||||
}
|
||||
|
||||
SWIFT_CC(swift) __attribute__((__visibility__("default")))
|
||||
extern "C" os_log_t
|
||||
_swift_os_log_default(void) {
|
||||
return OS_LOG_DEFAULT;
|
||||
return OS_LOG_DEFAULT;
|
||||
}
|
||||
|
||||
@@ -51,106 +51,106 @@ SWIFT_RUNTIME_STDLIB_INTERFACE
|
||||
SWIFT_DISPATCH_RETURNS_RETAINED
|
||||
__swift_shims_dispatch_block_t
|
||||
_swift_dispatch_block_create_with_qos_class(
|
||||
__swift_shims_dispatch_block_flags_t flags,
|
||||
__swift_shims_qos_class_t qos,
|
||||
int relative_priority,
|
||||
__swift_shims_dispatch_block_t SWIFT_DISPATCH_NONNULL block);
|
||||
__swift_shims_dispatch_block_flags_t flags,
|
||||
__swift_shims_qos_class_t qos,
|
||||
int relative_priority,
|
||||
__swift_shims_dispatch_block_t SWIFT_DISPATCH_NONNULL block);
|
||||
|
||||
SWIFT_RUNTIME_STDLIB_INTERFACE
|
||||
SWIFT_DISPATCH_RETURNS_RETAINED
|
||||
__swift_shims_dispatch_block_t
|
||||
_swift_dispatch_block_create_noescape(
|
||||
__swift_shims_dispatch_block_flags_t flags,
|
||||
__swift_shims_dispatch_block_t SWIFT_DISPATCH_NOESCAPE block);
|
||||
__swift_shims_dispatch_block_flags_t flags,
|
||||
__swift_shims_dispatch_block_t SWIFT_DISPATCH_NOESCAPE block);
|
||||
|
||||
SWIFT_RUNTIME_STDLIB_INTERFACE
|
||||
int _swift_dispatch_block_wait(
|
||||
__swift_shims_dispatch_block_t block,
|
||||
unsigned long long timeout);
|
||||
__swift_shims_dispatch_block_t block,
|
||||
unsigned long long timeout);
|
||||
|
||||
SWIFT_RUNTIME_STDLIB_INTERFACE
|
||||
void _swift_dispatch_block_notify(
|
||||
__swift_shims_dispatch_block_t block,
|
||||
__swift_shims_dispatch_queue_t queue,
|
||||
__swift_shims_dispatch_block_t notifier);
|
||||
__swift_shims_dispatch_block_t block,
|
||||
__swift_shims_dispatch_queue_t queue,
|
||||
__swift_shims_dispatch_block_t notifier);
|
||||
|
||||
SWIFT_RUNTIME_STDLIB_INTERFACE
|
||||
void _swift_dispatch_block_cancel(
|
||||
__swift_shims_dispatch_block_t block);
|
||||
__swift_shims_dispatch_block_t block);
|
||||
|
||||
SWIFT_RUNTIME_STDLIB_INTERFACE
|
||||
int _swift_dispatch_block_testcancel(
|
||||
__swift_shims_dispatch_block_t block);
|
||||
__swift_shims_dispatch_block_t block);
|
||||
|
||||
SWIFT_RUNTIME_STDLIB_INTERFACE
|
||||
void _swift_dispatch_async(
|
||||
__swift_shims_dispatch_queue_t queue,
|
||||
__swift_shims_dispatch_block_t block);
|
||||
__swift_shims_dispatch_queue_t queue,
|
||||
__swift_shims_dispatch_block_t block);
|
||||
|
||||
SWIFT_RUNTIME_STDLIB_INTERFACE
|
||||
void _swift_dispatch_sync(
|
||||
__swift_shims_dispatch_queue_t queue,
|
||||
__swift_shims_dispatch_block_t block);
|
||||
__swift_shims_dispatch_queue_t queue,
|
||||
__swift_shims_dispatch_block_t block);
|
||||
|
||||
SWIFT_RUNTIME_STDLIB_INTERFACE
|
||||
void _swift_dispatch_barrier_async(
|
||||
__swift_shims_dispatch_queue_t queue,
|
||||
__swift_shims_dispatch_block_t block);
|
||||
__swift_shims_dispatch_queue_t queue,
|
||||
__swift_shims_dispatch_block_t block);
|
||||
|
||||
SWIFT_RUNTIME_STDLIB_INTERFACE
|
||||
void _swift_dispatch_group_async(
|
||||
__swift_shims_dispatch_group_t group,
|
||||
__swift_shims_dispatch_queue_t queue,
|
||||
__swift_shims_dispatch_block_t block);
|
||||
__swift_shims_dispatch_group_t group,
|
||||
__swift_shims_dispatch_queue_t queue,
|
||||
__swift_shims_dispatch_block_t block);
|
||||
|
||||
SWIFT_RUNTIME_STDLIB_INTERFACE
|
||||
void _swift_dispatch_group_notify(
|
||||
__swift_shims_dispatch_group_t group,
|
||||
__swift_shims_dispatch_queue_t queue,
|
||||
__swift_shims_dispatch_block_t block);
|
||||
__swift_shims_dispatch_group_t group,
|
||||
__swift_shims_dispatch_queue_t queue,
|
||||
__swift_shims_dispatch_block_t block);
|
||||
|
||||
SWIFT_RUNTIME_STDLIB_INTERFACE
|
||||
void _swift_dispatch_after(
|
||||
__swift_shims_dispatch_time_t when,
|
||||
__swift_shims_dispatch_queue_t queue,
|
||||
__swift_shims_dispatch_block_t block);
|
||||
__swift_shims_dispatch_time_t when,
|
||||
__swift_shims_dispatch_queue_t queue,
|
||||
__swift_shims_dispatch_block_t block);
|
||||
|
||||
SWIFT_RUNTIME_STDLIB_INTERFACE
|
||||
void _swift_dispatch_apply_current(
|
||||
unsigned int iterations,
|
||||
void SWIFT_DISPATCH_NOESCAPE (^block)(long));
|
||||
unsigned int iterations,
|
||||
void SWIFT_DISPATCH_NOESCAPE (^block)(long));
|
||||
|
||||
SWIFT_RUNTIME_STDLIB_INTERFACE
|
||||
SWIFT_DISPATCH_RETURNS_RETAINED
|
||||
__swift_shims_dispatch_data_t
|
||||
_swift_dispatch_data_create(
|
||||
const void *buffer,
|
||||
__swift_size_t size,
|
||||
__swift_shims_dispatch_queue_t SWIFT_DISPATCH_NULLABLE queue,
|
||||
__swift_shims_dispatch_block_t SWIFT_DISPATCH_NULLABLE destructor);
|
||||
const void *buffer,
|
||||
__swift_size_t size,
|
||||
__swift_shims_dispatch_queue_t SWIFT_DISPATCH_NULLABLE queue,
|
||||
__swift_shims_dispatch_block_t SWIFT_DISPATCH_NULLABLE destructor);
|
||||
|
||||
typedef unsigned int (^__swift_shims_dispatch_data_applier)(__swift_shims_dispatch_data_t, __swift_size_t, const void *, __swift_size_t);
|
||||
|
||||
SWIFT_RUNTIME_STDLIB_INTERFACE
|
||||
unsigned int
|
||||
_swift_dispatch_data_apply(
|
||||
__swift_shims_dispatch_data_t data,
|
||||
__swift_shims_dispatch_data_applier SWIFT_DISPATCH_NOESCAPE applier);
|
||||
__swift_shims_dispatch_data_t data,
|
||||
__swift_shims_dispatch_data_applier SWIFT_DISPATCH_NOESCAPE applier);
|
||||
|
||||
SWIFT_RUNTIME_STDLIB_INTERFACE
|
||||
void _swift_dispatch_source_set_event_handler(
|
||||
__swift_shims_dispatch_source_t source,
|
||||
__swift_shims_dispatch_block_t SWIFT_DISPATCH_NULLABLE block);
|
||||
__swift_shims_dispatch_source_t source,
|
||||
__swift_shims_dispatch_block_t SWIFT_DISPATCH_NULLABLE block);
|
||||
|
||||
SWIFT_RUNTIME_STDLIB_INTERFACE
|
||||
void _swift_dispatch_source_set_cancel_handler(
|
||||
__swift_shims_dispatch_source_t source,
|
||||
__swift_shims_dispatch_block_t SWIFT_DISPATCH_NULLABLE block);
|
||||
__swift_shims_dispatch_source_t source,
|
||||
__swift_shims_dispatch_block_t SWIFT_DISPATCH_NULLABLE block);
|
||||
|
||||
SWIFT_RUNTIME_STDLIB_INTERFACE
|
||||
void _swift_dispatch_source_set_registration_handler(
|
||||
__swift_shims_dispatch_source_t source,
|
||||
__swift_shims_dispatch_block_t SWIFT_DISPATCH_NULLABLE block);
|
||||
__swift_shims_dispatch_source_t source,
|
||||
__swift_shims_dispatch_block_t SWIFT_DISPATCH_NULLABLE block);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}} // extern "C", namespace swift
|
||||
|
||||
@@ -1056,11 +1056,11 @@ public postfix func -- (lhs: inout ${Self}) -> ${Self} {
|
||||
fatalError("-- is not available")
|
||||
}
|
||||
|
||||
extension ${Self} {
|
||||
@available(*, unavailable, message: "Please use the `abs(_:)` free function")
|
||||
public static func abs(_ x: ${Self}) -> ${Self} {
|
||||
fatalError("unavailable")
|
||||
}
|
||||
extension ${Self} {
|
||||
@available(*, unavailable, message: "Please use the `abs(_:)` free function")
|
||||
public static func abs(_ x: ${Self}) -> ${Self} {
|
||||
fatalError("unavailable")
|
||||
}
|
||||
}
|
||||
|
||||
% if bits == 80:
|
||||
|
||||
@@ -38,155 +38,155 @@ static typename DestType<FromTy>::type cast(FromTy value) {
|
||||
|
||||
__swift_shims_dispatch_block_t
|
||||
swift::_swift_dispatch_block_create_with_qos_class(
|
||||
__swift_shims_dispatch_block_flags_t flags,
|
||||
__swift_shims_qos_class_t qos,
|
||||
int relative_priority,
|
||||
__swift_shims_dispatch_block_t block)
|
||||
__swift_shims_dispatch_block_flags_t flags,
|
||||
__swift_shims_qos_class_t qos,
|
||||
int relative_priority,
|
||||
__swift_shims_dispatch_block_t block)
|
||||
{
|
||||
return dispatch_block_create_with_qos_class(
|
||||
cast(flags), cast(qos), relative_priority, cast(block));
|
||||
return dispatch_block_create_with_qos_class(
|
||||
cast(flags), cast(qos), relative_priority, cast(block));
|
||||
}
|
||||
|
||||
__swift_shims_dispatch_block_t
|
||||
swift::_swift_dispatch_block_create_noescape(
|
||||
__swift_shims_dispatch_block_flags_t flags,
|
||||
__swift_shims_dispatch_block_t block)
|
||||
__swift_shims_dispatch_block_flags_t flags,
|
||||
__swift_shims_dispatch_block_t block)
|
||||
{
|
||||
return dispatch_block_create(cast(flags), cast(block));
|
||||
return dispatch_block_create(cast(flags), cast(block));
|
||||
}
|
||||
|
||||
int
|
||||
swift::_swift_dispatch_block_wait(
|
||||
__swift_shims_dispatch_block_t block,
|
||||
unsigned long long timeout)
|
||||
__swift_shims_dispatch_block_t block,
|
||||
unsigned long long timeout)
|
||||
{
|
||||
return dispatch_block_wait(block, timeout);
|
||||
return dispatch_block_wait(block, timeout);
|
||||
}
|
||||
|
||||
void
|
||||
swift::_swift_dispatch_block_notify(
|
||||
__swift_shims_dispatch_block_t block,
|
||||
__swift_shims_dispatch_queue_t queue,
|
||||
__swift_shims_dispatch_block_t notifier)
|
||||
__swift_shims_dispatch_block_t block,
|
||||
__swift_shims_dispatch_queue_t queue,
|
||||
__swift_shims_dispatch_block_t notifier)
|
||||
{
|
||||
dispatch_block_notify(cast(block), cast(queue), cast(notifier));
|
||||
dispatch_block_notify(cast(block), cast(queue), cast(notifier));
|
||||
}
|
||||
|
||||
void
|
||||
swift::_swift_dispatch_block_cancel(
|
||||
__swift_shims_dispatch_block_t block)
|
||||
__swift_shims_dispatch_block_t block)
|
||||
{
|
||||
dispatch_block_cancel(cast(block));
|
||||
dispatch_block_cancel(cast(block));
|
||||
}
|
||||
|
||||
int
|
||||
swift::_swift_dispatch_block_testcancel(
|
||||
__swift_shims_dispatch_block_t block)
|
||||
__swift_shims_dispatch_block_t block)
|
||||
{
|
||||
return dispatch_block_testcancel(cast(block));
|
||||
return dispatch_block_testcancel(cast(block));
|
||||
}
|
||||
|
||||
void
|
||||
swift::_swift_dispatch_async(
|
||||
__swift_shims_dispatch_queue_t queue,
|
||||
__swift_shims_dispatch_block_t block)
|
||||
__swift_shims_dispatch_queue_t queue,
|
||||
__swift_shims_dispatch_block_t block)
|
||||
{
|
||||
dispatch_async(cast(queue), cast(block));
|
||||
dispatch_async(cast(queue), cast(block));
|
||||
}
|
||||
|
||||
void
|
||||
swift::_swift_dispatch_barrier_async(
|
||||
__swift_shims_dispatch_queue_t queue,
|
||||
__swift_shims_dispatch_block_t block)
|
||||
__swift_shims_dispatch_queue_t queue,
|
||||
__swift_shims_dispatch_block_t block)
|
||||
{
|
||||
dispatch_barrier_async(cast(queue), cast(block));
|
||||
dispatch_barrier_async(cast(queue), cast(block));
|
||||
}
|
||||
|
||||
void
|
||||
swift::_swift_dispatch_group_async(
|
||||
__swift_shims_dispatch_group_t group,
|
||||
__swift_shims_dispatch_queue_t queue,
|
||||
__swift_shims_dispatch_block_t block)
|
||||
__swift_shims_dispatch_group_t group,
|
||||
__swift_shims_dispatch_queue_t queue,
|
||||
__swift_shims_dispatch_block_t block)
|
||||
{
|
||||
dispatch_group_async((dispatch_group_t)group, cast(queue), cast(block));
|
||||
dispatch_group_async((dispatch_group_t)group, cast(queue), cast(block));
|
||||
}
|
||||
|
||||
void
|
||||
swift::_swift_dispatch_group_notify(
|
||||
__swift_shims_dispatch_group_t group,
|
||||
__swift_shims_dispatch_queue_t queue,
|
||||
__swift_shims_dispatch_block_t block)
|
||||
__swift_shims_dispatch_group_t group,
|
||||
__swift_shims_dispatch_queue_t queue,
|
||||
__swift_shims_dispatch_block_t block)
|
||||
{
|
||||
dispatch_group_notify((dispatch_group_t)group, cast(queue), cast(block));
|
||||
dispatch_group_notify((dispatch_group_t)group, cast(queue), cast(block));
|
||||
}
|
||||
|
||||
void
|
||||
swift::_swift_dispatch_sync(
|
||||
__swift_shims_dispatch_queue_t queue,
|
||||
__swift_shims_dispatch_block_t block)
|
||||
__swift_shims_dispatch_queue_t queue,
|
||||
__swift_shims_dispatch_block_t block)
|
||||
{
|
||||
dispatch_sync(cast(queue), cast(block));
|
||||
dispatch_sync(cast(queue), cast(block));
|
||||
}
|
||||
|
||||
void
|
||||
swift::_swift_dispatch_after(
|
||||
__swift_shims_dispatch_time_t when,
|
||||
__swift_shims_dispatch_queue_t queue,
|
||||
__swift_shims_dispatch_block_t block)
|
||||
__swift_shims_dispatch_time_t when,
|
||||
__swift_shims_dispatch_queue_t queue,
|
||||
__swift_shims_dispatch_block_t block)
|
||||
{
|
||||
dispatch_after((dispatch_time_t)when, cast(queue), cast(block));
|
||||
dispatch_after((dispatch_time_t)when, cast(queue), cast(block));
|
||||
}
|
||||
|
||||
void
|
||||
swift::_swift_dispatch_apply_current(
|
||||
unsigned int iterations,
|
||||
void SWIFT_DISPATCH_NOESCAPE (^block)(long))
|
||||
unsigned int iterations,
|
||||
void SWIFT_DISPATCH_NOESCAPE (^block)(long))
|
||||
{
|
||||
dispatch_apply(iterations, (dispatch_queue_t _Nonnull)0, ^(size_t i){
|
||||
block((long)i);
|
||||
});
|
||||
dispatch_apply(iterations, (dispatch_queue_t _Nonnull)0, ^(size_t i){
|
||||
block((long)i);
|
||||
});
|
||||
}
|
||||
|
||||
__swift_shims_dispatch_data_t
|
||||
swift::_swift_dispatch_data_create(
|
||||
const void *buffer,
|
||||
__swift_size_t size,
|
||||
__swift_shims_dispatch_queue_t queue,
|
||||
__swift_shims_dispatch_block_t destructor)
|
||||
const void *buffer,
|
||||
__swift_size_t size,
|
||||
__swift_shims_dispatch_queue_t queue,
|
||||
__swift_shims_dispatch_block_t destructor)
|
||||
{
|
||||
return dispatch_data_create(buffer, size, cast(queue), cast(destructor));
|
||||
return dispatch_data_create(buffer, size, cast(queue), cast(destructor));
|
||||
}
|
||||
|
||||
unsigned int
|
||||
swift::_swift_dispatch_data_apply(
|
||||
__swift_shims_dispatch_data_t data,
|
||||
__swift_shims_dispatch_data_applier SWIFT_DISPATCH_NOESCAPE applier)
|
||||
__swift_shims_dispatch_data_t data,
|
||||
__swift_shims_dispatch_data_applier SWIFT_DISPATCH_NOESCAPE applier)
|
||||
{
|
||||
return dispatch_data_apply(data, ^bool(dispatch_data_t data, size_t off, const void *loc, size_t size){
|
||||
return applier(data, off, loc, size);
|
||||
});
|
||||
return dispatch_data_apply(data, ^bool(dispatch_data_t data, size_t off, const void *loc, size_t size){
|
||||
return applier(data, off, loc, size);
|
||||
});
|
||||
}
|
||||
|
||||
void
|
||||
swift::_swift_dispatch_source_set_event_handler(
|
||||
__swift_shims_dispatch_source_t source,
|
||||
__swift_shims_dispatch_block_t block)
|
||||
__swift_shims_dispatch_source_t source,
|
||||
__swift_shims_dispatch_block_t block)
|
||||
{
|
||||
dispatch_source_set_event_handler((dispatch_source_t)source, cast(block));
|
||||
dispatch_source_set_event_handler((dispatch_source_t)source, cast(block));
|
||||
}
|
||||
|
||||
void
|
||||
swift::_swift_dispatch_source_set_cancel_handler(
|
||||
__swift_shims_dispatch_source_t source,
|
||||
__swift_shims_dispatch_block_t block)
|
||||
__swift_shims_dispatch_source_t source,
|
||||
__swift_shims_dispatch_block_t block)
|
||||
{
|
||||
dispatch_source_set_cancel_handler((dispatch_source_t)source, cast(block));
|
||||
dispatch_source_set_cancel_handler((dispatch_source_t)source, cast(block));
|
||||
}
|
||||
|
||||
void
|
||||
swift::_swift_dispatch_source_set_registration_handler(
|
||||
__swift_shims_dispatch_source_t source,
|
||||
__swift_shims_dispatch_block_t block)
|
||||
__swift_shims_dispatch_source_t source,
|
||||
__swift_shims_dispatch_block_t block)
|
||||
{
|
||||
dispatch_source_set_registration_handler((dispatch_source_t)source, cast(block));
|
||||
dispatch_source_set_registration_handler((dispatch_source_t)source, cast(block));
|
||||
}
|
||||
|
||||
@@ -647,7 +647,7 @@ extension BidirectionalCollection
|
||||
start..<m, distance: d, choosingStartGroupBy: p)
|
||||
|
||||
// TTTTTTTTT s FFFFFFF m TTTTTTT e FFFFFFFF
|
||||
let e = _stablyPartitionSubrange(
|
||||
let e = _stablyPartitionSubrange(
|
||||
m..<end, distance: n - d, choosingStartGroupBy: p)
|
||||
|
||||
// TTTTTTTTT s TTTTTTT m FFFFFFF e FFFFFFFF
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
extern const NSString *const MyErrorDomain;
|
||||
/// This is my cool error code.
|
||||
typedef NS_ERROR_ENUM(int, MyErrorCode, MyErrorDomain) {
|
||||
/// This is first error.
|
||||
MyErrFirst,
|
||||
/// This is second error.
|
||||
MyErrSecond,
|
||||
/// This is first error.
|
||||
MyErrFirst,
|
||||
/// This is second error.
|
||||
MyErrSecond,
|
||||
};
|
||||
|
||||
@@ -475,7 +475,7 @@ SourceKit can provide information about the version of the protocol that is bein
|
||||
|
||||
```
|
||||
{
|
||||
<key.request>: (UID) <source.request.protocol_version>
|
||||
<key.request>: (UID) <source.request.protocol_version>
|
||||
}
|
||||
```
|
||||
|
||||
@@ -483,8 +483,8 @@ SourceKit can provide information about the version of the protocol that is bein
|
||||
|
||||
```
|
||||
{
|
||||
<key.version_major>: (int64) // The major version number in a version string
|
||||
<key.version_minor>: (int64) // The minor version number in a version string
|
||||
<key.version_major>: (int64) // The major version number in a version string
|
||||
<key.version_minor>: (int64) // The minor version number in a version string
|
||||
}
|
||||
```
|
||||
|
||||
@@ -500,7 +500,7 @@ or
|
||||
$ sourcekitd-repl
|
||||
Welcome to SourceKit. Type ':help' for assistance.
|
||||
(SourceKit) {
|
||||
key.request: source.request.protocol_version
|
||||
key.request: source.request.protocol_version
|
||||
}
|
||||
```
|
||||
|
||||
@@ -514,14 +514,14 @@ To gather documentation, SourceKit must be given either the name of a module (ke
|
||||
|
||||
```
|
||||
{
|
||||
<key.request>: (UID) <source.request.cursorinfo>,
|
||||
[opt] <key.sourcetext>: (string) // Source contents.
|
||||
[opt] <key.sourcefile>: (string) // Absolute path to the file.
|
||||
// **Require**: key.sourcetext or key.sourcefile
|
||||
[opt] <key.offset>: (int64) // Byte offset of code point inside the source contents.
|
||||
[opt] <key.usr>: (string) // USR string for the entity.
|
||||
// **Require**: key.offset or key.usr
|
||||
[opt] <key.compilerargs>: [string*] // Array of zero or more strings for the compiler arguments,
|
||||
<key.request>: (UID) <source.request.cursorinfo>,
|
||||
[opt] <key.sourcetext>: (string) // Source contents.
|
||||
[opt] <key.sourcefile>: (string) // Absolute path to the file.
|
||||
// **Require**: key.sourcetext or key.sourcefile
|
||||
[opt] <key.offset>: (int64) // Byte offset of code point inside the source contents.
|
||||
[opt] <key.usr>: (string) // USR string for the entity.
|
||||
// **Require**: key.offset or key.usr
|
||||
[opt] <key.compilerargs>: [string*] // Array of zero or more strings for the compiler arguments,
|
||||
// e.g ["-sdk", "/path/to/sdk"]. If key.sourcefile is provided,
|
||||
// these must include the path to that file.
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user