Commit Graph

12606 Commits

Author SHA1 Message Date
Maxwell Swadling
93d485e4f7 Changed handleDiagnostic to take a format string and format args instead of the formatted string
This allows diagnostic consumers to modify the way formatting of diagnostics is performed.
rdar://problem/31305854
2017-04-14 11:28:04 -07:00
practicalswift
40cf4d183d [gardening] Use consistent spacing after if, for and while 2017-04-14 17:35:36 +02:00
swift-ci
49e3cfb16f Merge remote-tracking branch 'origin/master' into master-next 2017-04-13 23:48:31 -07:00
Slava Pestov
e4905b942a Merge pull request #8770 from slavapestov/anyobject-removal-preparations
AnyObject removal preparations
2017-04-13 23:46:37 -07:00
swift-ci
54e1f833b1 Merge pull request #8772 from DougGregor/rdar-31408971 2017-04-13 23:37:51 -07:00
Doug Gregor
5cf233ba20 [SE-0160] Swift 3: Downgrade error about non-ObjC @(IB|GK)Inspectable properties
@IBInspectable and @GKInspectable both work via the Objective-C
runtime. SE-0160 made them imply @objc, but doing so made it an error
to define an @IBInspectable or @GKInspectable property with a type
that could not be expressed in Objective-C. The attribute is useless,
but this broke Swift 3 code.

So, downgrade the error to a warning in Swift 3 compatibility mode,
with a Fix-It to remove the useless attribute. It remains an error in
Swift 4.

Fixes rdar://problem/31408971.
2017-04-13 23:08:03 -07:00
Slava Pestov
070832378f AST: Remove TypeBase::getAnyExistentialTypeProtocols()
The last usages were in IRGen and they're now gone.
2017-04-13 21:29:58 -07:00
Slava Pestov
a5a40c7fc7 Runtime/IRGen: Preliminary plumbing for subclass existentials 2017-04-13 21:29:57 -07:00
Slava Pestov
0d0dc207c0 AST: Mangling for primitive AnyObject
A protocol composition with an explicit 'AnyObject' member is
now mangled as <protocol list> 'Xl'. For subclass existentials,
I changed the mangling from <protocol list> <class> 'XE' to
<protocol list> <class> 'Xl'.

Not used for anything just yet.
2017-04-13 21:17:07 -07:00
Slava Pestov
db58e02cb2 Sema: Hook up layout constraints to the solver
There were various problems with layout constraints either
being ignored or handled incorrectly. Now that I've exercised
this support with an upcoming patch, there are some fixes
here.

Also, introduce a new ExistentialLayout::getLayoutConstriant()
which returns a value for existentials which are class-constrained
but don't have a superclass or any class-constrained protocols;
an example would be AnyObject, or AnyObject & P for some
non-class protocol P.

NFC for now, since these layout-constrained existentials cannot
be constructed yet.
2017-04-13 21:17:05 -07:00
Slava Pestov
d58f049608 AST: Introduce ASTContext::getAnyObjectType()
This replaces a number of usages of KnownProtocolKind::AnyObject,
which is soon going away.
2017-04-13 21:17:05 -07:00
Slava Pestov
d49f8fb6d9 AST: Introduce primitive AnyObject type
Add a 'hasExplicitAnyObject()' bit to ProtocolCompositionType
to represent canonical composition types containing '& AnyObject'.

Serialize this bit and take it into account when building
ExistentialLayouts.

Rename ProtocolCompositionType::getProtocols() to getMembers()
since it can contain classes now, and update a few usages that
need further attention with FIXMEs or asserts.

For now, nothing actually constructs these types, and they will
trigger arounds asserts. Upcoming patches will introduce support
for this.
2017-04-13 21:17:05 -07:00
swift-ci
f326d3e2ff Merge remote-tracking branch 'origin/master' into master-next 2017-04-13 18:48:31 -07:00
Xi Ge
dbb71698e9 swift-api-digester: Extract/Expose API change descriptors to libIDE to allow visibility from libMigrator. NFC (#8766) 2017-04-13 18:31:41 -07:00
swift-ci
75274d6443 Merge remote-tracking branch 'origin/master' into master-next 2017-04-13 17:28:30 -07:00
swift-ci
50475a4fea Merge pull request #8760 from jrose-apple/fatal-errors-are-fatal 2017-04-13 17:22:05 -07:00
swift-ci
531cd847cd Merge remote-tracking branch 'origin/master' into master-next 2017-04-13 16:28:30 -07:00
swift-ci
7eab946d3f Merge pull request #8759 from eeckstein/pw-as-thunk 2017-04-13 16:14:18 -07:00
Jordan Rose
fb2db91a9d [Serialization] Route error() through fatal().
...for slightly better diagnostics before we crash. See e831dca9 and
7e8d642e.
2017-04-13 15:52:51 -07:00
swift-ci
76cea6e810 Merge remote-tracking branch 'origin/master' into master-next 2017-04-13 15:48:31 -07:00
Jordan Rose
b93ee5fbec [Serialization] Don't bother with interface types for typealiases. (#8752)
These are fully recreatable from the underlying type, and indeed we
do that already. No intended functionality change.
2017-04-13 15:45:45 -07:00
Erik Eckstein
8dcdb7a193 Mangler: Classify protocol witnesses as thunks.
Protocol witnesses just call the actual implementation in the conforming type.
2017-04-13 15:41:07 -07:00
swift-ci
eaa7f2eec1 Merge remote-tracking branch 'origin/master' into master-next 2017-04-13 15:28:42 -07:00
swift-ci
e7358a9ca1 Merge pull request #8750 from devincoughlin/exclusive-access-peephole 2017-04-13 15:28:32 -07:00
swift-ci
05aff8998a Merge remote-tracking branch 'origin/master' into master-next 2017-04-13 14:28:31 -07:00
Huon Wilson
6dd7b8c979 Merge pull request #8728 from huonw/symbol-list-4
More TBDGen work
2017-04-13 14:19:28 -07:00
Joe Groff
9ade487689 SIL: Allow computed components in KeyPathInst.
A computed component needs:

- A stable identifier for equality checking. This can be either a static function reference for concrete property implementations, or a reference into a vtable or witness table for a dynamically dispatched property. This should correspond to a public ABI interface for public things.
- Getter and setter (TODO: and materializeForSet) references. These might be thunks to reach the necessary abstraction level for the keypath implementation, so they can't be used as stable identifiers directly.
2017-04-13 14:18:28 -07:00
Huon Wilson
b59f95418c [SIL] Extract ClassVisibility from SILFunction to SubclassScope in SILLinkage. 2017-04-13 14:17:29 -07:00
Devin Coughlin
df2239e8a5 [SILGen] Disable emitAssignLValueToLValue peephole when enforcing exclusivity
The peephole causes the the formal access to the source and destination to
overlap. This results in unwanted exclusive access conflicts when assigning
from one struct stored property to another.

At John's suggestion I've added an isObviouslyNonConflicting() helper
method on LValue that tells when when it is safe to use the peephole
even when exclusivity enforcement enabled. For now, the helper is toothless. It
can be extended to claw back some of the peephole opportunities.
2017-04-13 13:51:24 -07:00
Slava Pestov
f8f8dca164 Mangler: Remove a bit of dead code from recent refactoring 2017-04-13 13:45:54 -07:00
Huon Wilson
22c9e20a9d [IRGen] Completely remove witness table offsets.
These are unused.
2017-04-13 11:44:01 -07:00
swift-ci
8ba55c1df6 Merge remote-tracking branch 'origin/master' into master-next 2017-04-13 11:08:32 -07:00
Erik Eckstein
789646a15b Demangling: Make demangled names more readable and further reduce the size of the simplified demangled names
The goal here is to make the short demangling as short and readable as possible, also at the cost of omitting some information.
The assumption is that whenever the short demangling is displayed, there is a way for the user to also get the full demangled name if needed.

*) omit <where ...> because it does not give useful information anyway

Deserializer.deserialize<A where ...> () throws -> [A]
--> Deserializer.deserialize<A> () throws -> [A]

*) for multiple specialized functions only emit a single “specialized”

specialized specialized Constructible.create(A.Element) -> Constructible<A>
--> specialized Constructible.create(A.Element) -> Constructible<A>

*) Don’t print function argument types:

foo(Int, Double, named: Int)
--> foo(_:_:named:)

This is a trade-off, because it can lead to ambiguity if there are overloads with different types.

*) make contexts of closures, local functions, etc. more readable by using “<a> in <b>” syntax
This is also done for the full and not only for the simplified demangling.

Renderer.(renderInlines([Inline]) -> String).(closure #1)
--> closure #1 in Renderer.renderInlines

*) change spacing, so that it matches our coding style:

foo <A> (x : A)
--> foo<A>(x: A)
2017-04-13 08:43:28 -07:00
Joe Groff
d6ced9d9e4 SIL: Rework KeyPathInst to accommodate computed components.
- Separate out a uniquable KeyPathPattern that describes the context-free shape of the key path, with generic parameters and (eventually) subscript index slots factored out.
- Add component kinds for gettable and settable properties.
2017-04-12 20:09:17 -07:00
swift-ci
f53141ee39 Merge remote-tracking branch 'origin/master' into master-next 2017-04-12 17:08:33 -07:00
Xi Ge
00b4d518bf IDE: Rename Edit*Consumer to SourceEdit*Consumer. NFC (#8732) 2017-04-12 16:56:39 -07:00
swift-ci
a81c5c7893 Merge remote-tracking branch 'origin/master' into master-next 2017-04-12 14:48:42 -07:00
swift-ci
5dbbeabf72 Merge pull request #8726 from nkcsgexi/edit-consumer 2017-04-12 14:35:33 -07:00
swift-ci
17533cca63 Merge remote-tracking branch 'origin/master' into master-next 2017-04-12 14:28:45 -07:00
John McCall
f733e761f4 Merge pull request #8724 from rjmccall/fix-value-type-recursion
Fix the type-checker's recursive value type checking.
2017-04-12 17:13:08 -04:00
swift-ci
26283ee3aa Merge remote-tracking branch 'origin/master' into master-next 2017-04-12 14:08:32 -07:00
Nathan Hawes
b333090754 Merge pull request #8722 from nathawes/rdar31433002-add-index-locals-option
[indexer] Add an option to index local symbols too, and a new index::indexDeclContext() entry point
2017-04-12 14:01:50 -07:00
Xi Ge
cc29886987 IDE/Utils: Move edit consumers to IDE utilities to allow broader audience. NFC 2017-04-12 13:05:57 -07:00
John McCall
b233e872dc Fix the type-checker's recursive value type checking.
Track the types we've seen instead of the type declarations we've
passed through, which eliminates some holes relating to generic types.
Detect infinite expansions by imposing an arbitrary limit.

Fixes rdar://30355804
2017-04-12 15:55:45 -04:00
swift-ci
87d4dcd450 Merge remote-tracking branch 'origin/master' into master-next 2017-04-12 11:48:31 -07:00
Slava Pestov
374db66e8b Merge pull request #8685 from slavapestov/subclass-existentials-silgen
Preliminary SILGen support for subclass existentials (SE-0156)
2017-04-12 11:44:23 -07:00
swift-ci
d419eee536 Merge remote-tracking branch 'origin/master' into master-next 2017-04-12 10:08:43 -07:00
Arnold Schwaighofer
69e6f07167 Merge pull request #8701 from aschwaighofer/wip_ast_silgen_const_string_literal
AST/SILGen support for constant string literals
2017-04-12 09:52:18 -07:00
Nathan Hawes
a57fd2a4b0 [indexer] Add an option to index local symbols too, and a new index::indexDeclContext() entry point
Resolves rdar://problem/31433002.
2017-04-12 09:04:03 -07:00
swift-ci
7e4b533fa4 Merge remote-tracking branch 'origin/master' into master-next 2017-04-12 07:48:32 -07:00