Skip to content

Commit 01e8895

Browse files
committed
---
yaml --- r: 349061 b: refs/heads/master c: c20e5db h: refs/heads/master i: 349059: 782b620
1 parent e044076 commit 01e8895

File tree

113 files changed

+1067
-2396
lines changed

Some content is hidden

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

113 files changed

+1067
-2396
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: deb32b2d6071a405562375a2352c5f5e2416f64c
2+
refs/heads/master: c20e5db802e1533a470250a7352244fe4cb10d85
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/cmake/modules/SwiftSource.cmake

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,11 @@ 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+
336341
# If we have extra regexp flags, check if we match any of the regexps. If so
337342
# add the relevant flags to our swift_flags.
338343
if (SWIFT_EXPERIMENTAL_EXTRA_REGEXP_FLAGS OR SWIFT_EXPERIMENTAL_EXTRA_NEGATIVE_REGEXP_FLAGS)

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/Decl.h

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -369,14 +369,21 @@ class alignas(1 << DeclAlignInBits) Decl {
369369
IsPropertyWrapperBackingProperty : 1
370370
);
371371

372-
SWIFT_INLINE_BITFIELD(ParamDecl, VarDecl, 1+2+NumDefaultArgumentKindBits,
372+
SWIFT_INLINE_BITFIELD(ParamDecl, VarDecl, 1+2+1+NumDefaultArgumentKindBits,
373373
/// Whether we've computed the specifier yet.
374374
SpecifierComputed : 1,
375375

376376
/// The specifier associated with this parameter. This determines
377377
/// the storage semantics of the value e.g. mutability.
378378
Specifier : 2,
379379

380+
/// True if the type is implicitly specified in the source, but this has an
381+
/// apparently valid typeRepr. This is used in accessors, which look like:
382+
/// set (value) {
383+
/// but need to get the typeRepr from the property as a whole so Sema can
384+
/// resolve the type.
385+
IsTypeLocImplicit : 1,
386+
380387
/// Information about a symbolic default argument, like #file.
381388
defaultArgumentKind : NumDefaultArgumentKindBits
382389
);
@@ -4797,7 +4804,8 @@ class VarDecl : public AbstractStorageDecl {
47974804
bool issCaptureList, SourceLoc nameLoc, Identifier name,
47984805
DeclContext *dc, StorageIsMutable_t supportsMutation);
47994806

4800-
TypeRepr *ParentRepr = nullptr;
4807+
/// This is the type specified, including location information.
4808+
TypeLoc typeLoc;
48014809

48024810
Type typeInContext;
48034811

@@ -4817,10 +4825,8 @@ class VarDecl : public AbstractStorageDecl {
48174825
return hasName() ? getBaseName().getIdentifier().str() : "_";
48184826
}
48194827

4820-
/// Retrieve the TypeRepr corresponding to the parsed type of the parent
4821-
/// pattern, if it exists.
4822-
TypeRepr *getTypeRepr() const { return ParentRepr; }
4823-
void setTypeRepr(TypeRepr *repr) { ParentRepr = repr; }
4828+
TypeLoc &getTypeLoc() { return typeLoc; }
4829+
TypeLoc getTypeLoc() const { return typeLoc; }
48244830

48254831
bool hasType() const {
48264832
// We have a type if either the type has been computed already or if
@@ -5195,8 +5201,10 @@ class ParamDecl : public VarDecl {
51955201
Identifier argumentName, SourceLoc parameterNameLoc,
51965202
Identifier parameterName, DeclContext *dc);
51975203

5198-
/// Create a new ParamDecl identical to the first except without the interface type.
5199-
static ParamDecl *cloneWithoutType(const ASTContext &Ctx, ParamDecl *PD);
5204+
/// Clone constructor, allocates a new ParamDecl identical to the first.
5205+
/// Intentionally not defined as a typical copy constructor to avoid
5206+
/// accidental copies.
5207+
ParamDecl(ParamDecl *PD, bool withTypes);
52005208

52015209
/// Retrieve the argument (API) name for this function parameter.
52025210
Identifier getArgumentName() const { return ArgumentName; }
@@ -5213,7 +5221,10 @@ class ParamDecl : public VarDecl {
52135221
SourceLoc getParameterNameLoc() const { return ParameterNameLoc; }
52145222

52155223
SourceLoc getSpecifierLoc() const { return SpecifierLoc; }
5216-
5224+
5225+
bool isTypeLocImplicit() const { return Bits.ParamDecl.IsTypeLocImplicit; }
5226+
void setIsTypeLocImplicit(bool val) { Bits.ParamDecl.IsTypeLocImplicit = val; }
5227+
52175228
DefaultArgumentKind getDefaultArgumentKind() const {
52185229
return static_cast<DefaultArgumentKind>(Bits.ParamDecl.defaultArgumentKind);
52195230
}

trunk/include/swift/AST/DiagnosticsSIL.def

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -422,7 +422,7 @@ NOTE(constexpr_witness_call_with_no_conformance, none,
422422
NOTE(constexpr_unknown_control_flow_due_to_skip,none, "branch depends on "
423423
"non-constant value produced by an unevaluated instructions", ())
424424
NOTE(constexpr_returned_by_unevaluated_instruction,none,
425-
"result of an unevaluated instruction is not a constant", ())
425+
"return value of an unevaluated instruction is not a constant", ())
426426
NOTE(constexpr_mutated_by_unevaluated_instruction,none, "value mutable by an "
427427
"unevaluated instruction is not a constant", ())
428428

trunk/include/swift/AST/DiagnosticsSema.def

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -381,8 +381,8 @@ ERROR(cannot_convert_argument_value,none,
381381
(Type,Type))
382382

383383
NOTE(candidate_has_invalid_argument_at_position,none,
384-
"candidate expects %select{|in-out }2value of type %0 for parameter #%1",
385-
(Type, unsigned, bool))
384+
"candidate expects value of type %0 for parameter #%1",
385+
(Type, unsigned))
386386

387387
ERROR(cannot_convert_array_to_variadic,none,
388388
"cannot pass array of type %0 as variadic arguments of type %1",
@@ -4533,6 +4533,8 @@ ERROR(property_wrapper_wrong_initial_value_init, none,
45334533
(DeclName, Type, Type))
45344534
ERROR(property_wrapper_failable_init, none,
45354535
"%0 cannot be failable", (DeclName))
4536+
ERROR(property_wrapper_ambiguous_default_value_init, none,
4537+
"property wrapper type %0 has multiple default-value initializers", (Type))
45364538
ERROR(property_wrapper_type_requirement_not_accessible,none,
45374539
"%select{private|fileprivate|internal|public|open}0 %1 %2 cannot have "
45384540
"more restrictive access than its enclosing property wrapper type %3 "

0 commit comments

Comments
 (0)