Commit Graph

1194 Commits

Author SHA1 Message Date
Slava Pestov
cc0fcc56bf Add test case for rdar://21770225, which seems to have been fixed
I think John fixed this as part of the recent runtime and IRGen
work toward lazier metadata accesses.
2016-05-11 22:51:33 -07:00
Stephen Canon
772d7ec3c5 Merge branch 'SE-0067' of https://github.com/stephentyrone/swift into stephentyrone-SE-0067
Implements almost all of SE-0067. There are a few outstanding features; this implementation does not have:

- formRemainder(dividingBy:)
- formSquareRoot()
- addProduct(_:,_:)

which require additions to the Builtin module. I can probably figure out how to do these, but I haven't had a chance to do so yet. Also missing are the generic initializers and comparisons whose implementation depends on having new Integer protocols.

The last remaining feature of SE-0067 is that while the basic operators +,-,*,/, etc are moved onto the FloatingPoint protocol, they are still required on the concrete types in order to disambiguate overloads. Fixing this seems to require either modifying the overload resolution rules or removing these operators from some other protocols. Or it might just require that someone smarter than me looks at the problem.

Passes the existing tests locally (with the included changes). I'm working on additional tests for the new features.
2016-05-11 22:11:21 -04:00
Dmitri Gribenko
94f49d443d CGFloat: add CGFloat.init(CGFloat), which makes CGFloat similar to Float and Double
This is an API bugfix, this API was accidentally omitted when we added
CGFloat to the overlay, so no evolution proposal is necessary.
2016-05-11 11:45:58 -07:00
John McCall
82d849edd7 Remove the portions of these tests that were relying on old stdlib APIs.
Judging from history, the original tests appear to just be attempts to
flesh out test coverage rather than specific regression tests, and the
features in question are well-covered by other tests.
2016-05-10 14:17:35 -07:00
Jordan Rose
fee9c2a130 Allow importing pointer-returning methods as throwing. (#2420)
Leftover bits of SE-0055. Now that pointer nullability is reflected
in the type system, we can properly import throwing methods with
non-object pointer return types.

Note that Swift still won't let you declare them. That's coming next.
2016-05-09 09:58:09 -07:00
Stephen Canon
6429eabf74 Implement the new FloatingPoint protocols from SE-0067.
There are a couple of features that are not yet implemented, because they require additions to the Builtin module.  Specifically, this implementation does not have:

- formRemainder(dividingBy:)
- formSquareRoot()
- addProduct(_:,_:)

Also missing are the generic initializers and comparisons whose implementation depends on having new Integer protocols.

The last remaining feature of SE-0067 is that while the basic operators +,-,*,/, etc are moved onto the FloatingPoint protocol, they are still required on the concrete types in order to disambiguate overloads.  Fixing this seems to require either modifying the overload resolution rules or removing these operators from some other protocols.  Or it might just require that someone smarter than me looks at the problem.

Passes all the existing tests (with the included changes).  I'm working on additional tests for the new features.
2016-05-09 10:34:13 -04:00
Doug Gregor
c808b00314 Merge pull request #2423 from koke/sr-1395
SE-0070: Make Optional Requirements Objective-C-only.
2016-05-07 20:27:32 -07:00
Ted Kremenek
d3c41c4668 Revert "Revert "SE-0072: Fully eliminate implicit bridging conversions from Swift"" (#2441) 2016-05-06 23:26:45 -07:00
Ted Kremenek
4df003c291 Revert "SE-0072: Fully eliminate implicit bridging conversions from Swift" (#2440) 2016-05-06 23:22:56 -07:00
Joe Pamer
6af546e89e Merge pull request #2419 from apple/se-0072
SE-0072: Fully eliminate implicit bridging conversions from Swift
2016-05-06 22:14:13 -07:00
Chris Lattner
226a675ffc Update more tests to use ()'s around function types. 2016-05-06 21:07:08 -07:00
Michael Ilseman
8c65ef209e [CoreGraphics Renaming] Overhaul CG apinotes
Adds many more API renamings to CoreGraphics.apinotes
2016-05-06 14:52:24 -07:00
Michael Ilseman
667615307c [Import as Member] Skip needless prefix words.
When adding a prefix to the first argument of an initializer, skip
needless leading words such as "With" or "CF".
2016-05-06 14:50:58 -07:00
Jorge Bernal
0a3f913b20 SE-0070: Make Optional Requirements Objective-C-only.
Optional protocol requirements now require an explicit @objc attribute.

Fixes SR-1395
2016-05-06 11:05:52 +02:00
Joe Pamer
3b4d98445e SE-0072: Fully eliminate implicit bridging conversions from Swift
Per Swift Evolution proposal SE-0072, these changes prevent the compiler from introducing implicit bridging conversions during type checking.
2016-05-05 19:36:33 -07:00
Timothy J. Wood
0dbeca7728 [stdlib] SE-0061: Add Generic Result and Error Handling to autoreleas… (#2384)
* [stdlib] SE-0061: Add Generic Result and Error Handling to autoreleasepool()

Added `rethrows` and generic return type to ObjectiveC.autoreleasepool.
Added tests of these new capabilities.

Fixes SR-1394 and SR-842

* Updated for code style review.
2016-05-04 23:27:38 -07:00
Chris Willmore
4d540c2a24 Fix up missed test cases for SE-0054. 2016-05-03 14:59:58 -07:00
Chris Willmore
af0c7bd620 Initial implementation of SE-0054 "Abolish IUO Type" (#2322)
This is a squash of the following commits:

* [SE-0054] Import function pointer arg, return types, typedefs as optional

IUOs are only allowed on function decl arguments and return types, so
don't import typedefs or function pointer args or return types as IUO.

* [SE-0054] Only allow IUOs in function arg and result type.

When validating a TypeRepr, raise a diagnostic if an IUO is found
anywhere other thn the top level or as a function parameter or return
tpye.

* [SE-0054] Disable inference of IUOs by default

When considering a constraint of the form '$T1 is convertible to T!',
generate potential bindings 'T' and 'T?' for $T1, but not 'T!'. This
prevents variables without explicit type information from ending up with
IUO type. It also prevents implicit instantiation of functions and types
with IUO type arguments.

* [SE-0054] Remove the -disable-infer-iuos flag.

* Add nonnull annotations to ObjectiveCTests.h in benchmark suite.
2016-05-03 14:06:19 -07:00
Jordan Rose
f0c3bc25ff [IRGen] Don't emit ObjC class property metadata on old targets. (#2350)
The ObjC runtime on OS X 10.10 and older and iOS 9 and older can't
handle them, so for these targets, emit nil for all class property
lists.

It's a little unfortunate that this is target-dependent, but there's
not much we can do about it.

rdar://problem/25605427
2016-05-02 13:10:02 -07:00
Dmitri Gribenko
263d6a4135 Merge remote-tracking branch 'origin/master' into swift-3-indexing-model 2016-04-26 21:15:13 -07:00
Doug Gregor
2351085e76 Fix tests after allowing imports to clash with keywords 2016-04-26 17:38:12 -07:00
Dave Abrahams
debde16e2c Merge set-api branch into swift-3-indexing-model 2016-04-26 15:56:42 -07:00
Dmitri Gribenko
fc9c1f6a61 Merge remote-tracking branch 'origin/master' into swift-3-indexing-model 2016-04-26 10:20:31 -07:00
Joe Groff
c49a992598 Turn on import of ObjC generics. 2016-04-25 11:56:13 -07:00
Dmitri Gribenko
2a07df42b8 XFAIL compiler tests that depend on stdlib implementation details
<rdar://problem/25666028> swift-3-indexing-model: Generics/associated_self_constraints.swift
<rdar://problem/25665969> swift-3-indexing-model: Interpreter/protocol_extensions.swift fails
<rdar://problem/25890224> swift-3-indexing-model: TEST 'Swift :: NameBinding/reference-dependencies.swift' FAILED
2016-04-25 11:44:34 -07:00
Dmitri Gribenko
0984f81a50 Merge remote-tracking branch 'origin/master' into swift-3-indexing-model 2016-04-22 18:56:35 -07:00
Doug Gregor
bc158c31bf [Sema] Improve diagnostics for witness mismatches against @objc protocols.
Simplify and improve the checking of @objc names when matching a
witness to a requirement in the @objc protocol. First, don't use
@objc-ness as part of the initial screening to determine whether a
witness potentially matches an @objc requirement: we will only reject
a potential witness when the potential witness has an explicit
"@nonobjc" attribute on it. Otherwise, the presence of @objc and the
corresponding Objective-C name is checked only after selecting a
candidate. This more closely mirrors what we do for override checking,
where we match based on the Swift names (first) and validate
@objc'ness afterward. It is also a stepping stone to inferring
@objc'ness and @objc names from protocol conformances.

Second, when emitting a diagnostic about a missing or incorrect @objc
annotation, make sure the Fix-It gets the @objc name right: this might
mean adding the Objective-C name along with @objc (e.g.,
"@objc(fooWithString:bar:)"), adding the name to an
unadorned-but-explicit "@objc" attribute, or fixing the name of an
@objc attribute (e.g., "@objc(foo:bar:)" becomes
@objc(fooWithString:bar:)"). Make this diagnostic an error, rather
than a note on a generic "does not conform" diagnostic, so it's much
easier to see the diagnostic and apply the Fix-It.

Third, when emitting the warning about a non-@objc near-match for an
optional @objc requirement, provide two Fix-Its: one that adds the
appropriate @objc annotation (per the paragraph above), and one that
adds @nonobjc to silence the warning.

Part of the QoI improvements for conformances to @objc protocols,
rdar://problem/25159872.
2016-04-19 10:22:23 -07:00
Dmitri Gribenko
fc8d62dfbb Merge remote-tracking branch 'origin/master' into swift-3-indexing-model 2016-04-18 14:40:06 -07:00
practicalswift
c2107f456c [gardening] "[ a, b ]" → "[a, b]" (#2227) 2016-04-17 21:02:18 +02:00
Chris Lattner
f51fcdbbb6 stop using deprecated constructs. 2016-04-17 10:20:12 -07:00
Dmitri Gribenko
2b35fea059 Merge remote-tracking branch 'origin/master' into swift-3-indexing-model 2016-04-16 00:30:12 -07:00
Chris Lattner
8746676616 Move @noescape and @autoclosure to their new places in various tests, NFC. 2016-04-15 16:05:35 -07:00
Jordan Rose
25bdf21080 [test] Address review feedback from Dmitri. NFC. 2016-04-15 08:12:04 -07:00
Dmitri Gribenko
cfea1a3f58 Merge remote-tracking branch 'origin/master' into swift-3-indexing-model 2016-04-14 17:00:46 -07:00
Dmitri Gribenko
c52787e900 Merge commit '9cdbec13eee72feccfc5f8b987882a8c52e8107b' into swift-3-indexing-model 2016-04-14 16:23:53 -07:00
Dmitri Gribenko
3e708a9328 Merge commit '8e292daec1bc790c96b5ee39b8d55dadcac6ce1b' into swift-3-indexing-model 2016-04-14 15:10:26 -07:00
Dmitri Gribenko
10697f939f Merge commit '510f29abf77e202780c11d5f6c7449313c819030' into swift-3-indexing-model 2016-04-14 13:45:27 -07:00
Jordan Rose
1edaafaaa4 [SILGen] Use the signature of the real UIApplicationMain.
...instead of trying to guess it ourselves.

My previous attempt at this (part of the optional pointers work,
bc83940) made a critical mistake because our only test case /also/
referenced UIApplicationMain directly. I've made the test case test
several more situations, and also added what /would/ be an
execution test if our simulator testing handled UI-based tests.

rdar://problem/25712303
2016-04-14 09:20:19 -07:00
Michael Ilseman
ba431a9954 [Import as member] CoreGraphics: Import global vars onto classes
With support from 16baa6, we can now use correct inference bahavior,
which is to import global variables as members on classes.
2016-04-12 10:48:18 -07:00
Michael Ilseman
16baa6286c Merge pull request #2156 from jckarter/import-as-static-member-edge-cases
Clang importer: Global vars imported as static member properties are final.
2016-04-12 10:39:57 -07:00
Joe Groff
fe7c1ca670 Clang importer: Global vars imported as static member properties are final. 2016-04-12 10:03:48 -07:00
Jordan Rose
55b20d42d7 [test] Test invoking the ObjC entry point of a throwing method.
This previously blew up if the Objective-C client passed NULL for the
error parameter, but started working after the pointer nullability
change. Why? John had /already written and committed/ code to handle
NULL assuming pointer nullability was explicit, and that code was
/correct as is/.
2016-04-11 20:06:40 -07:00
Jordan Rose
a79a893f9a [test] Add new tests for pointers with explicit nullability. 2016-04-11 20:06:40 -07:00
Jordan Rose
bc83940301 Make pointer nullability explicit using Optional.
Implements SE-0055: https://github.com/apple/swift-evolution/blob/master/proposals/0055-optional-unsafe-pointers.md

- Add NULL as an extra inhabitant of Builtin.RawPointer (currently
  hardcoded to 0 rather than being target-dependent).
- Import non-object pointers as Optional/IUO when nullable/null_unspecified
  (like everything else).
- Change the type checker's *-to-pointer conversions to handle a layer of
  optional.
- Use 'AutoreleasingUnsafeMutablePointer<NSError?>?' as the type of error
  parameters exported to Objective-C.
- Drop NilLiteralConvertible conformance for all pointer types.
- Update the standard library and then all the tests.

I've decided to leave this commit only updating existing tests; any new
tests will come in the following commits. (That may mean some additional
implementation work to follow.)

The other major piece that's missing here is migration. I'm hoping we get
a lot of that with Swift 1.1's work for optional object references, but
I still need to investigate.
2016-04-11 20:06:38 -07:00
swift-ci
273c05a72d Merge pull request #2140 from milseman/coregraphics 2016-04-11 16:20:01 -07:00
swift-ci
239b71c71e Merge pull request #2039 from modocache/sr-1129-xfail 2016-04-11 16:05:10 -07:00
Michael Ilseman
151a19d3b8 [Import as member] Fixes to apinotes and tests
Fixes and clarifies a few API notes, and adds some test cases showing
current SILGen issues.
2016-04-11 11:31:12 -07:00
Ceyhun Ozugur
efd04e92e0 [test] Replaced some if true {} statements with do {} (#2117) 2016-04-10 21:45:33 -07:00
Brian Gesiak
ef1be86705 [test] Add a failing test for SR-1129
SR-1129 tracks an issue in which the linking step fails if a base class,
defined in an imported module with a `public private(set) var`, is subclassed
by another module. This adds a test that XFAILs on Linux. The test
passed on OS X.

This issue is currently forcing swift-corelibs-xctest and
swift-corelibs-foundation to mark several privately-used variables as
`public`.
2016-04-10 19:15:45 -04:00
Dmitri Gribenko
d52cbab5c2 Merge commit '0ff3239b962218267d37307e53906b31315a1cfc' into swift-3-indexing-model
This commit is the parent of the commit that implemented SE-0046
Establish consistent label behavior across all parameters including
first labels
2016-04-09 16:18:33 -07:00