Commit Graph

7182 Commits

Author SHA1 Message Date
Enrico Granata
fe27790126 Fix a problem where the legacy Mirror for ArraySlice would cause an out-of-bounds access if the slice is not zero-based
rdar://problem/22373053



Swift SVN r31398
2015-08-21 23:08:47 +00:00
Dmitri Hrybenko
bb3b00a0e0 stdlib: work around type checker not being able to deduce
RandomAccessIndexType.Distance

Fixes rdar://22373461, works around rdar://22381498

Swift SVN r31384
2015-08-21 18:18:23 +00:00
Dmitri Hrybenko
779444eec3 stdlib: rewrite the comment on CustomPlaygroundQuickLookable
It used to refer to Mirror and other related concepts, while it should
be refering to PlaygroundQuickLook.

rdar://21012615

Swift SVN r31374
2015-08-21 01:37:10 +00:00
Dmitri Hrybenko
951e65116d stdlib: document that unsafe pointers should be suitably aligned
rdar://21880864

Swift SVN r31373
2015-08-21 01:24:31 +00:00
Dmitri Hrybenko
f6e23d42cf stdlib: fix a bug in Character._SmallUTF8
8-byte UTF-8 sequences were throwing _SmallUTF8 into an infinite loop.

rdar://21005978

Swift SVN r31368
2015-08-20 21:49:36 +00:00
Dmitri Hrybenko
14466151eb stdlib: rename ImplicitlyUnwrappedOptional's parameter to Wrapped
We renamed the parameter of Optional, but missed
ImplicitlyUnwrappedOptional.

rdar://22332469

Swift SVN r31315
2015-08-18 22:33:10 +00:00
Dmitri Hrybenko
8311c05461 stdlib: add a default implementation for MutableCollection.subscript().set
rdar://20722366

Swift SVN r31241
2015-08-14 03:12:23 +00:00
David Farler
83a2b5cecd Provide renamed fixit for Optional.T -> Optional.Wrapped
rdar://problem/22281537

Swift SVN r31240
2015-08-14 02:18:31 +00:00
Chris Willmore
51f08e0285 Add FileReference object literals and _FileReferenceLiteralConvertible protocol.
<rdar://problem/21781451> Add file literal to Swift

Swift SVN r31232
2015-08-13 22:38:55 +00:00
Chris Willmore
e4ff8fdc05 Make image literals non-optional by routing delegation of non-failable
literal initializer to underlying failable initializer through
implicitly-failable initializer (proper solution is covered in
22276505).

<rdar://problem/20788137> Image literals should not be optional

Swift SVN r31229
2015-08-13 22:11:47 +00:00
Dmitri Hrybenko
33631ca9c4 stdlib: Fix a bug in split()
split() used to drop the tail of the sequence under certain
circumstances.

rdar://22200821

Swift SVN r31207
2015-08-13 05:31:07 +00:00
Dmitri Hrybenko
4efa7f4372 stdlib: fix the docs to refer to the actual parameter name
Swift SVN r31205
2015-08-13 04:59:16 +00:00
Dmitri Hrybenko
ee20926b20 stdlib: rename join() to joinWithSeparator()
rdar://22022419, rdar://21474222

Swift SVN r31188
2015-08-12 21:16:38 +00:00
Dmitri Hrybenko
22b15bda60 stdlib: loosen the type signature of join()
rdar://17696054

Swift SVN r31187
2015-08-12 21:16:35 +00:00
Dmitri Hrybenko
d6f04ade75 stdlib: convert join() into a protocol extension
Part of rdar://22022419

Swift SVN r31186
2015-08-12 21:16:25 +00:00
Dave Abrahams
713ae47caf [stdlib] Explicitly document how to print without trailing newline.
Swift SVN r31181
2015-08-12 18:46:43 +00:00
Joe Pamer
10afd159e4 Following up on r31169, take Jordan's CR feedback and uncomment the two currently disabled migration aid overloads for 'print'.
Swift SVN r31176
2015-08-12 18:10:35 +00:00
Joe Pamer
cd492d96b5 Fix a type checker crash when the object type of a ForceValueExpr is an 'Any'.
This allows us to remove the workaround generic overloads for "print" without sacrificing good diagnostics for its unavailable overloads. (rdar://problem/21499048, rdar://problem/21582758, rdar://problem/22126141)

Swift SVN r31169
2015-08-12 15:59:31 +00:00
Arnold Schwaighofer
afe39b3c1a Allow hoisting of uniqueness check in array.append
At -O I see about 10% improvement on Havlak, and 40% improvement on the recently
added array append benchmarks.

COWTree regresses by 15% because we hoist an append that is conditionally
executed. If we were to disallow hoisting of conditionally executed benchmarks
we would see big loses accross our benchmarks (for example, we would not hoist
out of nested loops anymore). So we will have to live with this regression.

rdar://17140639

Swift SVN r31120
2015-08-10 20:40:20 +00:00
David Farler
9f10b691e6 Reviewed: Containers should use debug description of their elements in both description and debugDescription
- Don't need CollectionOfOne.description
- Don't use private functions for shared internal functions for
  constructing descriptions

Swift SVN r31071
2015-08-07 08:52:35 +00:00
David Farler
5091dc244d Really fix the Optional map/flatMap mismerge
Swift SVN r31070
2015-08-07 08:20:27 +00:00
David Farler
697d0dbd4f Build fix: mismerge in Optional.swift
Swift SVN r31069
2015-08-07 07:10:45 +00:00
David Farler
4848235c7f Rename Optional type parameter from 'T' to 'Wrapped'.
rdar://problem/21970065

Swift SVN r31068
2015-08-07 06:17:20 +00:00
David Farler
9aa7663ad3 Always debugPrint containers' elements
rdar://problem/19312992

Swift SVN r31067
2015-08-07 06:14:19 +00:00
Dmitri Hrybenko
255d2229c7 stdlib: remove erroneous @warn_unused_result annotations
Swift SVN r31050
2015-08-06 15:54:47 +00:00
Dmitri Hrybenko
dd3194a18c stdlib: adopt @warn_unused_result
rdar://20957486

Swift SVN r31048
2015-08-06 14:53:18 +00:00
Dave Abrahams
f59279dc31 [stdlib] Fix a couple of availability message
Swift SVN r31025
2015-08-05 20:02:34 +00:00
Dmitri Hrybenko
827224f146 stdlib: clarify the behavior of sequences and for loops
This is not a new rule, this is just a consequence (although a
non-trivial one) of existing rules.

Swift SVN r31024
2015-08-05 19:06:10 +00:00
Arnold Schwaighofer
e0d069a0e0 stdlib: Call _print_unlocked directly in String.init
Then we can get rid of the specialized print function.

Swift SVN r31022
2015-08-05 14:44:13 +00:00
Jordan Rose
54cca1a2fa Restore fully-general signature for IntervalType.overlaps.
rdar://problem/22085137

Swift SVN r31010
2015-08-04 21:57:03 +00:00
David Farler
8eec4b6e13 RangeReplaceable: document and enforce count >= n for removeFirst(n)
Swift SVN r31001
2015-08-04 19:41:14 +00:00
Arnold Schwaighofer
9c77c05696 stdlib: Call a private specialized version in String.init
The print abi changed so that there is no longer a way to print one item to a
stream without going through a vararg array. We call the print function in a
String initializer (e.g for string interpolation) incurring unnecessary
overhead. Use an internal specialized version of print instead.

rdar://22133281

Swift SVN r31000
2015-08-04 19:19:50 +00:00
Arnold Schwaighofer
8c112d1fea stdlib: Always inline the _UnsafePartiallyInitializedContiguousArrayBuffer builder functions
For performance reasons.

This should now truly have recovered PrimeNum's performance at -O.

rdar://22126579

Swift SVN r30988
2015-08-04 07:49:40 +00:00
David Farler
313a4c93c6 Review: Index protocol extensions
- Add Strict/Defaulted Index types to StdlibUnittest
- Test whether a random access index calls its more efficient
  customization by tracking successor calls.
- Fix the RandomAccessIndex.advancedBy(n, limit:) API by de-underscoring
  the limit parameter
- Inline some internal transparent default implementations to their only
  call site
- Attach _RandomAccessAmbiguity type to RandomAccessIndex

rdar://problem/22085119

Swift SVN r30979
2015-08-04 03:13:14 +00:00
Jordan Rose
03e3dc2e2d stdlib: Workaround for IntervalType.overlaps to avoid a SIL parser error.
The parse_stdlib tests choke on the constraints that were there previously,
so weaken the API to only work on intervals of the same type for now.

rdar://problem/22126470

Swift SVN r30977
2015-08-04 02:10:49 +00:00
Joe Pamer
828eb68e72 Commit DaveA's API changes to 'print', along with the compiler changes necessary to support them.
There's still work left to do. In terms of next steps, there's still rdar://problem/22126141, which covers removing the 'workaround' overloads for print (that prevent bogus overload resolution failures), as well as providing a decent diagnostic when users invoke print with 'appendNewline'.

Swift SVN r30976
2015-08-04 01:57:11 +00:00
Jordan Rose
c5bc10a597 stdlib: Update a comment I missed on Strideable.
Swift SVN r30975
2015-08-04 01:34:38 +00:00
Jordan Rose
83e2e0bbb2 Move the 'stride' family into methods on Strideable.
Part of the Protocol Extensions TLF.

rdar://problem/22085144

Swift SVN r30974
2015-08-04 01:32:41 +00:00
Jordan Rose
1ee08fe92a stdlib: Move 'overlaps' into a method on IntervalType.
Part of the Protocol Extensions TLF.

rdar://problem/22085137

Swift SVN r30973
2015-08-04 01:32:36 +00:00
Jordan Rose
953424072e Guard "object literals" feature with SWIFT_ENABLE_OBJECT_LITERALS.
This is not a feature we're releasing at the moment, so provide a way
to turn it off.

rdar://problem/21935551

Swift SVN r30966
2015-08-04 00:16:52 +00:00
David Farler
311baf73cf Index protocol extensions
- Remove free Swift functions for advance and distance and replace
  them with protocol extension methods:
  - advancedBy(n)
  - advancedBy(n, limit:)
  - distanceTo(end)
- Modernize the Index tests
  - Use StdlibUnittest
  - Test for custom implementation dispatch

Perf impact: No significant changes reported in the
Swift Performance Measurement Tool.

rdar://problem/22085119

Swift SVN r30958
2015-08-03 20:06:44 +00:00
Jordan Rose
a41c1fe7cb [stdlib] Don't try to swap an element with itself in 'partition'.
(or in 'randomShuffle')

This violates our inout aliasing rules, and can cause a crash in certain
situations.

To try to prevent this in the future I've added a debugPrecondition check
to 'swap' that checks addresses. This will only catch inout violations
where neither argument uses writeback, and might some day be optimized
away. Right now, though, it does seem to catch some simple violations
(though not the one in the Radar), so hopefully it will at least help keep
us from introducing new problems.

rdar://problem/21780567

Swift SVN r30956
2015-08-03 19:51:29 +00:00
Dmitri Hrybenko
9a77d843da stdlib: update references to 'isEmpty' in comments
Swift SVN r30954
2015-08-03 19:22:57 +00:00
Michael Gottesman
3fe541625c Do not copy a SliceBuffer when we have the full native buffer. Just return it.
Fixes the RangeAssignment regression. Reviewed by Dmitri.

<rdar://problem/22078500> RangeAssignment regressions in r30794

Swift SVN r30925
2015-08-02 04:42:53 +00:00
Dave Abrahams
ad43a596bd [stdlib] Retire the old lazy subsystem...
...replacing it with the new, after passing API review!

* The lazy free function has become a property.

* Before we could extend protocols, we lacked a means for value types to
  share implementations, and each new lazy algorithm had to be added to
  each of up to four types: LazySequence, LazyForwardCollection,
  LazyBidirectionalCollection, and LazyRandomAccessCollection. These
  generic adapters hid the usual algorithms by defining their own
  versions that returned new lazy generic adapters. Now users can extend
  just one of two protocols to do the same thing: LazySequenceType or
  LazyCollectionType.

* To avoid making the code duplication worse than it already was, the
  generic adapters mentioned above were used to add the lazy generic
  algorithms around simpler adapters such as MapSequence that just
  provided the basic requirements of SequenceType by applying a
  transformation to some base sequence, resulting in deeply nested
  generic types as shown here. Now, MapSequence is an instance of
  LazySequenceType (and is renamed LazyMapSequence), and thus transmits
  laziness to its algorithms automatically.

* Documentation comments have been rewritten.

* The .array property was retired

* various renamings

* A bunch of Gyb files were retired.

Swift SVN r30902
2015-08-01 03:52:13 +00:00
Dmitri Hrybenko
d7caf06551 stdlib: rename generic parameter of _SliceBuffer from T to Element
Swift SVN r30901
2015-08-01 03:27:07 +00:00
Dmitri Hrybenko
d822a90ed4 stdlib: fix warnings
Swift SVN r30900
2015-08-01 02:59:43 +00:00
Dave Abrahams
7d5bb5f080 [stdlib] new print: move "toStream" argument to end
It reads more naturally to keep all the text arguments together.
One day maybe this will be a method on OutputStream, but probably not as
long as String conforms to it :-)

Swift SVN r30864
2015-07-31 20:19:49 +00:00
David Farler
7a49dda2c8 Add @warn_unused_result to map, flatMap, and filter
rdar://problem/21971932

Swift SVN r30849
2015-07-31 05:15:10 +00:00
David Farler
034d0cfbf0 Fix three-way mid-air collision around Array buffers and RangeReplaceable tests
Swift SVN r30843
2015-07-31 04:43:03 +00:00