Turn -implicit-objc-with on by default <rdar://problem/16795899>.

Swift SVN r17796
This commit is contained in:
Doug Gregor
2014-05-09 20:17:42 +00:00
parent d410bd0acd
commit d1e8be50be
8 changed files with 26 additions and 16 deletions

View File

@@ -62,7 +62,7 @@ namespace swift {
/// Whether to make the "with" at the beginning of the first argument of
/// an initializer implicit (i.e., dropped on import, added when computing
/// a selector).
bool ImplicitObjCWith = false;
bool ImplicitObjCWith = true;
/// Enables checking that uses of @objc require importing
/// the ObjectiveC module.

View File

@@ -2303,7 +2303,7 @@ namespace {
///
/// \code
/// // in objc: [[NSArray alloc] initWithCapacity:1024]
/// NSArray(withCapacity: 1024)
/// NSArray(capacity: 1024)
/// \endcode
ConstructorDecl *importConstructor(const clang::ObjCMethodDecl *objcMethod,
DeclContext *dc,
@@ -2345,7 +2345,7 @@ namespace {
///
/// \code
/// // in objc: [[NSArray alloc] initWithCapacity:1024]
/// NSArray(withCapacity: 1024)
/// NSArray(capacity: 1024)
/// \endcode
///
/// This variant of the function is responsible for actually binding the

View File

@@ -51,7 +51,7 @@ sil private @_TToFC18class_isa_pointers7Mongrel6methodfS0_FT_T_ : $@thin @cc(obj
entry(%0 : $Purebred):
unreachable
}
sil private @_TToFC18class_isa_pointers7MongrelcfMS0_FT11withBellsOnSi_S0_ : $@thin @cc(objc_method) (Int, Purebred) -> () {
sil private @_TToFC18class_isa_pointers7MongrelcfMS0_FT7bellsOnSi_S0_ : $@thin @cc(objc_method) (Int, Purebred) -> () {
entry(%0 : $Int, %1 : $Purebred):
unreachable
}

View File

@@ -19,7 +19,7 @@ import gizmo
// CHECK: @_PROPERTIES__TtC19objc_attr_NSManaged10SwiftGizmo = private constant { {{.*}}i32, i32, [1 x { i8*, i8* }] } { i32 16, i32 1, [1 x { i8*, i8* }] [{ i8*, i8* } { i8* getelementptr inbounds ([2 x i8]* [[X]], i64 0, i64 0),
// The getter/setter should not show up in the Swift metadata.
// CHECK: @_TMdC19objc_attr_NSManaged10SwiftGizmo = global { {{.*}} } { void (%C19objc_attr_NSManaged10SwiftGizmo*)* @_TFC19objc_attr_NSManaged10SwiftGizmoD, i8** @_TWVBO, i64 ptrtoint (%objc_class* @"OBJC_METACLASS_$__TtC19objc_attr_NSManaged10SwiftGizmo" to i64), %objc_class* @"OBJC_CLASS_$_Gizmo", %swift.opaque* @_objc_empty_cache, %swift.opaque* @_objc_empty_vtable, i64 add (i64 ptrtoint ({ i32, i32, i32, i32, i8*, i8*, { i32, i32, [2 x { i8*, i8*, i8* }] }*, i8*, i8*, i8*, { i32, i32, [1 x { i8*, i8* }] }* }* @_DATA__TtC19objc_attr_NSManaged10SwiftGizmo to i64), i64 1), i32 16, i32 7, i32 96, i32 16, { i64, i8*, i32, i32, i8*, %swift.type** (%swift.type*)*, i32, i32 }* @_TMnC19objc_attr_NSManaged10SwiftGizmo, %C19objc_attr_NSManaged10SwiftGizmo* (i64, %C19objc_attr_NSManaged10SwiftGizmo*)* @_TFC19objc_attr_NSManaged10SwiftGizmocfMS0_FT11withBellsOnSi_S0_, %C19objc_attr_NSManaged10SwiftGizmo* (%C19objc_attr_NSManaged10SwiftGizmo*)* @_TFC19objc_attr_NSManaged10SwiftGizmocfMS0_FT_S0_ }
// CHECK: @_TMdC19objc_attr_NSManaged10SwiftGizmo = global { {{.*}} } { void (%C19objc_attr_NSManaged10SwiftGizmo*)* @_TFC19objc_attr_NSManaged10SwiftGizmoD, i8** @_TWVBO, i64 ptrtoint (%objc_class* @"OBJC_METACLASS_$__TtC19objc_attr_NSManaged10SwiftGizmo" to i64), %objc_class* @"OBJC_CLASS_$_Gizmo", %swift.opaque* @_objc_empty_cache, %swift.opaque* @_objc_empty_vtable, i64 add (i64 ptrtoint ({ i32, i32, i32, i32, i8*, i8*, { i32, i32, [2 x { i8*, i8*, i8* }] }*, i8*, i8*, i8*, { i32, i32, [1 x { i8*, i8* }] }* }* @_DATA__TtC19objc_attr_NSManaged10SwiftGizmo to i64), i64 1), i32 16, i32 7, i32 96, i32 16, { i64, i8*, i32, i32, i8*, %swift.type** (%swift.type*)*, i32, i32 }* @_TMnC19objc_attr_NSManaged10SwiftGizmo, %C19objc_attr_NSManaged10SwiftGizmo* (i64, %C19objc_attr_NSManaged10SwiftGizmo*)* @_TFC19objc_attr_NSManaged10SwiftGizmocfMS0_FT7bellsOnSi_S0_, %C19objc_attr_NSManaged10SwiftGizmo* (%C19objc_attr_NSManaged10SwiftGizmo*)* @_TFC19objc_attr_NSManaged10SwiftGizmocfMS0_FT_S0_ }
@objc class SwiftGizmo : Gizmo {
@objc @NSManaged var x: X
@@ -35,7 +35,7 @@ bb0(%0 : $SwiftGizmo):
return %0 : $SwiftGizmo
}
sil @_TToFC19objc_attr_NSManaged10SwiftGizmocfMS0_FT11withBellsOnSi_S0_ : $@cc(objc_method) @thin (Int, @owned SwiftGizmo) -> @owned SwiftGizmo {
sil @_TToFC19objc_attr_NSManaged10SwiftGizmocfMS0_FT7bellsOnSi_S0_ : $@cc(objc_method) @thin (Int, @owned SwiftGizmo) -> @owned SwiftGizmo {
bb0(%0 : $Int, %1 : $SwiftGizmo):
return %1 : $SwiftGizmo
}
@@ -45,12 +45,12 @@ bb0(%0 : $SwiftGizmo):
return %0 : $SwiftGizmo
}
sil @_TFC19objc_attr_NSManaged10SwiftGizmocfMS0_FT11withBellsOnSi_S0_ : $@cc(method) @thin (Int, @owned SwiftGizmo) -> @owned SwiftGizmo {
sil @_TFC19objc_attr_NSManaged10SwiftGizmocfMS0_FT7bellsOnSi_S0_ : $@cc(method) @thin (Int, @owned SwiftGizmo) -> @owned SwiftGizmo {
bb0(%0 : $Int, %1 : $SwiftGizmo):
return %1 : $SwiftGizmo
}
sil_vtable SwiftGizmo {
#SwiftGizmo.init!initializer.1: _TFC19objc_attr_NSManaged10SwiftGizmocfMS0_FT_S0_ // objc_attr_NSManaged.SwiftGizmo.init (objc_attr_NSManaged.SwiftGizmo.Type)() -> objc_attr_NSManaged.SwiftGizmo
#SwiftGizmo.init!initializer.1: _TFC19objc_attr_NSManaged10SwiftGizmocfMS0_FT11withBellsOnSi_S0_ // objc_attr_NSManaged.SwiftGizmo.init (objc_attr_NSManaged.SwiftGizmo.Type)(withBellsOn : Swift.Int) -> objc_attr_NSManaged.SwiftGizmo
#SwiftGizmo.init!initializer.1: _TFC19objc_attr_NSManaged10SwiftGizmocfMS0_FT7bellsOnSi_S0_ // objc_attr_NSManaged.SwiftGizmo.init (objc_attr_NSManaged.SwiftGizmo.Type)(withBellsOn : Swift.Int) -> objc_attr_NSManaged.SwiftGizmo
}

View File

@@ -114,7 +114,7 @@ bb0(%0 : $SwiftGizmo):
return %0 : $SwiftGizmo
}
sil @_TToFC12objc_dealloc10SwiftGizmocfMS0_FT11withBellsOnSi_S0_ : $@cc(objc_method) @thin (Int, @owned SwiftGizmo) -> @owned SwiftGizmo {
sil @_TToFC12objc_dealloc10SwiftGizmocfMS0_FT7bellsOnSi_S0_ : $@cc(objc_method) @thin (Int, @owned SwiftGizmo) -> @owned SwiftGizmo {
bb0(%0 : $Int, %1 : $SwiftGizmo):
return %1 : $SwiftGizmo
}

View File

@@ -16,12 +16,12 @@ bb0:
return %0 : $() // id: %1
}
// CHECK-LABEL: define {{.*}} @_TFCSo4HiveCfMS_FT9withQueenGSQCSo1B__S_
sil @_TFCSo4HiveCfMS_FT9withQueenGSQCSo1B__S_ : $@thin (@owned ImplicitlyUnwrappedOptional<B>, @thick Hive.Type) -> @owned Hive {
// CHECK-LABEL: define {{.*}} @_TFCSo4HiveCfMS_FT5queenGSQCSo1B__S_
sil @_TFCSo4HiveCfMS_FT5queenGSQCSo1B__S_ : $@thin (@owned ImplicitlyUnwrappedOptional<B>, @thick Hive.Type) -> @owned Hive {
bb0(%0 : $ImplicitlyUnwrappedOptional<B>, %1 : $@thick Hive.Type):
%2 = thick_to_objc_metatype %1 : $@thick Hive.Type to $@objc_metatype Hive.Type // users: %3, %4
// CHECK: load i8** @"\01L_selector(hiveWithQueen:)"
%3 = class_method %2 : $@objc_metatype Hive.Type, #Hive.init!allocator.1.foreign : Hive.Type -> (withQueen: ImplicitlyUnwrappedOptional<B>) -> Hive , $@cc(objc_method) @thin (ImplicitlyUnwrappedOptional<B>, @objc_metatype Hive.Type) -> @autoreleased Hive // user: %4
%3 = class_method %2 : $@objc_metatype Hive.Type, #Hive.init!allocator.1.foreign : Hive.Type -> (queen: ImplicitlyUnwrappedOptional<B>) -> Hive , $@cc(objc_method) @thin (ImplicitlyUnwrappedOptional<B>, @objc_metatype Hive.Type) -> @autoreleased Hive // user: %4
// CHECK: call {{.*}} @objc_msgSend
%4 = apply %3(%0, %2) : $@cc(objc_method) @thin (ImplicitlyUnwrappedOptional<B>, @objc_metatype Hive.Type) -> @autoreleased Hive // users: %5, %6
// CHECK: call {{.*}} @objc_retainAutoreleasedReturnValue

View File

@@ -88,7 +88,7 @@ entry(%f : $(Builtin.Word) -> (), %x : $Builtin.Word):
// CHECK-NOT: swift_retain
// CHECK: [[SELF:%.*]] = load %C13partial_apply9ObjCClass** [[X_ADDR]], align 8
// CHECK-NOT: swift_retain
// CHECK: [[CMD:%.*]] = load i8** @"\01L_selector(methodX:)", align 8
// CHECK: [[CMD:%.*]] = load i8** @"\01L_selector(methodWithX:)", align 8
// CHECK: [[I8PTRSELF:%.*]] = bitcast %C13partial_apply9ObjCClass* [[SELF]] to [[OPAQUE0:%.*]]*
// CHECK-NOT: swift_retain
// CHECK: call void bitcast (void ()* @objc_msgSend to void ([[OPAQUE2:%.*]]*, i8*, i64)*)([[OPAQUE2]]* [[I8PTRSELF]], i8* [[CMD]], i64 %0)
@@ -132,7 +132,7 @@ entry(%x : $Int):
// CHECK-LABEL: define { i8*, %swift.refcounted* } @dynamic_lookup_br_partial_apply(%objc_object*) {
// CHECK: phi i8* [ bitcast (void (i64)* @dummy to i8*), {{%.*}} ], [ bitcast (void (i64, %swift.refcounted*)* [[DYNAMIC_LOOKUP_BR_PARTIAL_APPLY_STUB:@_TPA[A-Za-z0-9_]*]] to i8*), {{%.*}} ]
// CHECK: define internal void [[DYNAMIC_LOOKUP_BR_PARTIAL_APPLY_STUB]](i64, %swift.refcounted*) {
// CHECK: load i8** @"\01L_selector(methodX:)", align 8
// CHECK: load i8** @"\01L_selector(methodWithX:)", align 8
sil @dynamic_lookup_br_partial_apply : $@thin Builtin.UnknownObject -> @callee_owned Int -> () {
entry(%o : $Builtin.UnknownObject):

View File

@@ -1,12 +1,22 @@
Latest
----------
* The word "with" is now removed from the first keyword argument name
if an initialized imported from Objective-C. For example, instead of
building UIColor as:
UIColor(withRed: r, green: g, blue: b, alpha: a)
it will now be:
UIColor(red: r, green: g, blue: b, alpha: a)
* `Dictionary` can be bridged to `NSDictionary` and vice versa:
- `NSDictionary` has an implicit convertion to `Dictionary<NSObject,
- `NSDictionary` has an implicit conversion to `Dictionary<NSObject,
AnyObject>`. It bridges in O(1), without memory allocation.
- `Dictionary<K, V>` has an implicit convertion to `NSDictionary`.
- `Dictionary<K, V>` has an implicit conversion to `NSDictionary`.
`Dictionary<K, V>` bridges to `NSDictionary` iff both `K` and `V` are
bridged. Otherwise, a runtime error is raised.