Skip to content

Commit 186b57d

Browse files
committed
---
yaml --- r: 341715 b: refs/heads/rxwei-patch-1 c: bfae015 h: refs/heads/master i: 341713: c476b54 341711: 5be83fe
1 parent 7068ece commit 186b57d

File tree

112 files changed

+1102
-1613
lines changed

Some content is hidden

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

112 files changed

+1102
-1613
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1015,7 +1015,7 @@ refs/tags/swift-DEVELOPMENT-SNAPSHOT-2018-08-18-a: b10b1fce14385faa6d44f6b933e95
10151015
refs/heads/rdar-43033749-fix-batch-mode-no-diags-swift-5.0-branch: a14e64eaad30de89f0f5f0b2a782eed7ecdcb255
10161016
refs/heads/revert-19006-error-bridging-integer-type: 8a9065a3696535305ea53fe9b71f91cbe6702019
10171017
refs/heads/revert-19050-revert-19006-error-bridging-integer-type: ecf752d54b05dd0a20f510f0bfa54a3fec3bcaca
1018-
refs/heads/rxwei-patch-1: ca1e808bde54310d0a2e7160ff1375507fd0101c
1018+
refs/heads/rxwei-patch-1: bfae01547f78220b0647b2f39c0d8bec51cc4c59
10191019
refs/heads/shahmishal-patch-1: e58ec0f7488258d42bef51bc3e6d7b3dc74d7b2a
10201020
refs/heads/typelist-existential: 4046359efd541fb5c72d69a92eefc0a784df8f5e
10211021
refs/tags/swift-4.2-DEVELOPMENT-SNAPSHOT-2018-08-20-a: 4319ba09e4fb8650ee86061075c74a016b6baab9

branches/rxwei-patch-1/docs/ABI/Mangling.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -717,7 +717,7 @@ conformance within the witness table, identified by the dependent type and
717717
protocol. In all cases, the DEPENDENT-CONFORMANCE-INDEX is an INDEX value
718718
indicating the position of the appropriate value within the generic environment
719719
(for "HD") or witness table (for "HI" and "HA") when it is known to be at a
720-
fixed position. An index of 1 ("0\_") is used to indicate "unknown"; all other
720+
fixed position. An index of 1 ("0_") is used to indicate "unknown"; all other
721721
values are adjusted by 2. That these indexes are not 0-based is a bug that's
722722
now codified into the ABI; the index 0 is therefore reserved.
723723

branches/rxwei-patch-1/docs/SIL.rst

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5110,15 +5110,13 @@ cond_fail
51105110
`````````
51115111
::
51125112

5113-
sil-instruction ::= 'cond_fail' sil-operand, string-literal
5113+
sil-instruction ::= 'cond_fail' sil-operand
51145114

5115-
cond_fail %0 : $Builtin.Int1, "failure reason"
5115+
cond_fail %0 : $Builtin.Int1
51165116
// %0 must be of type $Builtin.Int1
51175117

51185118
This instruction produces a `runtime failure`_ if the operand is one.
51195119
Execution proceeds normally if the operand is zero.
5120-
The second operand is a static failure message, which is displayed by the
5121-
debugger in case the failure is triggered.
51225120

51235121
Terminators
51245122
~~~~~~~~~~~

branches/rxwei-patch-1/include/swift/AST/Builtins.def

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,10 @@ BUILTIN_SIL_OPERATION(BeginUnpairedModifyAccess, "beginUnpairedModifyAccess",
314314
/// be a pointer to an UnsafeValueBuffer that records an in progress access.
315315
BUILTIN_SIL_OPERATION(EndUnpairedAccess, "endUnpairedAccess", Special)
316316

317+
/// condfail(Int1) -> ()
318+
/// Triggers a runtime failure if the condition is true.
319+
BUILTIN_SIL_OPERATION(CondFail, "condfail", Special)
320+
317321
/// fixLifetime(T) -> ()
318322
/// Fixes the lifetime of any heap references in a value.
319323
BUILTIN_SIL_OPERATION(FixLifetime, "fixLifetime", Special)
@@ -400,10 +404,6 @@ BUILTIN_RUNTIME_CALL(IsOptionalType, "isOptional", "")
400404
BUILTIN(Id, Name, Attrs)
401405
#endif
402406

403-
/// condfail(Int1, RawPointer) -> ()
404-
/// Triggers a runtime failure if the condition is true.
405-
BUILTIN_MISC_OPERATION(CondFail, "condfail", "", Special)
406-
407407
/// Sizeof has type T.Type -> Int
408408
BUILTIN_MISC_OPERATION(Sizeof, "sizeof", "n", Special)
409409

branches/rxwei-patch-1/include/swift/AST/Decl.h

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5615,7 +5615,7 @@ class AbstractFunctionDecl : public GenericContext, public ValueDecl {
56155615
}
56165616

56175617
struct BodySynthesizer {
5618-
std::pair<BraceStmt *, bool> (* Fn)(AbstractFunctionDecl *, void *);
5618+
void (* Fn)(AbstractFunctionDecl *, void *);
56195619
void *Context;
56205620
};
56215621

@@ -5748,8 +5748,18 @@ class AbstractFunctionDecl : public GenericContext, public ValueDecl {
57485748
/// have a body for this function.
57495749
///
57505750
/// \sa hasBody()
5751-
BraceStmt *getBody(bool canSynthesize = true) const;
5752-
5751+
BraceStmt *getBody(bool canSynthesize = true) const {
5752+
if (canSynthesize && getBodyKind() == BodyKind::Synthesize) {
5753+
const_cast<AbstractFunctionDecl *>(this)->setBodyKind(BodyKind::None);
5754+
(Synthesizer.Fn)(const_cast<AbstractFunctionDecl *>(this),
5755+
Synthesizer.Context);
5756+
}
5757+
if (getBodyKind() == BodyKind::Parsed ||
5758+
getBodyKind() == BodyKind::TypeChecked) {
5759+
return Body;
5760+
}
5761+
return nullptr;
5762+
}
57535763
void setBody(BraceStmt *S, BodyKind NewBodyKind = BodyKind::Parsed) {
57545764
assert(getBodyKind() != BodyKind::Skipped &&
57555765
"cannot set a body if it was skipped");
@@ -5774,12 +5784,8 @@ class AbstractFunctionDecl : public GenericContext, public ValueDecl {
57745784
}
57755785

57765786
/// Note that parsing for the body was delayed.
5777-
///
5778-
/// The function should return the body statement and a flag indicating
5779-
/// whether that body is already type-checked.
5780-
void setBodySynthesizer(
5781-
std::pair<BraceStmt *, bool> (* fn)(AbstractFunctionDecl *, void *),
5782-
void *context = nullptr) {
5787+
void setBodySynthesizer(void (* fn)(AbstractFunctionDecl *, void *),
5788+
void *context = nullptr) {
57835789
assert(getBodyKind() == BodyKind::None);
57845790
Synthesizer = {fn, context};
57855791
setBodyKind(BodyKind::Synthesize);

branches/rxwei-patch-1/include/swift/Basic/NullablePtr.h

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -55,14 +55,9 @@ class NullablePtr {
5555
assert(Ptr && "Pointer wasn't checked for null!");
5656
return Ptr;
5757
}
58-
59-
T *getPtrOrNull() { return getPtrOr(nullptr); }
60-
const T *getPtrOrNull() const { return getPtrOr(nullptr); }
61-
62-
T *getPtrOr(T *defaultValue) { return Ptr ? Ptr : defaultValue; }
63-
const T *getPtrOr(const T *defaultValue) const {
64-
return Ptr ? Ptr : defaultValue;
65-
}
58+
59+
T *getPtrOrNull() { return Ptr; }
60+
const T *getPtrOrNull() const { return Ptr; }
6661

6762
explicit operator bool() const { return Ptr; }
6863

branches/rxwei-patch-1/include/swift/SIL/SILBuilder.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1775,15 +1775,15 @@ class SILBuilder {
17751775
//===--------------------------------------------------------------------===//
17761776

17771777
CondFailInst *createCondFail(SILLocation Loc, SILValue Operand,
1778-
StringRef Message, bool Inverted = false) {
1778+
bool Inverted = false) {
17791779
if (Inverted) {
17801780
SILType Ty = Operand->getType();
17811781
SILValue True(createIntegerLiteral(Loc, Ty, 1));
17821782
Operand =
17831783
createBuiltinBinaryFunction(Loc, "xor", Ty, Ty, {Operand, True});
17841784
}
1785-
return insert(CondFailInst::create(getSILDebugLocation(Loc), Operand,
1786-
Message, getModule()));
1785+
return insert(new (getModule())
1786+
CondFailInst(getSILDebugLocation(Loc), Operand));
17871787
}
17881788

17891789
BuiltinInst *createBuiltinTrap(SILLocation Loc) {

branches/rxwei-patch-1/include/swift/SIL/SILCloner.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2447,8 +2447,7 @@ SILCloner<ImplClass>::visitCondFailInst(CondFailInst *Inst) {
24472447
getBuilder().setCurrentDebugScope(getOpScope(Inst->getDebugScope()));
24482448
recordClonedInstruction(
24492449
Inst, getBuilder().createCondFail(getOpLocation(Inst->getLoc()),
2450-
getOpValue(Inst->getOperand()),
2451-
Inst->getMessage()));
2450+
getOpValue(Inst->getOperand())));
24522451
}
24532452

24542453
template<typename ImplClass>

branches/rxwei-patch-1/include/swift/SIL/SILInstruction.h

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6715,28 +6715,14 @@ class ProjectExistentialBoxInst
67156715
//===----------------------------------------------------------------------===//
67166716

67176717
/// Trigger a runtime failure if the given Int1 value is true.
6718-
///
6719-
/// Optionally cond_fail has a static failure message, which is displayed in the debugger in case the failure
6720-
/// is triggered.
6721-
class CondFailInst final
6718+
class CondFailInst
67226719
: public UnaryInstructionBase<SILInstructionKind::CondFailInst,
6723-
NonValueInstruction>,
6724-
private llvm::TrailingObjects<CondFailInst, char>
6720+
NonValueInstruction>
67256721
{
6726-
friend TrailingObjects;
67276722
friend SILBuilder;
67286723

6729-
unsigned MessageSize;
6730-
6731-
CondFailInst(SILDebugLocation DebugLoc, SILValue Operand, StringRef Message);
6732-
6733-
static CondFailInst *create(SILDebugLocation DebugLoc, SILValue Operand,
6734-
StringRef Message, SILModule &M);
6735-
6736-
public:
6737-
StringRef getMessage() const {
6738-
return {getTrailingObjects<char>(), MessageSize};
6739-
}
6724+
CondFailInst(SILDebugLocation DebugLoc, SILValue Operand)
6725+
: UnaryInstructionBase(DebugLoc, Operand) {}
67406726
};
67416727

67426728
//===----------------------------------------------------------------------===//

branches/rxwei-patch-1/include/swift/Serialization/ModuleFormat.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ const uint16_t SWIFTMODULE_VERSION_MAJOR = 0;
5252
/// describe what change you made. The content of this comment isn't important;
5353
/// it just ensures a conflict if two people change the module format.
5454
/// Don't worry about adhering to the 80-column limit for this line.
55-
const uint16_t SWIFTMODULE_VERSION_MINOR = 501; // cond_fail messages
55+
const uint16_t SWIFTMODULE_VERSION_MINOR = 500; // dependency types for protocols
5656

5757
using DeclIDField = BCFixed<31>;
5858

branches/rxwei-patch-1/lib/AST/ASTScopeSourceRange.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@ SourceRange AbstractFunctionDeclScope::getChildlessSourceRange() const {
301301
assert(r.End.isValid());
302302
return r;
303303
}
304-
return decl->getBodySourceRange();
304+
return decl->getBody()->getSourceRange();
305305
}
306306

307307
SourceRange AbstractFunctionParamsScope::getChildlessSourceRange() const {

branches/rxwei-patch-1/lib/AST/ASTVerifier.cpp

Lines changed: 31 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -2471,48 +2471,44 @@ class Verifier : public ASTWalker {
24712471
Out << "property getter has parameters\n";
24722472
abort();
24732473
}
2474-
if (getter->hasInterfaceType()) {
2475-
Type getterResultType = getter->getResultInterfaceType();
2476-
getterResultType =
2477-
var->getDeclContext()->mapTypeIntoContext(getterResultType);
2478-
if (!getterResultType->isEqual(typeForAccessors)) {
2479-
Out << "property and getter have mismatched types: '";
2480-
typeForAccessors.print(Out);
2481-
Out << "' vs. '";
2482-
getterResultType.print(Out);
2483-
Out << "'\n";
2484-
abort();
2485-
}
2474+
Type getterResultType = getter->getResultInterfaceType();
2475+
getterResultType =
2476+
var->getDeclContext()->mapTypeIntoContext(getterResultType);
2477+
if (!getterResultType->isEqual(typeForAccessors)) {
2478+
Out << "property and getter have mismatched types: '";
2479+
typeForAccessors.print(Out);
2480+
Out << "' vs. '";
2481+
getterResultType.print(Out);
2482+
Out << "'\n";
2483+
abort();
24862484
}
24872485
}
24882486
}
24892487

24902488
if (const FuncDecl *setter = var->getSetter()) {
2491-
if (setter->hasInterfaceType()) {
2492-
if (!setter->getResultInterfaceType()->isVoid()) {
2493-
Out << "property setter has non-Void result type\n";
2494-
abort();
2495-
}
2496-
if (setter->getParameters()->size() == 0) {
2497-
Out << "property setter has no parameters\n";
2498-
abort();
2499-
}
2500-
if (setter->getParameters()->size() != 1) {
2501-
Out << "property setter has 2+ parameters\n";
2489+
if (!setter->getResultInterfaceType()->isVoid()) {
2490+
Out << "property setter has non-Void result type\n";
2491+
abort();
2492+
}
2493+
if (setter->getParameters()->size() == 0) {
2494+
Out << "property setter has no parameters\n";
2495+
abort();
2496+
}
2497+
if (setter->getParameters()->size() != 1) {
2498+
Out << "property setter has 2+ parameters\n";
2499+
abort();
2500+
}
2501+
const ParamDecl *param = setter->getParameters()->get(0);
2502+
Type paramType = param->getInterfaceType();
2503+
if (!var->getDeclContext()->contextHasLazyGenericEnvironment()) {
2504+
paramType = var->getDeclContext()->mapTypeIntoContext(paramType);
2505+
if (!paramType->isEqual(typeForAccessors)) {
2506+
Out << "property and setter param have mismatched types:\n";
2507+
typeForAccessors.dump(Out, 2);
2508+
Out << "vs.\n";
2509+
paramType.dump(Out, 2);
25022510
abort();
25032511
}
2504-
const ParamDecl *param = setter->getParameters()->get(0);
2505-
Type paramType = param->getInterfaceType();
2506-
if (!var->getDeclContext()->contextHasLazyGenericEnvironment()) {
2507-
paramType = var->getDeclContext()->mapTypeIntoContext(paramType);
2508-
if (!paramType->isEqual(typeForAccessors)) {
2509-
Out << "property and setter param have mismatched types:\n";
2510-
typeForAccessors.dump(Out, 2);
2511-
Out << "vs.\n";
2512-
paramType.dump(Out, 2);
2513-
abort();
2514-
}
2515-
}
25162512
}
25172513
}
25182514

@@ -3014,16 +3010,6 @@ class Verifier : public ASTWalker {
30143010
void verifyChecked(AbstractFunctionDecl *AFD) {
30153011
PrettyStackTraceDecl debugStack("verifying AbstractFunctionDecl", AFD);
30163012

3017-
if (!AFD->hasValidSignature()) {
3018-
if (isa<AccessorDecl>(AFD) && AFD->isImplicit())
3019-
return;
3020-
3021-
Out << "All functions except implicit accessors should be "
3022-
"validated by now\n";
3023-
AFD->dump(Out);
3024-
abort();
3025-
}
3026-
30273013
// If this function is generic or is within a generic context, it should
30283014
// have an interface type.
30293015
if (AFD->isGenericContext() !=

branches/rxwei-patch-1/lib/AST/Builtins.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1037,9 +1037,8 @@ static ValueDecl *getCanBeObjCClassOperation(ASTContext &Context,
10371037
static ValueDecl *getCondFailOperation(ASTContext &C, Identifier Id) {
10381038
// Int1 -> ()
10391039
auto CondTy = BuiltinIntegerType::get(1, C);
1040-
auto MsgTy = C.TheRawPointerType;
10411040
auto VoidTy = TupleType::getEmpty(C);
1042-
return getBuiltinFunction(Id, {CondTy, MsgTy}, VoidTy);
1041+
return getBuiltinFunction(Id, {CondTy}, VoidTy);
10431042
}
10441043

10451044
static ValueDecl *getAssertConfOperation(ASTContext &C, Identifier Id) {

0 commit comments

Comments
 (0)