Commit Graph

14 Commits

Author SHA1 Message Date
Doug Gregor
0043652979 NFC: Replace DeclFilterRange with an elaborate set of iterator and range adaptors.
We're going to want these various adaptors, and helpers built on top
of them, when we replace the array-based storage of members in nominal
types and extensions with something more sane.


Swift SVN r16569
2014-04-19 18:19:59 +00:00
Jordan Rose
aa6aa72ba1 Add lazy conformances to nominals and extensions.
...and deserialize conformances lazily.

No intended user-visible change.

Swift SVN r15911
2014-04-04 01:17:54 +00:00
Joe Groff
63d08c786d SIL: Handle metatype abstraction differences.
Lower metatype types as @thin or @thick based on whether the type is static and whether the abstraction pattern allows for a thin metatype. Add a '@thick' attribute and require SIL metatypes to always be annotated with either '@thin' or '@thick' to distinguish them from unlowered metatypes.

Swift SVN r11525
2013-12-20 23:06:16 +00:00
Joe Groff
8693c5efaa SIL: Emit String-to-NSString conversions.
If -nsstring-is-string is enabled, lower Strings in cc(c) and cc(objc) function types to NSString, and when calling them, insert calls to StringToNSString/NSStringToString to perform the bridging conversion.

This isn't quite ready for prime-time yet, because we still need to emit the inverse bridging for ObjC method thunks, and I haven't tested the IRGen end of things yet.

Swift SVN r5355
2013-05-26 20:29:09 +00:00
Joe Groff
b34a665fb6 Fix Optional assignment bugs.
Assigning from Nothing to Nothing should be a no-op, not copy a junk value into the destination. Also, in move-assignment we should reset the source (and thereby call the destructor) instead of abandoning the source value after moving it.

Swift SVN r5234
2013-05-20 22:29:19 +00:00
Joe Groff
f6c72885a6 SILGen: Emit curried function calls.
Teach SILGen's CallEmission how to emit calls to an uncurry level above the natural uncurry level of the callee. Factor out a Callee object (like in IRGen) that encapsulates how to emit an abstract callee at any uncurry level. Currently only currying standalone non-generic functions works.

Swift SVN r4720
2013-04-12 23:10:48 +00:00
John McCall
05c91bd292 Use the header-guard idiom properly.
Swift SVN r4462
2013-03-21 05:29:13 +00:00
Joe Groff
00f1c0f687 Simplify Optional.h.
Putting T inside an anonymous union is enough to suppress its implicit value semantics--no need for aligned_storage shenanigans.

Swift SVN r4358
2013-03-12 04:42:57 +00:00
Doug Gregor
cf5eb59956 Extend SpecializeExpr with information about the types used to replace
each primary archetype along with the protocol conformance records for
each of the requirements placed on that archetype.


Swift SVN r2250
2012-06-26 00:10:23 +00:00
Doug Gregor
ec31aaf04b Parse a generic parameter list within a function declaration, and
introduce the generic type parameters (which are simply type aliases
for a to-be-determined archetype type) into scope for name
lookup. We can now parse something like

  func f<T, U : Range>(x : T, y : U) { }

but there is no semantic analysis or even basic safety checking (yet).




Swift SVN r2197
2012-06-18 22:49:54 +00:00
John McCall
c36c7e2c86 Include what you use.
Swift SVN r1382
2012-04-11 02:59:58 +00:00
John McCall
8aefa67399 Add a convenient way to construct an empty Optional without naming
a potentially long template-id.



Swift SVN r872
2011-11-17 09:27:56 +00:00
Doug Gregor
1334180b3b Add non-const operator-> and operator* overloads to Optional.
Swift SVN r846
2011-11-09 17:51:18 +00:00
Doug Gregor
e12215b1be Introduce InFlightDiagnostic, a move-only class that will be used to emit "extra" information (ranges, Fix-Its, etc.) for a diagnostic. It's quite similar in design to Clang's DiagnosticBuilder, but slightly cleaner/more restrictive.
Note that I had to re-implement llvm::Optional, since it lamely requires a default constructor. At some point, I'll push a proper implementation back to LLVM.

Swift SVN r845
2011-11-09 17:19:30 +00:00