Commit Graph

1442 Commits

Author SHA1 Message Date
Slava Pestov
0af2b4709f Sema: Fix crash with protocol erroneously nested inside generic class
The protocol Self parameter is the last generic parameter in the signature,
not the first. While we don't allow protocols nested inside generic classes,
we would still crash in member type lookup from this.

Fixes <rdar://problem/21287703>.

Swift SVN r30635
2015-07-25 19:55:12 +00:00
Slava Pestov
e373a559c6 Sema: Fix type member lookup if generic signature validation fails
When validateGenericFuncSignature() returns true, finalizeGenericParamList()
is never called. Name lookup, via PartialGenericTypeToArchetypeResolver would
return a dependent member type of the generic type parameter type, not an
archetype as expected in this case. This would later on lead to a crash in
ReplaceDependentTypes if the function body contained a reference to such a
member type.

Fix this by marking the GenericTypeParamDecls as invalid in this case, and
returning an ErrorType from PartialGenericTypeToArchetypeResolver if given
an invalid GenericTypeParamDecl.

While we're at it, there was an unused isInvalid local variable in
TypeCheckDecl::visitFuncDecl(). It was written to but never read. Replace
the writes with calls to setInvalid().

Fixes <rdar://problem/19620340>.

Swift SVN r30632
2015-07-25 19:55:07 +00:00
Chris Lattner
746e5aac49 remove this test, it isn't a good test.
Swift SVN r30627
2015-07-25 15:22:34 +00:00
Dmitri Hrybenko
7d61186d85 Revert "fix the validation test failure due to producing 'aka' more often."
... and actually fix the test.

Swift SVN r30625
2015-07-25 07:26:21 +00:00
Chris Lattner
649e5f937d generalize the existing ? and + constraints on expected diagnostics to
a simpler and more general * constraint.  This paves the way for other improvements.



Swift SVN r30622
2015-07-25 05:23:30 +00:00
Chris Lattner
57634fe8b9 fix the validation test failure due to producing 'aka' more often.
Swift SVN r30619
2015-07-25 03:59:18 +00:00
Dmitri Hrybenko
78222237e0 stdlib: remove FlattenCollection -- it does not model CollectionType properly.
An index of a FlattenCollection is composed of two: an index to the
current chunk and an index within that chunk.  So you take the
startIndex, and advance it to the second chunk; call the result idx1.
You take startIndex again, and advance it the same number of steps; call
the result idx2:

let idx1 = flatMapCollection.startIndex.advancedBy(10)
let idx2 = flatMapCollection.startIndex.advancedBy(10)

idx1 and idx2 have to compare equal according to collection and index
axioms.  But this can't be cheaply implemented.  Every index contains an
index into the inner collection.  So indices into two collections with
the same elements have to compare equal even though the collections
don't have any common history, they were merely created using the same
sequence of steps.

What currently happens is that you get random results depending on the
underlying collection kind.

rdar://21989896

Swift SVN r30617
2015-07-25 02:18:13 +00:00
Dmitri Hrybenko
739cceba3d stdlib: lazy FlattenCollection: don't invoke the closure as frequently
FlattenCollection used to evaluate the closure three times per element.
That's acceptable from the technical standpoint, given its lazy
semantics, but not acceptable in practice.  This commit fixes it to only
evaluate it two times when it is converted into an array.

This commit also improves tests.  The new checks used to fail before the
standard library was fixed.

But there are larger issues with FlattenCollection -- it does not model
CollectionType properly.  See next commit.

Swift SVN r30616
2015-07-25 02:18:12 +00:00
Dmitri Hrybenko
4b008e6f31 stdlib: rename RangeReplaceableCollectionType.splice() to insertContentsOf()
rdar://21972324

Swift SVN r30608
2015-07-25 00:36:39 +00:00
Dmitri Hrybenko
d97ac3e64c stdlib: rename RangeReplaceableCollectionType.extend() to appendContentsOf()
rdar://21972324

Swift SVN r30607
2015-07-25 00:36:37 +00:00
Doug Gregor
902f486c16 Don't allow superclass constraints to involve type parameters.
Fixes the crash in rdar://problem/21268222; eventually, we can support
this.

Swift SVN r30585
2015-07-24 18:45:06 +00:00
Dmitri Hrybenko
f5de8757e4 stdlib: remove Word and UWord
These types are leftovers from the early pre-1.0 times when Int and UInt
were always 64-bit on all platforms.  They serve no useful purpose
today.  Int and UInt are defined to be word-sized and should be used
instead.

rdar://18693488

Swift SVN r30564
2015-07-24 05:01:32 +00:00
Dmitri Hrybenko
1dbe75366b stdlib: add more tests for flatMap
These tests trigger a bug in a lazy flatMap() that I will fix in a later
commit, but I want to commit tests separately to show that they pass
with the eager flatMap().

Swift SVN r30559
2015-07-24 02:49:29 +00:00
Dmitri Hrybenko
0e299cd285 CoreMedia: add a test for CMTimeRange(start:duration:)
Patch by Adam Sonnanstine.

Swift SVN r30540
2015-07-23 16:23:51 +00:00
Dmitri Hrybenko
f44901dac6 CoreMedia overlay: change camel-casing of preferredTimeScale
Swift SVN r30538
2015-07-23 15:33:53 +00:00
Slava Pestov
abfcf63e7d Sema: Break recursion leading to 'Already set generic signature' crash
Swift SVN r30532
2015-07-23 06:49:21 +00:00
Slava Pestov
0033bda331 AST: Correct handling of ErrorType in TypeBase::getMemberSubstitutions()
Swift SVN r30531
2015-07-23 06:49:19 +00:00
Slava Pestov
226ada6fba Sema: The function may already have a type by this point
Swift SVN r30529
2015-07-23 06:49:13 +00:00
Luke Larson
eb8d11b48a 25847-emitsimpleassignment.swift crashes with -emit-silgen
Swift SVN r30506
2015-07-22 22:10:56 +00:00
Luke Larson
f15745b287 Add 622 new practicalswift tests
rdar://problem/21796335

Swift SVN r30504
2015-07-22 21:22:29 +00:00
Dmitri Hrybenko
b666b1af5b Un-XFAIL Unicode.swift in optimized mode
Joe fixed the bug in r30426.

Swift SVN r30498
2015-07-22 18:52:03 +00:00
Chris Lattner
7bcd2ebe84 Update validation test diagnostics for r30491
Swift SVN r30492
2015-07-22 06:15:56 +00:00
Dmitri Hrybenko
0525573de7 stdlib: use syntax sugar for Array
Swift SVN r30489
2015-07-22 04:16:22 +00:00
Dave Abrahams
a3cd6ea16e [stdlib] Fix-up for r30458
Swift SVN r30463
2015-07-21 21:57:06 +00:00
Jordan Rose
a27bc42f44 [test] Unstick the Linux bot on compiler_crashers.
Neither of these crash on Linux any more.

Swift SVN r30448
2015-07-21 16:54:11 +00:00
Chris Lattner
db49e9fe49 -verify mode in compiler_crashers isn't a good use of broken bots.
Swift SVN r30440
2015-07-21 04:44:38 +00:00
John McCall
0ea7b2fba9 Fix some validation-test regressions, mostly by tweaking tests
but also by being a little more defensive during recovery.

Swift SVN r30424
2015-07-21 00:32:26 +00:00
Chris Lattner
7b9404b4bb fix broken validation test exposes by recent elimination of implicit conversions,
instead of comparing pointers for equality, use strcmp.


Swift SVN r30412
2015-07-20 21:24:59 +00:00
Slava Pestov
6b7647c0a7 Sema: Don't set type of AssociatedTypeDecl until we have an archetype
Otherwise the verifier can crash because hasType() returns true but
getType() gives us a MetatypeType that hits a null pointer in
desugaring.

The computeType() calls appear in a few too many places for my liking;
would be nice to clean this up further or replace everything with
interface types one day.

Fixes <rdar://problem/19606899>.

Swift SVN r30388
2015-07-19 20:57:18 +00:00
Slava Pestov
e748908990 Sema: Don't set type of TypeAliasDecl until we resolve the alias type
This changes the behavior to match NominalTypeDecls, which don't have a type
until everything is set up either. In a few places we construct TypeAliasDecls
from known types directly, and we have to call computeType().

Fixes <rdar://problem/19534837>.

Swift SVN r30386
2015-07-19 20:55:53 +00:00
Dmitri Hrybenko
08a84ca5a1 stdlib tests: simplify map() calls with currying
Swift SVN r30379
2015-07-19 01:49:10 +00:00
Dmitri Hrybenko
420337a5bf stdlib: move forEach() test to the SequenceType testsuite
Swift SVN r30376
2015-07-19 01:22:08 +00:00
David Farler
0d1b03086d Add slicing extensions to SequenceType and CollectionType.
rdar://problem/21663830

Add the following new requirements to SequenceType with default implementations:

- dropFirst(n)
- dropLast(n)
- prefix(n)
- suffix(n)
- split(n)

In addition, provide specialized default implementations of these for CollectionTypes with forward, bidirectional, and random-access Index types where possible.

Add the following new requirements to CollectionType with default implementations:

- prefixThrough(n)
- prefixUpTo(n)
- suffixFrom(n)
- split() // isSeparator closure

Add the following convenience APIs:

- dropFirst() -> calls dropFirst(1)
- dropLast() -> calls dropLast(1)

Add a tentative underscored API:

- split() // takes Equatable separator.

Some APIs have undefined behavior when creating slices where the endpoints go beyond the bounds of the underlying collection. This will be fixed later by trapping creation of slices with invalid indices (rdar://problem/21822657).

Swift SVN r30371
2015-07-18 06:51:22 +00:00
Dave Abrahams
03f879bb87 [stdlib] Lazy flatMap
Addresses <rdar://problem/20138472>, can close after API review.

Swift SVN r30370
2015-07-18 06:50:27 +00:00
Dmitri Hrybenko
0fd6fd1f8f CoreMedia overlay: add an initializer CMTimeRange(start🔚)
rdar://20939243

Patch by Adam Sonnanstine + tests from me.

Swift SVN r30364
2015-07-18 03:35:08 +00:00
Joe Groff
6608221a72 stdlib: Remove _UnitTestArray.
rdar://problem/20246497

Swift SVN r30348
2015-07-18 00:14:28 +00:00
Dmitri Hrybenko
82ec7ea9d2 CoreMedia overlay: make CMTime Comparable, and CMTimeRange Equatable
Change approved by Adam Sonnanstine.

Swift SVN r30335
2015-07-17 22:26:58 +00:00
Slava Pestov
4e26069c8f Parse: Fix EndLoc of #if without #endif in parseDeclIfConfig(), and clean up duplication
Fixes <rdar://problem/19671208>.

Swift SVN r30314
2015-07-17 08:31:21 +00:00
Slava Pestov
c1b3569192 Parse: Fix crash with invalid protocol compositions, and improve error recovery
Fixes <rdar://problem/19686707>.

Swift SVN r30304
2015-07-17 05:57:22 +00:00
Slava Pestov
c83cc8ccd6 Parser: Fix a couple of crashes when parsing invalid enum cases
Also make some diagnostic wording more consistent.

Fixes <rdar://problem/19582394>.

Swift SVN r30300
2015-07-17 04:31:03 +00:00
Dmitri Hrybenko
109add8131 Foundation overlay: add NSCoder.decodeObjectOfClasses(_:forKey:)
Due to the fact that AnyClass is not Hashable, and that currently
NSKeyedArchiver/Unarchiver work with NSObject-derived, NSCoding
compliant classes, we are marking the decodeObjectOfClasses API refined
for Swift in our objc header and providing the desired overlay in our
overlay as shown below.

Arrays were also considered (for both API), but the underlying
implementation is entirely set-based, and using Arrays in Swift vs Sets
in objective C felt like too far a deviation.

Patch by Michael LeHew Jr.

Changes to the Dictionary test are caused by bumping the Fonudation API
epoch and taking in a fix in the types used in an NSDictionary
initializer.

rdar://21486551

Swift SVN r30297
2015-07-17 03:07:47 +00:00
Jordan Rose
7b37043857 Fix some but not all of the errors that had been fixed by the reverted commit.
...and regress a few cases that were previously passing. On the whole I think it's
a win, though.

Swift SVN r30296
2015-07-17 01:57:28 +00:00
Jordan Rose
2177a75b44 Revert "Validate decls before doing redeclaration checking."
It may fix a lot of crashers, but it breaks working code.

This reverts r30293.

Swift SVN r30294
2015-07-17 01:57:23 +00:00
Jordan Rose
6765a765a3 Validate decls before doing redeclaration checking.
This fixes a surprising number of compiler crashers. The reason this is an issue
at all is because we visit variables before their parent pattern binding decls.
(At least, that's one of the reasons...)

Swift SVN r30293
2015-07-17 00:22:24 +00:00
David Farler
241de1a1c3 Add popFirst/popLast implementations for some collections
Add the following non-customizable implementations:

- popFirst/popLast for Collections whose SubSequence == Self.
- Array.popLast
- ContiguousArray.popLast
- Set.popFirst
- Dictionary.popFirst

Swift SVN r30278
2015-07-16 22:52:05 +00:00
Dmitri Hrybenko
71c5bb9371 CoreMedia overlay: change CMTimeMakeWithSeconds into an initializer
Patch by Adam Sonnanstine.

rdar://20940262

Swift SVN r30271
2015-07-16 20:24:47 +00:00
Dmitri Hrybenko
e5e4335fad stdlib: Slice: trap on out-of-bounds indices
rdar://21822657

Swift SVN r30269
2015-07-16 18:22:40 +00:00
Dmitri Hrybenko
a41d7b7292 SDK overlay tests: disable a certain SceneKit test on non-OS X
Only OS X targets support COLLADA files.

rdar://20738811

Swift SVN r30265
2015-07-16 15:21:18 +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
Dmitri Hrybenko
9d27519a69 SDK overlay: fix a bug in the SceneKit overlay and re-enable the test
Patch by Amaury Balliet.

Part of rdar://20738811

Swift SVN r30234
2015-07-15 23:29:09 +00:00