Commit Graph

5543 Commits

Author SHA1 Message Date
David Farler
f1c5e503a9 Doc review: tweak SequenceType.forEach's doc comment
No functional change.

Swift SVN r30250
2015-07-16 04:28:43 +00:00
David Farler
86f1a7088b Review: Rename SequenceType.forEach parameter to 'body'
No functional change.

Swift SVN r30249
2015-07-16 04:07:17 +00:00
Dave Abrahams
9963996fee [stdlib] Move lazy filter prototype into stdlib
(still underscored pending review).

Swift SVN r30248
2015-07-16 03:50:46 +00:00
David Farler
8f78e7ab16 Make ExtensibleCollectionType diagnostic use "renamed" for better fixit
rdar://problem/21710469

Swift SVN r30242
2015-07-16 00:01:02 +00:00
David Farler
91b89b8956 Add SequenceType.forEach requirement and default implementation
rdar://problem/21663830

Swift SVN r30236
2015-07-15 23:36:23 +00:00
Arnold Schwaighofer
27f792f308 Re-@noescape the isOrderedBefore closure argument to sort
The blocking optimization was added.

rdar://21024092

Swift SVN r30227
2015-07-15 21:44:45 +00:00
Dave Abrahams
198bf8072c [stdlib] Put "Lazy" in the names of new lazy things
Once you buy into the lazy system with a.lazy... you should see it in
the type.

Swift SVN r30216
2015-07-15 06:16:45 +00:00
Dave Abrahams
91f17ec375 [stdlib] ReverseCollection isn't implicitly lazy
You have to ask for it explicitly at some point in the chain.

Swift SVN r30213
2015-07-15 05:45:47 +00:00
Dmitri Hrybenko
e96251b0c4 stdlib: document complexity requirements for some CollectionType APIs
rdar://20167702

Swift SVN r30209
2015-07-15 01:59:47 +00:00
Andrew Trick
77ff5b7e57 Convert the new ArrayBuffer assert to _sanityCheck. We don't need it at -Onone.
Swift SVN r30185
2015-07-14 06:14:12 +00:00
Andrew Trick
6d03fe0a73 Add an assert to ArrayBuffer.getElementSlowPath.
The implementation is making a strong assumption about the array
element type (single-reference layout), but it is extremely
non-obvious that this helper is only called for those element types.

Swift SVN r30183
2015-07-14 05:09:46 +00:00
Joe Groff
db0fea590e stdlib: Use unqualified names in 'print'.
Leave the qualification off of enum cases and type names when 'print'-ing them, but keep them on 'debugPrint'. (At least, at the outermost level; since ad-hoc printing of structs and tuples uses debugPrint, we'll still get qualification at depth, which kind of sucks but needs more invasive state management in print to make possible.) Implements rdar://problem/21788604.

Swift SVN r30166
2015-07-13 21:42:11 +00:00
Joe Pamer
0e35bad9dc Revert "[stdlib] Remove workarounds for fixed bug"
This reverts commit r30148, since it regresses the following tests:

   Swift :: ClangModules/script.swift
   Swift :: Interpreter/currying_protocols.swift
   Swift :: Interpreter/if_expr.swift
   Swift :: Interpreter/protocol_extensions.swift
   Swift :: Interpreter/weak.swift
   Swift :: Interpreter/weak_objc.swift
   Swift :: PlaygroundTransform/array_did_set.swift
   Swift :: PlaygroundTransform/print.swift

Swift SVN r30159
2015-07-13 19:48:08 +00:00
Dave Abrahams
c0399e240f [stdlib] Remove workarounds for fixed bug
Also fixes rdar://21582758

Swift SVN r30148
2015-07-13 16:52:57 +00:00
Dave Abrahams
88aaed0a0c [stdlib] Move most of the lazy prototype into the stdlib
Swift SVN r30144
2015-07-13 15:36:17 +00:00
Dmitri Hrybenko
7ae303aeb3 Update Unicode data files to 8.0.0
rdar://19582621

Swift SVN r30141
2015-07-13 08:00:39 +00:00
Dmitri Hrybenko
b4ec45d625 stdlib: make Slice.init(base:bounds:) public
Swift SVN r30113
2015-07-11 05:58:06 +00:00
Dmitri Hrybenko
be5ef02bd0 Revert "stdlib: make Slice.init(base:bounds:) public"
This reverts commit 30111.  It broke the buildbots.

Swift SVN r30112
2015-07-11 05:34:05 +00:00
Dmitri Hrybenko
26ebe14178 stdlib: make Slice.init(base:bounds:) public
Swift SVN r30111
2015-07-11 05:20:41 +00:00
Dave Abrahams
9d07acd368 [stdlib] SequenceType's _initializeTo should return the end position
Otherwise, the length of the sequence is in principle lost.  If you know
you have a sequence of less than 100 elements, you still want to know
exactly how many elements you initialized from it.

Swift SVN r30104
2015-07-11 01:43:27 +00:00
Doug Gregor
29764dc34d Remove the ability to access the "0" member of a scalar.
This is a travesty that makes it hard to reason about tuple vs. scalar
types. It's only use in our own code involved dealing with the
difference in element types between Set and Dictionary in
gyb-generated code. Ewww. Fixes rdar://problem/17963034.

Swift SVN r30074
2015-07-10 17:28:53 +00:00
Jordan Rose
e1ffbbbcf5 Import MacTypes.Boolean as a dedicated DarwinBoolean type.
Like ObjCBool is a legitimate boolean type rather than a typealias for Int8,
DarwinBoolean is better than a typealias for UInt8. It's a BooleanType
(meaning you can use it directly in if/while/?:) and BooleanLiteralConvertible
(meaning you can use 'true' and 'false').

The next commit goes even further, so that you only have to deal with
DarwinBoolean when ABI is important. At all other times it should be
bridged with Bool, just like ObjCBool.

rdar://problem/19013551

Swift SVN r30050
2015-07-10 01:11:25 +00:00
Dmitri Hrybenko
a725d1e7e3 Fix a comment in a test
Swift SVN r30046
2015-07-09 23:24:59 +00:00
Dave Abrahams
ce8e51346c [stdlib] Remove a redundant and un-specific protocol extension
There's a better one in Sequence.swift; moving the comment there.

Swift SVN r30038
2015-07-09 20:27:19 +00:00
Dave Abrahams
913f09838a [stdlib] Add a default generate() for generators...
...that are also sequences, and rip out all redundant implementations of
generate() that match a default.

Swift SVN r30035
2015-07-09 19:49:24 +00:00
Mark Lacey
da983196a3 Add a specialization of extend for collections.
The specialization uses += operator for collections, which performs much
better than the += operator for sequences.

The extend benchmark from rdar://problem/21689050 improves by:
- 2500x with -O
- 15x with -O -whole-module-optimization

Unfortunately we still seem to be about 100x slower than the user's
memcpy version of the same benchmark with -O -whole-module-optimization.

Swift SVN r30033
2015-07-09 18:28:03 +00:00
Dave Abrahams
1870bb747e [stdlib] var => let suppresses a warning
Swift SVN r30027
2015-07-09 17:22:48 +00:00
Dave Abrahams
b023c10640 [stdlib] Concatenate.swift.gyb cleanups/optimizations
Swift SVN r30024
2015-07-09 17:10:33 +00:00
Joe Groff
0b54e21629 simd overlay: Use LLVM vector types.
This brings the David Owens benchmark from http://owensd.io/2015/06/27/performance-xcode7-beta-2.html from parity with simd.h-based C to 3x faster.

Before:

RenderGradient ([UInt32].withUnsafeMutablePointer (SIMD))                 │ 7.035851 │ 6.304739 │ 9.815832 │  1.212 │

After:

RenderGradient ([UInt32].withUnsafeMutablePointer (SIMD))                 │ 2.318357 │ 2.223325 │ 2.697981 │ 0.1490 │

This also addresses rdar://problem/21574425, since Builtin.add_VecNxIntM isn't overflow-checked, and overflow checks really aren't wanted when working with vector types directly.

Reapplying now that Nadav's fixed the ARM64 SelectionDAG issue this exposed before, and Arnold's fixed
yet another SelectionDAG issue exposed after that.

Swift SVN r30006
2015-07-09 01:20:01 +00:00
Joe Groff
ab1f459a40 Runtime/stdlib: Non-verbatim bridging of metatypes.
Metatypes can't directly conform to _ObjectiveCBridgeable, but we can pretend they do by making a struct with the same ABI conform and returning that conformance when we call findBridgeWitness on a metatype. Fixes rdar://problem/16238475.

Swift SVN r29999
2015-07-08 23:23:55 +00:00
Mark Lacey
9c713556d7 Remove a work-around from extend().
The test case in the radar appears to compile without issue now, and
moving this code back inline appears to work.

Swift SVN r29992
2015-07-08 20:56:08 +00:00
Dave Abrahams
b650ca7b6d [stdlib] Fix a bug in advance(start, n, end)
Long-standing bug: it didn't work for random access indices
when start == end!

Swift SVN r29982
2015-07-08 18:37:11 +00:00
Erik Eckstein
facf122848 stdlib: replace some overflow with non-overflow additions/subtractions in hashed collections.
This removes some unneeded overflow checks in the loop which iterates over the buckets.



Swift SVN r29975
2015-07-08 15:29:20 +00:00
Doug Gregor
c410bce986 We cannot validate a declaration while its context is being type-checked.
Fixes rdar://problem/21538521 and a few crashers.

Swift SVN r29957
2015-07-08 04:21:51 +00:00
Jordan Rose
1edf9b3ae8 Check access for associated type requirements, too.
This is a straight-up "oops". You could always get to these typealiases via
the protocol, but like the member requirements you should have to say so.

Swift SVN r29952
2015-07-08 00:43:37 +00:00
Arnold Schwaighofer
8517b7ba08 Revert "Un-XFAIL test on Linux."
Revert "simd overlay: Use LLVM vector types."

This reverts commit r29922 and r29924.

More arm64 instruction selection errors.

rdar://21703486

Swift SVN r29941
2015-07-07 16:45:08 +00:00
David Farler
4d17bf0691 Remove SinkType and SinkOf
Remove these standard library types in favor of (T) -> () closures.

It was originally believed that generic optimizations would make these
types profitable, however:

// FIXME: Insert benchmarks here.

rdar://problem/21663799

Swift SVN r29927
2015-07-07 00:36:12 +00:00
Joe Groff
9a23fa9040 simd overlay: Use LLVM vector types.
This brings the David Owens benchmark from http://owensd.io/2015/06/27/performance-xcode7-beta-2.html from parity with simd.h-based C to 3x faster.

Before:

RenderGradient ([UInt32].withUnsafeMutablePointer (SIMD))                 │ 7.035851 │ 6.304739 │ 9.815832 │  1.212 │

After:

RenderGradient ([UInt32].withUnsafeMutablePointer (SIMD))                 │ 2.318357 │ 2.223325 │ 2.697981 │ 0.1490 │

This also addresses rdar://problem/21574425, since Builtin.add_VecNxIntM isn't overflow-checked, and overflow checks really aren't wanted when working with vector types directly.

Reapplying now that Nadav's fixed the ARM64 SelectionDAG issue this exposed before.

Swift SVN r29922
2015-07-06 22:56:42 +00:00
David Farler
402bbd3813 RangeReplaceableCollectionType review changes
- Clean up tests
  - Create API-specific test structures with clearer labels
  - Use `OpaqueValue`s in test collections
  - Make tests non-generic to allow array literal declarations
  - Remove some unused functions
  - Test return values for mutating functions that return a value
  - Add expect* test source locations
- Add _customRemoveLast ad-hoc default implementation for `removeLast`
- Add default implementation for reserveCapacity that does nothing.

Swift SVN r29905
2015-07-03 02:14:22 +00:00
Dave Abrahams
fb241acf6f [stdlib] kill __ArrayType
Swift SVN r29895
2015-07-02 18:47:05 +00:00
Joe Groff
e692c87bbf Revert "simd overlay: Use LLVM vector types."
This reverts commit r29891. It causes an LLVM assertion failure in SelectionDAG on appletvos-arm64.

Swift SVN r29893
2015-07-02 17:31:34 +00:00
Joe Groff
8103dfb825 simd overlay: Use LLVM vector types.
This brings the David Owens benchmark from http://owensd.io/2015/06/27/performance-xcode7-beta-2.html from parity with simd.h-based C to 3x faster.

Before:

RenderGradient ([UInt32].withUnsafeMutablePointer (SIMD))                 │ 7.035851 │ 6.304739 │ 9.815832 │  1.212 │

After:

RenderGradient ([UInt32].withUnsafeMutablePointer (SIMD))                 │ 2.318357 │ 2.223325 │ 2.697981 │ 0.1490 │

This also addresses rdar://problem/21574425, since Builtin.add_VecNxIntM isn't overflow-checked, and overflow checks really aren't wanted when working with vector types directly.

Swift SVN r29891
2015-07-02 17:05:29 +00:00
Dmitri Hrybenko
1edcc49ff9 stdlib: remove Slice.Element typealias
It is misleading in generic code.  A testcase that was failing:

  expectEqualType(C.Generator.Element.self, Slice<C>.Element.self)

Swift SVN r29887
2015-07-02 06:44:38 +00:00
Jordan Rose
d0a6713f66 [stdlib] Make some typealiases more public, since they're used in public ways.
The next commit will start enforcing this.

Swift SVN r29862
2015-07-01 23:34:35 +00:00
Dave Abrahams
59997efa2a [stdlib] Make _CollectionWrapperType usable
It was neither testable (because it was internal) nor usable (because in
practice models would be full of ambiguities with methods provided in
extensions for CollectionType.

Swift SVN r29859
2015-07-01 22:51:37 +00:00
David Farler
438119d558 Fold ExtensibleCollectionType into RangeRaplaceableCollectionType
ExtensibleCollectionType's operations can all be represented by the
primitive range replacement operation, so fold it into
RangeReplaceableCollectionType.

In addition, provide default implementations of
RangeReplaceableCollectionType's methods.

- New tests added for combinations of (static, generic) calls and
  (default, custom) implementations.
- Mark free Swift functions as unavailable with a message to direct the
  developer to the protocol methods.
- Mark ExtensibleCollectionType as available with a message added to
  direct the developer to the right protocol.

rdar://problem/18220295

Swift SVN r29857
2015-07-01 22:33:04 +00:00
Dmitri Hrybenko
a3f74461fb stdlib: remove an explicit Slice.generate(), it is supplied by a protocol extension
Swift SVN r29848
2015-07-01 18:44:59 +00:00
Dmitri Hrybenko
fc0fa96371 stdlib: de-underscore Indexable and add tests for it
Swift SVN r29847
2015-07-01 18:31:31 +00:00
Dmitri Hrybenko
76f5706b50 stdlib: de-underscore the Slice type and add tests for it
Swift SVN r29846
2015-07-01 18:31:29 +00:00
Dmitri Hrybenko
80b1380fe8 stdlib: fold Sliceable into CollectionType and de-underscore SubSequence
Swift SVN r29845
2015-07-01 18:31:25 +00:00