Commit Graph

1324 Commits

Author SHA1 Message Date
Dave Abrahams
a1d3895bd2 [stdlib] Plug a leak in String bridging
The way we bridge CFStringCreateCopy remains a nasty hack. The patch
attached to <rdar://20185167> is better, but that radar blocks the
better solution.

Fixes <rdar://20031203>.

Swift SVN r26223
2015-03-17 12:11:15 +00:00
Dmitri Hrybenko
4387f95a29 flatMap: fix the comment and simplify the implementation
rdar://20178405

Swift SVN r26205
2015-03-17 00:39:41 +00:00
Chris Lattner
7b13a367a7 clean up some uses of typed patterns in nested contexts. The only reason anyone was using
them was because of the obsolete AnyObject warning.


Swift SVN r26159
2015-03-15 18:26:24 +00:00
Dave Abrahams
d292f64d77 [stdlib] Eliminate unneeded _SignedNumberType protocol
As Dmitri as pointed out, our ~> dispatching doesn't require
underscored-protocol hacks any longer

Swift SVN r26157
2015-03-15 17:26:14 +00:00
Chris Lattner
20f8f09ea8 Land: <rdar://problem/19382905> improve 'if let' to support refutable patterns and untie it from optionals
This changes 'if let' conditions to take general refutable patterns, instead of
taking a irrefutable pattern and implicitly matching against an optional.

Where before you might have written:
  if let x = foo() {

you now need to write:
  if let x? = foo() {
    
The upshot of this is that you can write anything in an 'if let' that you can
write in a 'case let' in a switch statement, which is pretty general.

To aid with migration, this special cases certain really common patterns like
the above (and any other irrefutable cases, like "if let (a,b) = foo()", and
tells you where to insert the ?.  It also special cases type annotations like
"if let x : AnyObject = " since they are no longer allowed.

For transitional purposes, I have intentionally downgraded the most common
diagnostic into a warning instead of an error.  This means that you'll get:

t.swift:26:10: warning: condition requires a refutable pattern match; did you mean to match an optional?
if let a = f() {
       ^
        ?

I think this is important to stage in, because this is a pretty significant
source breaking change and not everyone internally may want to deal with it
at the same time.  I filed 20166013 to remember to upgrade this to an error.

In addition to being a nice user feature, this is a nice cleanup of the guts
of the compiler, since it eliminates the "isConditional()" bit from
PatternBindingDecl, along with the special case logic in the compiler to handle
it (which variously added and removed Optional around these things).




Swift SVN r26150
2015-03-15 07:06:22 +00:00
Joe Groff
fdde2a8e99 SIL: Add instructions for boxed existential operations.
Parsing and serialization for {Alloc,Open,Dealloc}ExistentialBox instructions to represent operations on ErrorType boxes.

Swift SVN r26145
2015-03-15 03:32:37 +00:00
Graham Batty
388f0dd5de Check if existing capacity is enough even on non-objc.
Fixes rdar://problem/20089729

Swift SVN r26109
2015-03-13 20:14:20 +00:00
Doug Gregor
c69294562e Clean up explicit protocol conformances in the standard library.
Eliminates redundant conformances and resolves ambiguous implied
conformances. NFC.

Swift SVN r26066
2015-03-12 21:11:12 +00:00
Enrico Granata
ac4e7329b8 Commit again with the proper indentation
Swift SVN r26057
2015-03-12 20:09:41 +00:00
Enrico Granata
566c462c10 Give StaticString a custom Reflectable conformance that reflects upon the string data
Fixes rdar://problem/19813456



Swift SVN r26051
2015-03-12 18:34:07 +00:00
Dmitri Hrybenko
013508df26 stdlib: fix the comment that was not updated during a refactoring
Swift SVN r26045
2015-03-12 08:47:26 +00:00
Chris Lattner
5549775677 enhance silgen to treat OptionalSomePattern and EnumElementPattern as
"similar", avoiding false positive "not exhaustive" diagnostics on switches
like:

switch ... {
case let x?: break
case .None: break
}

Also, start using x? patterns in the stdlib more (review appreciated!), which 
is what shook this issue out.



Swift SVN r26004
2015-03-12 00:39:43 +00:00
Dmitri Hrybenko
0614e46e3e stdlib: remove casts that are not required
Found by Chris Willmore.

Swift SVN r25969
2015-03-11 05:46:02 +00:00
Joe Groff
d1349f8424 Underscore ErrorType until it can be API-reviewed.
Swift SVN r25940
2015-03-10 19:11:48 +00:00
Chris Willmore
44da3ceb8c When typechecking the constraint inout $T1 < UnsafeMutablePointer<Void>, bind $T1 to Void as a last resort.
Revert stdlib changes in r25921.

<rdar://problem/19835413> Reference to value from array changed

Swift SVN r25939
2015-03-10 18:54:36 +00:00
Joe Groff
1cc7f59751 Add a KnownProtocol kind for ErrorType.
Swift SVN r25934
2015-03-10 17:31:34 +00:00
Chris Willmore
7cbadb1d2c When UnsafeMutablePointer<$T1> has a Conversion constraint to
UnsafeMutablePointer<Void>, don't bind $T1 to Void. This fixes an
unintentional dependency on the order in which constraints are visited
by the solver.

Fix some resulting underconstrained expressions in the stdlib.

<rdar://problem/19835413> Reference to value from array changed

Swift SVN r25921
2015-03-10 10:08:38 +00:00
Dave Abrahams
6423209466 [stdlib] Fix assert docs and semantics
We must not lie to the user or to the optimizer!

Swift SVN r25913
2015-03-10 04:37:12 +00:00
Dmitri Hrybenko
fae641f3cd Move readLine() to SwiftExperimental
This API did not go through API review.

Swift SVN r25904
2015-03-10 00:04:02 +00:00
Dmitri Hrybenko
b13758e6f4 Move floating point parsing APIs to SwiftExperimental
These APIs did not go through API review.

Swift SVN r25891
2015-03-09 19:04:22 +00:00
Dmitri Hrybenko
5ca75b75e3 Move integer parsing APIs to SwiftExperimental
These APIs did not go through API review.

Swift SVN r25890
2015-03-09 19:04:21 +00:00
Dmitri Hrybenko
e460eb6264 Revert "[stdlib] Replace aString.toInt() with Int(aString)"
This reverts commit r25636.  It depends on integer parsing APIs, which
are being moved to SwiftExperimental.

Swift SVN r25889
2015-03-09 19:04:18 +00:00
Dmitri Hrybenko
89d1d924bd CMake: unbreak the build on Linux after stdlib reorganization
Runtime should use LINK_LIBRARIES to link to ICU, since it is a static
archive, and we need this link dependency to be propagated to the
libswiftSwiftCore library.  I have no idea why it linked correctly
worked before.

Swift SVN r25881
2015-03-09 10:09:36 +00:00
Dmitri Hrybenko
350248dae5 Reorganize the directory structure under 'stdlib'
The standard library has grown significantly, and we need a new
directory structure that clearly reflects the role of the APIs, and
allows future growth.

See stdlib/{public,internal,private}/README.txt for more information.

Swift SVN r25876
2015-03-09 05:26:05 +00:00