Skip to content

Commit 2b8d877

Browse files
committed
---
yaml --- r: 349035 b: refs/heads/master c: eb61ae7 h: refs/heads/master i: 349033: 301bd0f 349031: def82f1
1 parent ad5ce92 commit 2b8d877

File tree

230 files changed

+2560
-5086
lines changed

Some content is hidden

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

230 files changed

+2560
-5086
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: 7770564f1a74edee1ab8fff8bd7d45103398fd23
2+
refs/heads/master: eb61ae79714e2ff8cbfae12ab8a9ad0d5f420a79
33
refs/heads/master-next: 203b3026584ecad859eb328b2e12490099409cd5
44
refs/tags/osx-passed: b6b74147ef8a386f532cf9357a1bde006e552c54
55
refs/tags/swift-2.2-SNAPSHOT-2015-12-01-a: 6bb18e013c2284f2b45f5f84f2df2887dc0f7dea

trunk/.gitattributes

Lines changed: 0 additions & 2 deletions
This file was deleted.

trunk/CHANGELOG.md

Lines changed: 59 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,63 @@ Swift 5.2
5858
(foo as Magic)(5)
5959
```
6060

61+
* [SR-11298][]:
62+
63+
A class-constrained protocol extension, where the extended protocol does
64+
not impose a class constraint, will now infer the constraint implicitly.
65+
66+
```swift
67+
protocol Foo {}
68+
class Bar: Foo {
69+
var someProperty: Int = 0
70+
}
71+
72+
// Even though 'Foo' does not impose a class constraint, it is automatically
73+
// inferred due to the Self: Bar constraint.
74+
extension Foo where Self: Bar {
75+
var anotherProperty: Int {
76+
get { return someProperty }
77+
// As a result, the setter is now implicitly nonmutating, just like it would
78+
// be if 'Foo' had a class constraint.
79+
set { someProperty = newValue }
80+
}
81+
}
82+
```
83+
84+
As a result, this could lead to code that currently compiles today to throw an error.
85+
86+
```swift
87+
protocol Foo {
88+
var someProperty: Int { get set }
89+
}
90+
91+
class Bar: Foo {
92+
var someProperty = 0
93+
}
94+
95+
extension Foo where Self: Bar {
96+
var anotherProperty1: Int {
97+
get { return someProperty }
98+
// This will now error, because the protocol requirement
99+
// is implicitly mutating and the setter is implicitly
100+
// nonmutating.
101+
set { someProperty = newValue } // Error
102+
}
103+
}
104+
```
105+
106+
**Workaround**: Define a new mutable variable inside the setter that has a reference to `self`:
107+
108+
```swift
109+
var anotherProperty1: Int {
110+
get { return someProperty }
111+
set {
112+
var mutableSelf = self
113+
mutableSelf.someProperty = newValue // Okay
114+
}
115+
}
116+
```
117+
61118
* [SE-0253][]:
62119

63120
Values of types that declare `func callAsFunction` methods can be called
@@ -83,7 +140,7 @@ Swift 5.2
83140

84141
* [SR-4206][]:
85142

86-
A method override is no longer allowed to have a generic signature with
143+
A method override is no longer allowed to have a generic signature with
87144
requirements not imposed by the base method. For example:
88145

89146
```
@@ -7799,4 +7856,5 @@ Swift 1.0
77997856
[SR-8974]: <https://bugs.swift.org/browse/SR-8974>
78007857
[SR-9043]: <https://bugs.swift.org/browse/SR-9043>
78017858
[SR-9827]: <https://bugs.swift.org/browse/SR-9827>
7859+
[SR-11298]: <https://bugs.swift.org/browse/SR-11298>
78027860
[SR-11429]: <https://bugs.swift.org/browse/SR-11429>

trunk/cmake/modules/SwiftSource.cmake

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -310,12 +310,12 @@ function(_compile_swift_files
310310
set(module_base "${module_dir}/${SWIFTFILE_MODULE_NAME}")
311311
if(SWIFTFILE_SDK IN_LIST SWIFT_APPLE_PLATFORMS)
312312
set(specific_module_dir "${module_base}.swiftmodule")
313-
set(specific_module_project_dir "${specific_module_dir}/Project")
314-
set(source_info_file "${specific_module_project_dir}/${SWIFTFILE_ARCHITECTURE}.swiftsourceinfo")
313+
set(specific_module_private_dir "${specific_module_dir}/Private")
314+
set(source_info_file "${specific_module_private_dir}/${SWIFTFILE_ARCHITECTURE}.swiftsourceinfo")
315315
set(module_base "${module_base}.swiftmodule/${SWIFTFILE_ARCHITECTURE}")
316316
else()
317317
set(specific_module_dir)
318-
set(specific_module_project_dir)
318+
set(specific_module_private_dir)
319319
set(source_info_file "${module_base}.swiftsourceinfo")
320320
endif()
321321
set(module_file "${module_base}.swiftmodule")
@@ -333,11 +333,6 @@ function(_compile_swift_files
333333
"-emit-module-interface-path" "${interface_file}")
334334
endif()
335335

336-
if (NOT SWIFTFILE_IS_STDLIB_CORE)
337-
list(APPEND swift_module_flags
338-
"-Xfrontend" "-experimental-skip-non-inlinable-function-bodies")
339-
endif()
340-
341336
# If we have extra regexp flags, check if we match any of the regexps. If so
342337
# add the relevant flags to our swift_flags.
343338
if (SWIFT_EXPERIMENTAL_EXTRA_REGEXP_FLAGS OR SWIFT_EXPERIMENTAL_EXTRA_NEGATIVE_REGEXP_FLAGS)
@@ -359,7 +354,7 @@ function(_compile_swift_files
359354
DESTINATION "lib${LLVM_LIBDIR_SUFFIX}/swift/${library_subdir}"
360355
COMPONENT "${SWIFTFILE_INSTALL_IN_COMPONENT}"
361356
OPTIONAL
362-
PATTERN "Project" EXCLUDE)
357+
PATTERN "Private" EXCLUDE)
363358
else()
364359
swift_install_in_component(FILES ${module_outputs}
365360
DESTINATION "lib${LLVM_LIBDIR_SUFFIX}/swift/${library_subdir}"
@@ -500,7 +495,7 @@ function(_compile_swift_files
500495
COMMAND
501496
"${CMAKE_COMMAND}" "-E" "make_directory" ${module_dir}
502497
${specific_module_dir}
503-
${specific_module_project_dir}
498+
${specific_module_private_dir}
504499
COMMAND
505500
"${PYTHON_EXECUTABLE}" "${line_directive_tool}" "@${file_path}" --
506501
"${swift_compiler_tool}" "-emit-module" "-o" "${module_file}"

trunk/include/swift/AST/ASTContext.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,6 @@ namespace swift {
109109
class TypeAliasDecl;
110110
class VarDecl;
111111
class UnifiedStatsReporter;
112-
class IndexSubset;
113112

114113
enum class KnownProtocolKind : uint8_t;
115114

trunk/include/swift/AST/ASTScope.h

Lines changed: 15 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030

3131
#include "swift/AST/ASTNode.h"
3232
#include "swift/AST/NameLookup.h" // for DeclVisibilityKind
33-
#include "swift/AST/SimpleRequest.h"
3433
#include "swift/Basic/Compiler.h"
3534
#include "swift/Basic/LLVM.h"
3635
#include "swift/Basic/NullablePtr.h"
@@ -89,14 +88,6 @@ struct AnnotatedInsertionPoint {
8988
ASTScopeImpl *insertionPoint;
9089
const char *explanation;
9190
};
92-
} // namespace ast_scope
93-
94-
namespace ast_scope {
95-
96-
void simple_display(llvm::raw_ostream &out, const ASTScopeImpl *);
97-
void simple_display(llvm::raw_ostream &out, const ScopeCreator *);
98-
99-
SourceLoc extractNearestSourceLoc(std::tuple<ASTScopeImpl *, ScopeCreator *>);
10091

10192
#pragma mark the root ASTScopeImpl class
10293

@@ -342,11 +333,6 @@ class ASTScopeImpl {
342333
public:
343334
/// expandScope me, sending deferred nodes to my descendants.
344335
/// Return the scope into which to place subsequent decls
345-
ASTScopeImpl *expandAndBeCurrentDetectingRecursion(ScopeCreator &);
346-
347-
/// Expand or reexpand the scope if unexpanded or if not current.
348-
/// There are several places in the compiler that mutate the AST after the
349-
/// fact, above and beyond adding Decls to the SourceFile.
350336
ASTScopeImpl *expandAndBeCurrent(ScopeCreator &);
351337

352338
unsigned getASTAncestorScopeCount() const { return astAncestorScopeCount; }
@@ -358,12 +344,6 @@ class ASTScopeImpl {
358344
void setWasExpanded() { wasExpanded = true; }
359345
virtual ASTScopeImpl *expandSpecifically(ScopeCreator &) = 0;
360346
virtual void beCurrent();
361-
virtual bool doesExpansionOnlyAddNewDeclsAtEnd() const;
362-
363-
public:
364-
bool isExpansionNeeded(const ScopeCreator &) const;
365-
366-
protected:
367347
bool isCurrent() const;
368348
virtual bool isCurrentIfWasExpanded() const;
369349

@@ -394,7 +374,16 @@ class ASTScopeImpl {
394374

395375
bool isATypeDeclScope() const;
396376

377+
/// There are several places in the compiler that mutate the AST after the
378+
/// fact, above and beyond adding Decls to the SourceFile. These are
379+
/// documented in: rdar://53018839, rdar://53027266, rdar://53027733,
380+
/// rdar://53028050
381+
/// Return true if did reexpand
382+
bool reexpandIfObsolete(ScopeCreator &);
383+
397384
private:
385+
void reexpand(ScopeCreator &);
386+
398387
virtual ScopeCreator &getScopeCreator();
399388

400389
#pragma mark - - creation queries
@@ -544,8 +533,8 @@ class ASTSourceFileScope final : public ASTScopeImpl {
544533
/// The number of \c Decls in the \c SourceFile that were already seen.
545534
/// Since parsing can be interleaved with type-checking, on every
546535
/// lookup, look at creating scopes for any \c Decls beyond this number.
547-
/// TODO: Unify with numberOfChildrenWhenLastExpanded
548-
size_t numberOfDeclsAlreadySeen = 0;
536+
/// rdar://55562483 Unify with numberOfChildrenWhenLastExpanded
537+
int numberOfDeclsAlreadySeen = 0;
549538

550539
ASTSourceFileScope(SourceFile *SF, ScopeCreator *scopeCreator);
551540

@@ -559,6 +548,7 @@ class ASTSourceFileScope final : public ASTScopeImpl {
559548
public:
560549
NullablePtr<DeclContext> getDeclContext() const override;
561550

551+
void addNewDeclsToScopeTree();
562552
void buildFullyExpandedTree();
563553
void
564554
buildEnoughOfTreeForTopLevelExpressionsButDontRequestGenericsOrExtendedNominals();
@@ -569,15 +559,11 @@ class ASTSourceFileScope final : public ASTScopeImpl {
569559

570560
protected:
571561
ASTScopeImpl *expandSpecifically(ScopeCreator &scopeCreator) override;
572-
bool isCurrentIfWasExpanded() const override;
573-
void beCurrent() override;
574-
bool doesExpansionOnlyAddNewDeclsAtEnd() const override;
575562

576563
ScopeCreator &getScopeCreator() override;
577564

578565
private:
579-
AnnotatedInsertionPoint
580-
expandAScopeThatCreatesANewInsertionPoint(ScopeCreator &);
566+
void expandAScopeThatDoesNotCreateANewInsertionPoint(ScopeCreator &);
581567
};
582568

583569
class Portion {
@@ -1162,6 +1148,7 @@ class AttachedPropertyWrapperScope final : public ASTScopeImpl {
11621148
/// false positives, that that doesn't hurt anything. However, the result of
11631149
/// the conservative source range computation doesn't seem to be stable. So
11641150
/// keep the original here, and use it for source range queries.
1151+
/// rdar://55263708
11651152

11661153
const SourceRange sourceRangeWhenCreated;
11671154

@@ -1264,6 +1251,7 @@ class PatternEntryDeclScope final : public AbstractPatternEntryScope {
12641251
};
12651252

12661253
class PatternEntryInitializerScope final : public AbstractPatternEntryScope {
1254+
// Should be able to remove this when rdar://53921703 is accomplished.
12671255
Expr *initAsWrittenWhenCreated;
12681256

12691257
public:

trunk/include/swift/AST/ASTTypeIDZone.def

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
SWIFT_TYPEID(AncestryFlags)
1919
SWIFT_TYPEID(CtorInitializerKind)
2020
SWIFT_TYPEID(GenericSignature)
21-
SWIFT_TYPEID(ParamSpecifier)
2221
SWIFT_TYPEID(PropertyWrapperBackingPropertyInfo)
2322
SWIFT_TYPEID(PropertyWrapperTypeInfo)
2423
SWIFT_TYPEID(Requirement)

trunk/include/swift/AST/ASTTypeIDs.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,6 @@ class ModuleDecl;
3535
class NominalTypeDecl;
3636
class OperatorDecl;
3737
class OpaqueTypeDecl;
38-
class ParamDecl;
39-
enum class ParamSpecifier : uint8_t;
4038
class PrecedenceGroupDecl;
4139
struct PropertyWrapperBackingPropertyInfo;
4240
struct PropertyWrapperTypeInfo;

trunk/include/swift/AST/Attr.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1672,7 +1672,7 @@ class DeclAttributes {
16721672
public:
16731673
template <typename ATTR, bool AllowInvalid>
16741674
using AttributeKindRange =
1675-
OptionalTransformRange<iterator_range<const_iterator>,
1675+
OptionalTransformRange<llvm::iterator_range<const_iterator>,
16761676
ToAttributeKind<ATTR, AllowInvalid>,
16771677
const_iterator>;
16781678

0 commit comments

Comments
 (0)