Commit Graph

85 Commits

Author SHA1 Message Date
Doug Gregor
5fc8ac7fd1 Require the 'override' keyword for initializers that override designated initializers.
Swift SVN r20490
2014-07-24 15:38:33 +00:00
John McCall
807619b3c8 Force classes to be realized before forming a metadata
reference to them.

Fixes rdar://17776354.

Swift SVN r20384
2014-07-23 09:28:34 +00:00
John McCall
81c1d084f7 Don't test for specific LLVM attribute list numbers.
This is very brittle against the exact order in which
attribute lists are used in the module.

None of these tests even bother verifying anything
about the actual attributes involved, so just don't
test for the attribute lists at all.

Swift SVN r20380
2014-07-23 07:38:22 +00:00
Ted Kremenek
d075f06573 Require a minimum deployment target of iOS 7 or OSX 10.9
Implements <rdar://problem/17532113>

Swift SVN r19451
2014-07-02 06:23:38 +00:00
Doug Gregor
d1e8be50be Turn -implicit-objc-with on by default <rdar://problem/16795899>.
Swift SVN r17796
2014-05-09 20:17:42 +00:00
Joe Groff
68f942117a SIL: Squash 'ref_to_native_object' and 'native_object_to_ref' into one 'unchecked_ref_cast' insn.
An unsafe cast from a base to a derived class isn't really all that different from one from Builtin.NativeObject to an arbitrary class, so relax this pair of instructions to allow an arbitrary bitcast. This only combines the instructions; it doesn't attempt to simplify any codegen that was emitting round-trip casts before yet.

Swift SVN r16736
2014-04-24 03:10:53 +00:00
John McCall
8681963bcb A couple of long-overdue renames.
Builtin.ObjectPointer -> Builtin.NativeObject
Builtin.ObjCPointer -> Builtin.UnknownObject

Swift SVN r16634
2014-04-22 00:17:08 +00:00
Doug Gregor
8d4964bc98 Turn on namespacing of Objective-C class names.
The actual logic to do this is simple; the vast majority of this
commit is just a pile of changes to test cases to reflect the fact
that Objective-C metadata now includes the module name for each class
and the mangling of Swift-defined @objc classes no longer goes into
the "So" namespace for Objective-C classes. Finishes
<rdar://problem/15506580>.


Swift SVN r16274
2014-04-13 04:48:53 +00:00
Manman Ren
ea319984fd SILParser: handle overloaded members for super_method.
rdar://15763213


Swift SVN r15469
2014-03-25 22:35:02 +00:00
Fariborz Jahanian
50c771ee96 [IRGen]. Add support for extended encoding of @objc classes
which are defined in swift (not imported). // rdar://16308986


Swift SVN r15427
2014-03-24 23:04:28 +00:00
Manman Ren
37ea7f9d4b SILPrinter & SILParser: update both and testing cases to match SIL.rst.
For ref_element_addr, we now print
ref_element_addr %7 : $M, #M.member
instead of
ref_element_addr %7 : $M, #member

rdar://15810604


Swift SVN r14899
2014-03-11 00:25:51 +00:00
Doug Gregor
00162dc243 Start emitting stubs for unimplemented designated initializers of the superclass.
When a subclass does not implement a designated initializer of its
superclass, introduce a stub initializer that simply traps. Such stubs
cannot be invoked directly using Swift syntax, but can be invoked
through the Objective-C runtime and from Objective-C code. Catch such
errors rather than allowing them to violate the memory safety of the
language.

Note that we're currently using cond_fail to trap; this will be
improved in the future,


Swift SVN r14839
2014-03-09 07:16:30 +00:00
Mark Lacey
c4ef5d3e9a Coerce the self argument of @objc methods to the appropriate type.
When lowering @objc entrypoints, we need to set the argument explosion
to a value with the proper type for use within the body of the function.

Change r13931 worked around the lack of proper entrypoint lowering by
adding a cast at a use site. Now that this is fixed we can remove that
work-around.

Fixes <rdar://problem/16075395>.

Swift SVN r14666
2014-03-05 00:51:32 +00:00
Doug Gregor
1e8f02a45d Start diagnosing "deinit () { }".
Now that we do this, update the standard library, tests, other documents, etc.

Swift SVN r14423
2014-02-26 23:01:25 +00:00
Doug Gregor
981f8f6509 Rename "destructor" -> "deinit" (as a keyword) and -> "deinitializer" (in diagnostics).
Swift SVN r14380
2014-02-26 05:51:45 +00:00
Doug Gregor
27ae27bf04 Start using objc_class* to describe Objective-C class metatypes in IRGen.
Swift SVN r14099
2014-02-19 21:24:00 +00:00
Jordan Rose
0b2541b58f Rename the standard library to "Swift" (instead of "swift")
This is more in line with all other modules currently on our system.
If/when we get our final name for the language, we're at least now set
up to rename the library without /too/ much trouble. (This is mostly just
a lot of searching for "import swift", "swift.", "'swift'", and '"swift"'.
The compiler itself is pretty much just using STDLIB_NAME consistently now,
per r13758.)

<rdar://problem/15972383>

Swift SVN r14001
2014-02-17 19:30:47 +00:00
Chris Lattner
bd8323dff0 Add an irgen hack fix the rest of rdar://16006333 - observing properties don't work in @objc classes
This is a hack in that the bitcast it introduces shouldn't be needed, I've filed
rdar://16006333 to track a proper fix for this when Mark gets back.



Swift SVN r13931
2014-02-14 23:44:43 +00:00
Jordan Rose
268316f375 [tests] Add more missing -enable-source-import, for IRGen's miniature SDK.
Swift SVN r13848
2014-02-12 23:57:42 +00:00
Argyrios Kyrtzidis
4ddcd152e3 [Driver/Frontend] Remove the '-module-cache-path=' alias.
We should move towards uniformity for how options are passed.

Swift SVN r13683
2014-02-08 19:15:28 +00:00
Mark Lacey
660bb20909 Select correct IR types for direct arguments to C/@objc functions.
Reapply r13532 fixes for dealing with arguments that should be exploded
for C/Obj-C functions.

This gets us a bit closer to properly generating the correct types for
arguments. The remaining piece is generating all the argument types at
once rather than one at a time, which also requires being able to always
generate Clang types for the Swift types we see in the signatures of
these functions.

Swift SVN r13638
2014-02-07 18:04:45 +00:00
Mark Lacey
d335817783 Revert "Generate arguments with the correct ABI types for C/Obj-C functions."
This reverts commit r13532 which broke the build.

Swift SVN r13547
2014-02-06 02:07:17 +00:00
Mark Lacey
fd8e10fa68 Generate arguments with the correct ABI types for C/Obj-C functions.
This gets us a bit closer to properly generating the correct types for
arguments. The remaining piece is generating all the argument types at
once rather than one at a time.

That part cannot happen until we can always generate Clang types for
the Swift types we see in the signatures of these functions.

Swift SVN r13532
2014-02-06 01:06:32 +00:00
Jordan Rose
934121914c Use -emit-ir instead of -emit-llvm, for better parity with -emit-bc.
-emit-llvm in Clang is a modifier on the -S and -c actions. In Swift,
it's a separate action equivalent to "-S -emit-llvm". Be less ambiguous.

Part of the migration to the new driver.

Swift SVN r13029
2014-01-28 01:42:44 +00:00
Jordan Rose
0c92cc0fe4 Use '-target' instead of '-triple', for consistency with Clang and GCC.
Part of the migration to the new driver.

Swift SVN r13028
2014-01-28 01:42:41 +00:00
Jordan Rose
2132bfff49 Replace "-sdk=<path>" with "-sdk <path>" in tests.
Part of the migration to the new driver.

Swift SVN r13027
2014-01-28 01:42:38 +00:00
John McCall
eb7dfb39ac Remove more dead code.
It was convenient to just assume that the SILModule defines
the deallocating destructor function.  This should probably
be represented somehow in e.g. the sil_vtable instead of
being an implicit dependency.

Swift SVN r12412
2014-01-16 19:35:50 +00:00
Doug Gregor
8647c3c295 Revert "For Swift-rooted class hierarchies, emit self_downcast as a bitcast."
This reverts commit fb1ed53c039a46aa501734948e417a4dfbc86f69.

Swift SVN r12398
2014-01-16 06:01:18 +00:00
Doug Gregor
0c554b77da For Swift-rooted class hierarchies, emit self_downcast as a bitcast.
Swift-rooted class hierarchies don't permit the replacement of "self",
so it's guaranteed that the 'self' returned from a 'super.init'
invocation is identical to the previous self. Elide the unconditional
checked downcast (that manifests as a call to
swift_dynamicCastClassUnconditional in the runtime) by simply putting
a bitcast in its place.

For Objective-C-rooted hierarchies, 'self' can be replaced so memory
safety dictates that we keep the
swift_dynamicCastClassUnconditional(). Note that this path is still
unsafe against nil returns.

Swift SVN r12384
2014-01-16 04:24:59 +00:00
Doug Gregor
7950fc2df6 Only emit the Objective-C entry point for the ivar destroyer (-.cxx_destruct).
The Swift entry point will never be referenced by anything, so don't
bother generating it.

Swift SVN r12207
2014-01-12 00:50:12 +00:00
Doug Gregor
3524a79fa0 Emit .cxx_destruct for destruction of ivars in Objective-C-derived classes.
The Objective-C runtime executes the .cxx_destruct method after the
last -dealloc has executed when destroying an object, allowing the
instance variables to remain live even after the subclass's
destructor/-dealloc has executed, which is important for memory
safety. This fixes the majority of <rdar://problem/15136592>.

Note that IRGenModule::getAddrOfIVarDestroyer() contains  an egregious
hack to find the ivar destructor SIL function via a linear
search. We need a better way to find SIL functions that we know exist,
because LinkEntity does not suffice.

Swift SVN r12206
2014-01-12 00:17:42 +00:00
Doug Gregor
f05263d4fe Objective-C's -dealloc is a deallocating destructor, not a destroying destructor.
Because Objective-C doesn't have the notion of a destroying
destructor, this is a matter of cleanliness rather than
correctness. Still, it's better not to lie.


Swift SVN r12160
2014-01-10 23:08:42 +00:00
Doug Gregor
1b746bc3b5 Move the creation of deallocating destructors from IRGen to SILGen.
This is the first (and only) use of the dealloc_ref instruction.

Swift SVN r12145
2014-01-10 22:32:55 +00:00
Doug Gregor
5f1b8618f4 Make the SILDeclRef for a destroying destructor store a DestructorDecl.
SILDeclRef was previously storing the ClassDecl for this case, because
semantic analysis didn't guarantee that a DestructorDecl was always
present. It is now, and this representation makes more sense.

Swift SVN r12122
2014-01-10 17:33:57 +00:00
Doug Gregor
03edef185a Emit a -dealloc method for Swift classes whose root class is defined in Objective-C.
Teach SILGen to emit a -dealloc method that runs user code, destroys
instance variables, and then calls up to the superclass dealloc. Teach
IRGen to deal with Objective-C destructor methods and add -dealloc to
the instance method table.

There are a few things still wrong here: we're emitting both a Swift
destructor and -dealloc, even though only one of them should ever
actually be used. Additionally, instance variables shouldn't be
destroyed in -dealloc, but in .cxx_destruct, so they persist until the
last of the -dealloc methods is invoked.

Swift SVN r12115
2014-01-10 05:07:33 +00:00