   var var_FunctionTypeReturn1: () -> () -> ()
 // CHECK-LABEL: {{^}}  @objc var var_FunctionTypeReturn1: () -> () -> ()
 
-  @objc var var_FunctionTypeReturn1_: () -> () -> () // no-error
+  @objc
+  var var_FunctionTypeReturn1_: () -> () -> () // no-error
 
   var var_FunctionTypeReturn2: () -> (Int) -> ()
 // CHECK-LABEL: {{^}}  @objc var var_FunctionTypeReturn2: () -> (Int) -> ()
 
-  @objc var var_FunctionTypeReturn2_: () -> (Int) -> () // no-error
+  @objc
+  var var_FunctionTypeReturn2_: () -> (Int) -> () // no-error
 
   var var_FunctionTypeReturn3: () -> () -> Int
 // CHECK-LABEL: {{^}}  @objc var var_FunctionTypeReturn3: () -> () -> Int
 
-  @objc var var_FunctionTypeReturn3_: () -> () -> Int // no-error
+  @objc
+  var var_FunctionTypeReturn3_: () -> () -> Int // no-error
 
   var var_FunctionTypeReturn4: () -> (String) -> ()
 // CHECK-LABEL: {{^}}  @objc var var_FunctionTypeReturn4: () -> (String) -> ()
 
-  @objc var var_FunctionTypeReturn4_: () -> (String) -> () // no-error
+  @objc
+  var var_FunctionTypeReturn4_: () -> (String) -> () // no-error
 
   var var_FunctionTypeReturn5: () -> () -> String
 // CHECK-LABEL: {{^}}  @objc var var_FunctionTypeReturn5: () -> () -> String
 
-  @objc var var_FunctionTypeReturn5_: () -> () -> String // no-error
+  @objc
+  var var_FunctionTypeReturn5_: () -> () -> String // no-error
 
 
   var var_BlockFunctionType1: @convention(block) () -> ()
 // CHECK-LABEL: @objc var var_BlockFunctionType1: @convention(block) () -> ()
 
-  @objc var var_BlockFunctionType1_: @convention(block) () -> () // no-error
+  @objc
+  var var_BlockFunctionType1_: @convention(block) () -> () // no-error
 
   var var_ArrayType1: [AnyObject]
   // CHECK-LABEL: {{^}}  @objc var var_ArrayType1: [AnyObject]
 
-  @objc var var_ArrayType1_: [AnyObject] // no-error
+  @objc
+  var var_ArrayType1_: [AnyObject] // no-error
 
   var var_ArrayType2: [@convention(block) (AnyObject) -> AnyObject] // no-error
   // CHECK-LABEL: {{^}}  @objc var var_ArrayType2: [@convention(block) (AnyObject) -> AnyObject]
 
-  @objc var var_ArrayType2_: [@convention(block) (AnyObject) -> AnyObject] // no-error
+  @objc
+  var var_ArrayType2_: [@convention(block) (AnyObject) -> AnyObject] // no-error
 
   var var_ArrayType3: [PlainStruct]
   // CHECK-LABEL: {{^}}  var var_ArrayType3: [PlainStruct]
 
-  @objc var var_ArrayType3_: [PlainStruct]
+  @objc
+  var var_ArrayType3_: [PlainStruct]
   // expected-error @-1{{property cannot be marked @objc because its type cannot be represented in Objective-C}}
 
   var var_ArrayType4: [(AnyObject) -> AnyObject] // no-error
   // CHECK-LABEL: {{^}}  var var_ArrayType4: [(AnyObject) -> AnyObject]
 
-  @objc var var_ArrayType4_: [(AnyObject) -> AnyObject]
+  @objc
+  var var_ArrayType4_: [(AnyObject) -> AnyObject]
   // expected-error @-1{{property cannot be marked @objc because its type cannot be represented in Objective-C}}
 
   var var_ArrayType5: [Protocol_ObjC1]
   // CHECK-LABEL: {{^}}  @objc var var_ArrayType5: [Protocol_ObjC1]
 
-  @objc var var_ArrayType5_: [Protocol_ObjC1] // no-error
+  @objc
+  var var_ArrayType5_: [Protocol_ObjC1] // no-error
 
   var var_ArrayType6: [Class_ObjC1]
   // CHECK-LABEL: {{^}}  @objc var var_ArrayType6: [Class_ObjC1]
 
-  @objc var var_ArrayType6_: [Class_ObjC1] // no-error
+  @objc
+  var var_ArrayType6_: [Class_ObjC1] // no-error
 
   var var_ArrayType7: [PlainClass]
   // CHECK-LABEL: {{^}}  var var_ArrayType7: [PlainClass]
 
-  @objc var var_ArrayType7_: [PlainClass]
+  @objc
+  var var_ArrayType7_: [PlainClass]
   // expected-error @-1{{property cannot be marked @objc because its type cannot be represented in Objective-C}}
 
   var var_ArrayType8: [PlainProtocol]
   // CHECK-LABEL: {{^}}  var var_ArrayType8: [PlainProtocol]
 
-  @objc var var_ArrayType8_: [PlainProtocol]
+  @objc
+  var var_ArrayType8_: [PlainProtocol]
   // expected-error @-1{{property cannot be marked @objc because its type cannot be represented in Objective-C}}
 
   var var_ArrayType9: [Protocol_ObjC1 & PlainProtocol]
   // CHECK-LABEL: {{^}}  var var_ArrayType9: [PlainProtocol & Protocol_ObjC1]
 
-  @objc var var_ArrayType9_: [Protocol_ObjC1 & PlainProtocol]
+  @objc
+  var var_ArrayType9_: [Protocol_ObjC1 & PlainProtocol]
   // expected-error @-1{{property cannot be marked @objc because its type cannot be represented in Objective-C}}
 
   var var_ArrayType10: [Protocol_ObjC1 & Protocol_ObjC2]
   // CHECK-LABEL: {{^}}  @objc var var_ArrayType10: [Protocol_ObjC1 & Protocol_ObjC2]
 
-  @objc var var_ArrayType10_: [Protocol_ObjC1 & Protocol_ObjC2]
+  @objc
+  var var_ArrayType10_: [Protocol_ObjC1 & Protocol_ObjC2]
   // no-error
 
   var var_ArrayType11: [Any]
   // CHECK-LABEL: @objc var var_ArrayType11: [Any]
 
-  @objc var var_ArrayType11_: [Any]
+  @objc
+  var var_ArrayType11_: [Any]
 
   var var_ArrayType13: [Any?]
   // CHECK-LABEL: {{^}}  var var_ArrayType13: [Any?]
 
-  @objc var var_ArrayType13_: [Any?]
+  @objc
+  var var_ArrayType13_: [Any?]
   // expected-error @-1{{property cannot be marked @objc because its type cannot be represented in Objective-C}}
 
   var var_ArrayType15: [AnyObject?]
   // CHECK-LABEL: {{^}}  var var_ArrayType15: [AnyObject?]
 
-  @objc var var_ArrayType15_: [AnyObject?]
+  @objc
+  var var_ArrayType15_: [AnyObject?]
   // expected-error @-1{{property cannot be marked @objc because its type cannot be represented in Objective-C}}
 
   var var_ArrayType16: [[@convention(block) (AnyObject) -> AnyObject]] // no-error
   // CHECK-LABEL: {{^}}  @objc var var_ArrayType16: {{\[}}[@convention(block) (AnyObject) -> AnyObject]]
 
-  @objc var var_ArrayType16_: [[@convention(block) (AnyObject) -> AnyObject]] // no-error
+  @objc
+  var var_ArrayType16_: [[@convention(block) (AnyObject) -> AnyObject]] // no-error
 
   var var_ArrayType17: [[(AnyObject) -> AnyObject]] // no-error
   // CHECK-LABEL: {{^}}  var var_ArrayType17: {{\[}}[(AnyObject) -> AnyObject]]
 
-  @objc var var_ArrayType17_: [[(AnyObject) -> AnyObject]]
+  @objc
+  var var_ArrayType17_: [[(AnyObject) -> AnyObject]]
   // expected-error @-1{{property cannot be marked @objc because its type cannot be represented in Objective-C}}
 }
 


//===--- @objc inference for witnesses

@objc protocol InferFromProtocol {
  @objc(inferFromProtoMethod1:)
  optional func method1(value: Int)
}

  @objc(subject_enumElement3) // expected-error {{'@objc' enum case declaration defines multiple enum cases with the same Objective-C name}}{{3-31=}}
  case subject_enumElement3, subject_enumElement4

  @objc // expected-error {{attribute has no effect; cases within an '@objc' enum are already exposed to Objective-C}} {{3-9=}}
  case subject_enumElement5, subject_enumElement6

  @nonobjc // expected-error {{'@nonobjc' attribute cannot be applied to this declaration}}
