Commit Graph

7859 Commits

Author SHA1 Message Date
Jordan Rose
63b0cf6997 [test] Remove -verify from former compiler_crasher.
(changed in my previous commit)

Swift SVN r30699
2015-07-27 21:59:22 +00:00
Jordan Rose
9e5631c50b [test] More type annotations for faster builds.
Swift SVN r30697
2015-07-27 20:32:59 +00:00
Jordan Rose
b378a5043f [stdlib] Dictionary and Set's removeAtIndex should return the element.
For Dictionary, that's a (KeyType, ValueType) pair. For Set, that's just
the set element type. This is more consistent with the removeAtIndex on
RangeReplaceableCollectionType (which Dictionary and Set don't conform to).

rdar://problem/20299881

Swift SVN r30696
2015-07-27 20:32:55 +00:00
Dave Abrahams
f37d607a13 Revert "stdlib: remove FlattenCollection -- it does not model CollectionType properly."
Actually we hadn't nailed down the indexing model sufficiently; now we
have.

This reverts r30617.

Swift SVN r30694
2015-07-27 19:33:15 +00:00
Slava Pestov
ccf21ff90a Revert "Sema: Fix infinite recursion when associated type default references itself"
This reverts revision r30688. The patch needs more work, because it flags a
valid case as circular, see r15054, "Relax restriction on indirectly-self-
recursive protocol conformances.  (rdar://problem/16306715)".

Swift SVN r30690
2015-07-27 06:41:10 +00:00
Slava Pestov
29d3f8f400 Sema: Fix infinite recursion when associated type default references itself
Fixes <rdar://problem/20985232>.

Swift SVN r30688
2015-07-27 05:05:05 +00:00
Dmitri Hrybenko
6ec144738e stdlib: Add more APIs to _stdlib_AtomicInt
Requested in rdar://17171396

Swift SVN r30687
2015-07-27 04:18:13 +00:00
Dmitri Hrybenko
49adc5b362 Allow running iOS tests that don't require a device without a device attached
Swift SVN r30679
2015-07-27 00:42:46 +00:00
Slava Pestov
65b317fa36 Sema: Fix infinite recursion when checking if class with circular inheritance has failable initializer
Fixes <rdar://problem/19919421>.

Swift SVN r30677
2015-07-27 00:40:45 +00:00
Slava Pestov
1a34667419 AST: Fix a couple of crashes with nested generic types
- When we walk up through parent types of 'this', we also have to walk up
  the parent contexts of 'gpContext', otherwise an assertion fires.

- getSuperclass() needs to map generic type parameters of the parent
  type even if the superclass is not generic.

Swift SVN r30676
2015-07-27 00:40:43 +00:00
Slava Pestov
7dd472686a Sema: When recursively visiting a BoundGenericType, it may not have a generic signature yet
Let the original call diagnose any problems and just return successfully
without crashing.

Swift SVN r30675
2015-07-27 00:40:41 +00:00
Slava Pestov
7bca00afc1 Sema: When adding implicit constructors, bail out if superclass is invalid
Swift SVN r30674
2015-07-27 00:40:38 +00:00
Slava Pestov
5cc4f2b93d Sema: Use isTypeChecking() to avoid recursively validating EnumElementDecls
Validating the argument type might validate the enum decl in malformed (or
maybe even some valid?) code. We would call computeTwice() in this case,
leading to a crash.

Also clean up some test cases.

Swift SVN r30673
2015-07-27 00:40:37 +00:00
Chris Lattner
afe762c882 remove diagnostic messages from expected- markers that change. If the specifics
being tested are important, they should be tested in the main testsuite.  Leave
the 'word' validation messages.


Swift SVN r30667
2015-07-26 22:26:59 +00:00
Chris Lattner
eff5cb3d48 remove a -verify line from a validation test.
Swift SVN r30663
2015-07-26 21:47:27 +00:00
Dmitri Hrybenko
69531fd8f8 Restore FixedPointDiagnostics.swift.gyb, it is a useful test
1. We have complex logic in stdlib/public/core/FixedPoint.swift.gyb that emits
or hides certain initializers on integer types based on the bit width
combination.  We check that those APIs are indeed present or absent in cases we
expect.

All of [U]Int{8,16,32,64,} initializers, labelled and unlabelled.

(swift) UInt16(-10 as Int32)
<REPL Input>:1:1: error: integer overflows when converted from 'Int32' to 'UInt16'
UInt16(-10 as Int32)

(swift) UInt16(truncatingBitPattern: -10 as Int32)
// r3 : UInt16 = 65526

(swift) UInt16(truncatingBitPattern: -10 as Int16)
<REPL Input>:1:1: error: cannot invoke initializer for type 'UInt16' with an argument list of type '(truncatingBitPattern: Int16)'
UInt16(truncatingBitPattern: -10 as Int16)
<REPL Input>:1:1: note: overloads for 'UInt16' exist with these partially matching parameter lists: (Int16), (bitPattern: Int16)

A slight change in the type combination dramatically changes the available
overload set.  You can’t check this with one or two tests and be confident that
every source/destination combination is correct.

2. We check that the APIs above are present or absent regardless of the target
platform so that the code is portable (for example, because Int64 -> Int is a
truncating operation on at least one platform, the corresponding “truncating”
initializer is available for portability on 64-bit platforms, even though it is
not actually truncating there.)

3. We rely on ambiguity in the overload set of “+“ and “-“ for certain
combinations of arguments to disallow mixed-sign arithmetic.  Again, these
ambiguities rely on a tricky combination of protocols, associated types, the
way those associated types are defined by our integer types, and overload
resolution rules in the type checker.

4. The test also checks migration facilities for Word and UWord.

Swift SVN r30655
2015-07-26 06:56:47 +00:00
Chris Lattner
b1f77b5b18 the default args recovery change fixed this crasher.
Swift SVN r30646
2015-07-26 02:29:16 +00:00
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