Commit Graph

21434 Commits

Author SHA1 Message Date
Enrico Granata
22329b3ac2 Extend the _OpaqueMirror to produce summaries that at least reflect the broad category of value being reflected
The <opaque> output is clearly useless, and annoying to see scattered around playgrounds

We don't have bandwidth right now to produce detailed useful reflection information, but at least show a basic understanding of data

Fixes part of rdar://17018392



Swift SVN r18607
2014-05-23 23:23:43 +00:00
Chris Hanson
3298bebb2c Make XCTestCase.className demangle its result.
XCTest needs a way to get the demangled name of a test case class,
so provide one by overriding NSObject.className.

Addresses <rdar://problem/17010812>.

Swift SVN r18606
2014-05-23 22:07:29 +00:00
Dave Abrahams
a79a06fee4 [stdlib] Improve efficiency of Array literals
Before this change, the dispatching hacks sent convertFromArrayLiteral
through the "Sequence" path, wherein we could not assume the ability to
non-destructively measure the length of the Sequence before beginning to
add the elements, which resulted in buffer reallocations as elements
were added.  Now we the sequence is measured and storage is
pre-allocated.

Swift SVN r18603
2014-05-23 20:27:55 +00:00
Dmitri Hrybenko
fce7a8c4ff stdlib/NSString APIs on String: dataUsingEncoding:allowLossyConversion: can
return nil, change our API and add tests


Swift SVN r18597
2014-05-23 16:38:53 +00:00
Dmitri Hrybenko
ce14332bb6 stdlib: make UnicodeScalar.escape() independent of current locale
Swift SVN r18595
2014-05-23 15:40:47 +00:00
Dmitri Hrybenko
c5f21546db stdlib/CString: fix two issues with CString.persist():
1. it crashed on a null pointer;

2. it crashed on a non-ASCII strings.

rdar://17016284


Swift SVN r18594
2014-05-23 15:18:21 +00:00
Dmitri Hrybenko
04dae74cd6 stdlib: correct comment
Swift SVN r18592
2014-05-23 13:07:46 +00:00
Dmitri Hrybenko
83f7bdc30e stdlib/NSString APIs for String: allow a nil locale to be passed to
capitalizedStringWithLocale(_:)


Swift SVN r18591
2014-05-23 09:51:30 +00:00
Dmitri Hrybenko
bd0c7f4651 stdlib/Dictionary: rename variables to match the new semantics. No public API
changes.


Swift SVN r18588
2014-05-23 09:09:51 +00:00
Dave Zarzycki
d713c55268 Heap: Sniff out *any* Malloc knobs and fall back on the system malloc
Swift SVN r18574
2014-05-22 21:40:10 +00:00
Doug Gregor
f305cd7946 Look through bridgeFromObjectiveC calls to find forced casts within optional injections.
Fixes <rdar://problem/17003302>.


Swift SVN r18563
2014-05-22 15:47:13 +00:00
Dmitri Hrybenko
47bae74a59 stdlib/Dictionary: fix a bug in deletion
If we were deleting a key in the middle of a collision chain, and the tail of
the collision chain had keys whose ideal bucket was located before the hole
that we just created, we would mistakenly not relocate those keys.

rdar://16984824


Swift SVN r18562
2014-05-22 10:47:22 +00:00
Doug Gregor
67ca1c9ea1 Implement the new casting syntaxes "as" and "as?".
There's a bit of a reshuffle of the ExplicitCastExpr subclasses:
  - The existing ConditionalCheckedCastExpr expression node now represents
"as?". 
  - A new ForcedCheckedCastExpr node represents "as" when it is a
  downcast.
  - CoerceExpr represents "as" when it is a coercion.
  - A new UnresolvedCheckedCastExpr node describes "as" before it has
  been type-checked down to ForcedCheckedCastExpr or CoerceExpr. This
  wasn't a strictly necessary change, but it helps us detangle what's
  going on.

There are a few new diagnostics to help users avoid getting bitten by
as/as? mistakes:
  - Custom errors when a forced downcast (as) is used as the operand
  of postfix '!' or '?', with Fix-Its to remove the '!' or make the
  downcast conditional (with as?), respectively.
  - A warning when a forced downcast is injected into an optional,
  with a suggestion to use a conditional downcast.
  - A new error when the postfix '!' is used for a contextual
  downcast, with a Fix-It to replace it with "as T" with the
  contextual type T.

Lots of test updates, none of which felt like regressions. The new
tests are in test/expr/cast/optionals.swift. 

Addresses <rdar://problem/17000058>


Swift SVN r18556
2014-05-22 06:15:29 +00:00
Dave Zarzycki
631e89d205 Heap: enable some runtime asserts that double check the compiler
This double checks:
<rdar://problem/16979846> Array backing store is leaking
<rdar://problem/16989632> Array backing store sizing is still buggy

Swift SVN r18554
2014-05-22 05:00:58 +00:00
Dave Abrahams
0f9edadc41 [stdlib] String API Review: NSString API
Many changes in how we're presenting the NSString APIs on String, most
notably that we now traffic in String.Index and Range<String.Index>
rather than Int and NSRange.  Also we present NSString initializers that
can fail only as factory functions, and factory functions that can't
fail only as init functions.

About 25% of the API changes here have been reviewd by the Foundation
guys, and testing is, as it has always been, admittedly spotty.  Dmitri
is going to be writing some more comprehensive tests.

Swift SVN r18553
2014-05-22 04:21:55 +00:00
John McCall
329abe543d Pass an alignment mask during heap array allocation,
not an alignment value.

Assert that various entrypoints get an alignment mask.

Get everything uniformly passing an assertion about
dealloating an object with the correct allocation
size; don't actually enable the assertion yet, though.

rdar://16989632

Swift SVN r18550
2014-05-22 01:58:05 +00:00
Dave Zarzycki
842e288377 Heap: pre-compute pthread layout details
This function is hot enough that this is worth it.

Swift SVN r18521
2014-05-21 21:14:03 +00:00
Dave Zarzycki
74f29d5138 Heap: cache dlsym() result
This fixes: <rdar://problem/16991267>

Swift SVN r18520
2014-05-21 20:59:26 +00:00
Dave Abrahams
2339bd5b59 [stdlib] String API Review: hide contiguousUTF8
Swift SVN r18517
2014-05-21 20:38:35 +00:00
Dave Abrahams
f58196f954 [stdlib] String API Review: drop size()
Swift SVN r18515
2014-05-21 20:36:40 +00:00
Dave Abrahams
8445618f1d [stdlib] String API Review: hide "split" and "lines"
Swift SVN r18514
2014-05-21 20:30:23 +00:00
Dave Abrahams
ee261fb348 [stdlib] String API Review: kill byteLength()
Swift SVN r18513
2014-05-21 20:30:22 +00:00
Dave Abrahams
57347d54b5 [stdlib] String API Review: kill asUTF8()
Swift SVN r18512
2014-05-21 20:30:21 +00:00
Dave Abrahams
f14cc969dc [stdlib] String API Review: repeatedValue
Make the API for repeating a single Collection element consistent with
that for Array

Swift SVN r18511
2014-05-21 20:30:21 +00:00
Dave Abrahams
7e9d91161c [stdlib] CMutablePointer: manual bridging support
When manually writing overlays, it's not uncommon to need to present an
interface that allows nil or an inout object to be passed, and
CMutablePointer allows that, but up to now it's been hard to work with
CMutablePointer on the inside of the manually-created thunks in the
overlay.  These small tweaks make that a bit more tolerable.

Swift SVN r18510
2014-05-21 20:30:20 +00:00
Dave Abrahams
f5f15b33e9 [stdlib] ReST comment fixups
Swift SVN r18509
2014-05-21 20:30:19 +00:00
Joe Groff
8c60c4af1f IRGen/Runtime: Emit distinct type metadata for block types.
Blocks need their own type metadata with value witnesses appropriate to the block representation. Fixes <rdar://problem/16918740> and <rdar://problem/16981126>.

Swift SVN r18508
2014-05-21 20:24:11 +00:00
Dave Abrahams
eab43d72d6 [emacs support] swift-mode: support break labels
Also use it to fix indentation in Arrays.swift.gyb

Swift SVN r18507
2014-05-21 20:08:26 +00:00
Joe Pamer
1c53181667 Again, fix two problems with implicit conversions:
- rdar://problem/16776273, wherein conversions between nil and .None were permitted
due to an implicit conversion between nil and COpaquePointer.
- rdar://problem/16877526, where we needed to add new equality overloads to handle
conversions between nil and .None given the supression of user conversions.

(Some minor tweaks this time around for better interoperability with AnyObject.)

Swift SVN r18498
2014-05-21 18:56:35 +00:00
Dmitri Hrybenko
5855c2b34f stdlib/Printing: remove superfluous newlocale() call
Also add tests for post-processing printed results in scientific notation.


Swift SVN r18495
2014-05-21 14:12:31 +00:00
Dmitri Hrybenko
9a4004ab61 stdlib/Join: add forwarding join() instance functions to array and string types
rdar://16388632


Swift SVN r18493
2014-05-21 13:15:30 +00:00
Dmitri Hrybenko
b118f463d3 stdlib/BitwiseOperations: fix the comment
Swift SVN r18491
2014-05-21 11:58:43 +00:00
Dmitri Hrybenko
3ca4c987f8 stdlib/Fixed point: switch allZeros to be a static property
Swift SVN r18490
2014-05-21 11:31:21 +00:00
Dmitri Hrybenko
2fc5297171 stdlib/Slice: relax assertion to allow Slice<T> to be constructed from a native
empty buffer without storage

rdar://16971593 rdar://16388632


Swift SVN r18489
2014-05-21 11:01:55 +00:00
Dmitri Hrybenko
4693583767 stdlib/Join: fix an ambiguity in 'ExtensibleCollection + ExtensibleCollection'
Allows to use '+' on arrays.

rdar://16984439 rdar://16388632


Swift SVN r18488
2014-05-21 09:32:51 +00:00
John McCall
5ddee671b6 Provide a hacky hook for specifying a class's instance size
and alignment for the purposes of deallocation.

If a class contains a method named __getInstanceSizeAndAlignMask,
and it takes no arguments and returns a pair of words, call
that method directly in order to get the size and alignment
mask instead of trusting the class's formal size and alignment.

This is not a replacement for a proper language solution for
custom allocation, but it'll suffice to fix some immediate
problems with HeapBufferStorage.

If we decide we like this approach, we should really raise
the deallocating destructor up to SIL.

rdar://16979846

Swift SVN r18485
2014-05-21 07:22:39 +00:00
Joe Pamer
1d34a88477 Revert "Fix two problems with implicit conversions: - rdar://problem/16776273, wherein conversions between nil and .None were permitted due to an implicit conversion between nil and COpaquePointer. - rdar://problem/16877526, where we needed to add new equality overloads to handle conversions between nil and .None given the supression of user conversions. (Thanks to Ted for the overloads and test.)"
This reverts commit r18473.

Swift SVN r18477
2014-05-21 00:28:46 +00:00
John McCall
5c3f40c301 Use a data structure with stable pointers for the Objective-C
unowned reference side table.

rdar://16981772

Swift SVN r18476
2014-05-21 00:22:02 +00:00
John McCall
4fccb0607e Don't leak the allocation for objects with outstanding
weak references at deallocation time.

Also, directly call swift_slowDealloc in swift_weakRelease
instead of incorrectly recursing back into
swift_deallocObject.

Also document the correctness of the fast-path check
we do in swift_deallocObject.

rdar://16967569

Swift SVN r18475
2014-05-21 00:22:00 +00:00
Joe Pamer
f469d8f1f6 Fix two problems with implicit conversions:
- rdar://problem/16776273, wherein conversions between nil and .None were permitted
due to an implicit conversion between nil and COpaquePointer.
- rdar://problem/16877526, where we needed to add new equality overloads to handle
conversions between nil and .None given the supression of user conversions.
(Thanks to Ted for the overloads and test.)

Swift SVN r18473
2014-05-20 23:53:34 +00:00
Dave Zarzycki
98ce4f3956 Heap: add an assert that would have caught 16979846
Once 16979846 is fixed, we can double check sizes at free time to ensure
that we're putting them on the right free list.

Swift SVN r18471
2014-05-20 23:23:57 +00:00
Greg Parker
e2ca13c993 <rdar://16529903> Make UIViewController's nib search find Swift class names.
UIViewController is able to find nib files that have names derived from the 
UIViewController subclass's name. This change modifies UIViewController's 
lookup so it is able to find nib files for Swift class names.


Swift SVN r18470
2014-05-20 23:14:52 +00:00
Dave Zarzycki
b46851397c Heap: add missing lock/unlock
Swift SVN r18468
2014-05-20 21:26:25 +00:00
Dave Zarzycki
46a77283e1 Heap: track the last allocation per arena correctly
Swift SVN r18466
2014-05-20 21:21:13 +00:00
Nadav Rotem
499eeb8629 revert 18464.
Swift SVN r18465
2014-05-20 21:13:37 +00:00
Nadav Rotem
5b7564fafd Deduplicate the isNative check. NFC.
Swift SVN r18464
2014-05-20 21:04:07 +00:00
Joe Groff
38130ca9db Remove uniqueness forcing from CMutablePointer array conversion.
Arrays aren't value types anymore, so this is no longer correct. Fixes <rdar://problem/16970879>.

Swift SVN r18455
2014-05-20 17:21:21 +00:00
Dmitri Hrybenko
8910632338 stdlib/Dictionary: allow NSDictionary to be bridged to Dictionary<K, V> non-verbatim
Dictionary's isBridgedToObjectiveC() was overly restrictive.  This went
unnoticed because the tests were using internal Dictionary APIs to construct
the desired state, instead of going thourgh casts.

rdar://16973429


Swift SVN r18454
2014-05-20 16:06:52 +00:00
Dmitri Hrybenko
bbf7b0af98 stdlib/Dictionary: add 'removeAll:' API
rdar://16953595

Swift SVN r18453
2014-05-20 14:52:01 +00:00
Dmitri Hrybenko
652859f301 stdlib/Array: reduce duplication in ExtensibleCollection conformances
Swift SVN r18452
2014-05-20 12:45:03 +00:00