mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Code completion: when preparing a pattern for closure expansion in function
parameters, don't consider autoclosures to be expandable rdar://17842781 Swift SVN r21006
This commit is contained in:
@@ -194,21 +194,18 @@ public:
|
|||||||
addChunkWithText(CodeCompletionString::Chunk::ChunkKind::CallParameterType,
|
addChunkWithText(CodeCompletionString::Chunk::ChunkKind::CallParameterType,
|
||||||
Ty->getString());
|
Ty->getString());
|
||||||
|
|
||||||
// Resolve optional and alias to find out if we have function/closure
|
// Look through optional types and type aliases to find out if we have
|
||||||
// parameter type.
|
// function/closure parameter type that is not an autoclosure.
|
||||||
auto *ParamType = Ty.getPointer();
|
Ty = Ty->lookThroughAllAnyOptionalTypes();
|
||||||
if (auto OTy = ParamType->getOptionalObjectType())
|
if (auto AFT = Ty->getAs<AnyFunctionType>()) {
|
||||||
ParamType = OTy.getPointer();
|
if (!AFT->isAutoClosure()) {
|
||||||
if (auto *NATy = dyn_cast<NameAliasType>(ParamType))
|
// If this is a closure type, add ChunkKind::CallParameterClosureType.
|
||||||
ParamType = NATy->getSinglyDesugaredType();
|
PrintOptions PO;
|
||||||
|
PO.PrintFunctionRepresentationAttrs = false;
|
||||||
if (ParamType && isa<AnyFunctionType>(ParamType)) {
|
addChunkWithText(
|
||||||
// If this is a closure type, add ChunkKind::CallParameterClosureType.
|
CodeCompletionString::Chunk::ChunkKind::CallParameterClosureType,
|
||||||
PrintOptions PO;
|
AFT->getString(PO));
|
||||||
PO.PrintFunctionRepresentationAttrs = false;
|
}
|
||||||
addChunkWithText(
|
|
||||||
CodeCompletionString::Chunk::ChunkKind::CallParameterClosureType,
|
|
||||||
ParamType->getString(PO));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsVarArg)
|
if (IsVarArg)
|
||||||
|
|||||||
@@ -124,8 +124,8 @@ enum BarEnum {
|
|||||||
// BAR_ENUM_TYPE_CONTEXT-DAG: Decl[EnumElement]/ExprSpecific: .Bar2()[#BarEnum.Type -> () -> BarEnum#]{{$}}
|
// BAR_ENUM_TYPE_CONTEXT-DAG: Decl[EnumElement]/ExprSpecific: .Bar2()[#BarEnum.Type -> () -> BarEnum#]{{$}}
|
||||||
// BAR_ENUM_TYPE_CONTEXT-DAG: Decl[EnumElement]/ExprSpecific: .Bar3({#Int#})[#BarEnum.Type -> (Int) -> BarEnum#]{{$}}
|
// BAR_ENUM_TYPE_CONTEXT-DAG: Decl[EnumElement]/ExprSpecific: .Bar3({#Int#})[#BarEnum.Type -> (Int) -> BarEnum#]{{$}}
|
||||||
// BAR_ENUM_TYPE_CONTEXT-DAG: Decl[EnumElement]/ExprSpecific: .Bar4({#a: Int#}, {#b: Float#})[#BarEnum.Type -> (a: Int, b: Float) -> BarEnum#]{{$}}
|
// BAR_ENUM_TYPE_CONTEXT-DAG: Decl[EnumElement]/ExprSpecific: .Bar4({#a: Int#}, {#b: Float#})[#BarEnum.Type -> (a: Int, b: Float) -> BarEnum#]{{$}}
|
||||||
// BAR_ENUM_TYPE_CONTEXT-DAG: Decl[EnumElement]/ExprSpecific: .Bar6({#a: Int#}, {#Float#})[#BarEnum.Type -> (a: Int, b: (Float)) -> BarEnum#]
|
// BAR_ENUM_TYPE_CONTEXT-DAG: Decl[EnumElement]/ExprSpecific: .Bar6({#a: Int#}, {#Float#})[#BarEnum.Type -> (a: Int, b: (Float)) -> BarEnum#]{{$}}
|
||||||
// BAR_ENUM_TYPE_CONTEXT-DAG: Decl[EnumElement]/ExprSpecific: .Bar6({#a: Int#}, {#Float#})[#BarEnum.Type -> (a: Int, b: (Float)) -> BarEnum#]
|
// BAR_ENUM_TYPE_CONTEXT-DAG: Decl[EnumElement]/ExprSpecific: .Bar6({#a: Int#}, {#Float#})[#BarEnum.Type -> (a: Int, b: (Float)) -> BarEnum#]{{$}}
|
||||||
// BAR_ENUM_TYPE_CONTEXT-DAG: Decl[EnumElement]/ExprSpecific: .Bar7({#a: Int#}, ({#b: Float#}, {#c: Double#}))[#BarEnum.Type -> (a: Int, (b: Float, c: Double)) -> BarEnum#]{{$}}
|
// BAR_ENUM_TYPE_CONTEXT-DAG: Decl[EnumElement]/ExprSpecific: .Bar7({#a: Int#}, ({#b: Float#}, {#c: Double#}))[#BarEnum.Type -> (a: Int, (b: Float, c: Double)) -> BarEnum#]{{$}}
|
||||||
// BAR_ENUM_TYPE_CONTEXT-DAG: Decl[EnumElement]/ExprSpecific: .Bar8({#a: Int#}, b: ({#c: Float#}, {#d: Double#}))[#BarEnum.Type -> (a: Int, b: (c: Float, d: Double)) -> BarEnum#]{{$}}
|
// BAR_ENUM_TYPE_CONTEXT-DAG: Decl[EnumElement]/ExprSpecific: .Bar8({#a: Int#}, b: ({#c: Float#}, {#d: Double#}))[#BarEnum.Type -> (a: Int, b: (c: Float, d: Double)) -> BarEnum#]{{$}}
|
||||||
// BAR_ENUM_TYPE_CONTEXT-DAG: Decl[EnumElement]/ExprSpecific: .Bar9({#Int#})[#BarEnum.Type -> (Int) -> BarEnum#]{{$}}
|
// BAR_ENUM_TYPE_CONTEXT-DAG: Decl[EnumElement]/ExprSpecific: .Bar9({#Int#})[#BarEnum.Type -> (Int) -> BarEnum#]{{$}}
|
||||||
@@ -137,10 +137,10 @@ enum BarEnum {
|
|||||||
// BAR_ENUM_NO_DOT: Begin completions
|
// BAR_ENUM_NO_DOT: Begin completions
|
||||||
// BAR_ENUM_NO_DOT-NEXT: Decl[EnumElement]/CurrNominal: .Bar1[#BarEnum.Type -> BarEnum#]{{$}}
|
// BAR_ENUM_NO_DOT-NEXT: Decl[EnumElement]/CurrNominal: .Bar1[#BarEnum.Type -> BarEnum#]{{$}}
|
||||||
// BAR_ENUM_NO_DOT-NEXT: Decl[EnumElement]/CurrNominal: .Bar2()[#BarEnum.Type -> () -> BarEnum#]{{$}}
|
// BAR_ENUM_NO_DOT-NEXT: Decl[EnumElement]/CurrNominal: .Bar2()[#BarEnum.Type -> () -> BarEnum#]{{$}}
|
||||||
// BAR_ENUM_NO_DOT-NEXT: Decl[EnumElement]/CurrNominal: .Bar3({#Int#})[#BarEnum.Type -> (Int) -> BarEnum#]
|
// BAR_ENUM_NO_DOT-NEXT: Decl[EnumElement]/CurrNominal: .Bar3({#Int#})[#BarEnum.Type -> (Int) -> BarEnum#]{{$}}
|
||||||
// BAR_ENUM_NO_DOT-NEXT: Decl[EnumElement]/CurrNominal: .Bar4({#a: Int#}, {#b: Float#})[#BarEnum.Type -> (a: Int, b: Float) -> BarEnum#]{{$}}
|
// BAR_ENUM_NO_DOT-NEXT: Decl[EnumElement]/CurrNominal: .Bar4({#a: Int#}, {#b: Float#})[#BarEnum.Type -> (a: Int, b: Float) -> BarEnum#]{{$}}
|
||||||
// BAR_ENUM_NO_DOT-NEXT: Decl[EnumElement]/CurrNominal: .Bar5({#a: Int#}, {#Float#})[#BarEnum.Type -> (a: Int, (Float)) -> BarEnum#]
|
// BAR_ENUM_NO_DOT-NEXT: Decl[EnumElement]/CurrNominal: .Bar5({#a: Int#}, {#Float#})[#BarEnum.Type -> (a: Int, (Float)) -> BarEnum#]{{$}}
|
||||||
// BAR_ENUM_NO_DOT-NEXT: Decl[EnumElement]/CurrNominal: .Bar6({#a: Int#}, {#Float#})[#BarEnum.Type -> (a: Int, b: (Float)) -> BarEnum#]
|
// BAR_ENUM_NO_DOT-NEXT: Decl[EnumElement]/CurrNominal: .Bar6({#a: Int#}, {#Float#})[#BarEnum.Type -> (a: Int, b: (Float)) -> BarEnum#]{{$}}
|
||||||
// BAR_ENUM_NO_DOT-NEXT: Decl[EnumElement]/CurrNominal: .Bar7({#a: Int#}, ({#b: Float#}, {#c: Double#}))[#BarEnum.Type -> (a: Int, (b: Float, c: Double)) -> BarEnum#]{{$}}
|
// BAR_ENUM_NO_DOT-NEXT: Decl[EnumElement]/CurrNominal: .Bar7({#a: Int#}, ({#b: Float#}, {#c: Double#}))[#BarEnum.Type -> (a: Int, (b: Float, c: Double)) -> BarEnum#]{{$}}
|
||||||
// BAR_ENUM_NO_DOT-NEXT: Decl[EnumElement]/CurrNominal: .Bar8({#a: Int#}, b: ({#c: Float#}, {#d: Double#}))[#BarEnum.Type -> (a: Int, b: (c: Float, d: Double)) -> BarEnum#]{{$}}
|
// BAR_ENUM_NO_DOT-NEXT: Decl[EnumElement]/CurrNominal: .Bar8({#a: Int#}, b: ({#c: Float#}, {#d: Double#}))[#BarEnum.Type -> (a: Int, b: (c: Float, d: Double)) -> BarEnum#]{{$}}
|
||||||
// BAR_ENUM_NO_DOT-NEXT: Decl[EnumElement]/CurrNominal: .Bar9({#Int#})[#BarEnum.Type -> (Int) -> BarEnum#]{{$}}
|
// BAR_ENUM_NO_DOT-NEXT: Decl[EnumElement]/CurrNominal: .Bar9({#Int#})[#BarEnum.Type -> (Int) -> BarEnum#]{{$}}
|
||||||
@@ -155,11 +155,10 @@ enum BarEnum {
|
|||||||
// BAR_ENUM_DOT: Begin completions
|
// BAR_ENUM_DOT: Begin completions
|
||||||
// BAR_ENUM_DOT-NEXT: Decl[EnumElement]/CurrNominal: Bar1[#BarEnum.Type -> BarEnum#]{{$}}
|
// BAR_ENUM_DOT-NEXT: Decl[EnumElement]/CurrNominal: Bar1[#BarEnum.Type -> BarEnum#]{{$}}
|
||||||
// BAR_ENUM_DOT-NEXT: Decl[EnumElement]/CurrNominal: Bar2()[#BarEnum.Type -> () -> BarEnum#]{{$}}
|
// BAR_ENUM_DOT-NEXT: Decl[EnumElement]/CurrNominal: Bar2()[#BarEnum.Type -> () -> BarEnum#]{{$}}
|
||||||
// BAR_ENUM_DOT-NEXT: Decl[EnumElement]/CurrNominal: Bar3({#Int#})[#BarEnum.Type -> (Int) -> BarEnum#]
|
// BAR_ENUM_DOT-NEXT: Decl[EnumElement]/CurrNominal: Bar3({#Int#})[#BarEnum.Type -> (Int) -> BarEnum#]{{$}}
|
||||||
|
|
||||||
// BAR_ENUM_DOT-NEXT: Decl[EnumElement]/CurrNominal: Bar4({#a: Int#}, {#b: Float#})[#BarEnum.Type -> (a: Int, b: Float) -> BarEnum#]{{$}}
|
// BAR_ENUM_DOT-NEXT: Decl[EnumElement]/CurrNominal: Bar4({#a: Int#}, {#b: Float#})[#BarEnum.Type -> (a: Int, b: Float) -> BarEnum#]{{$}}
|
||||||
// BAR_ENUM_DOT-NEXT: Decl[EnumElement]/CurrNominal: Bar5({#a: Int#}, {#Float#})[#BarEnum.Type -> (a: Int, (Float)) -> BarEnum#]
|
// BAR_ENUM_DOT-NEXT: Decl[EnumElement]/CurrNominal: Bar5({#a: Int#}, {#Float#})[#BarEnum.Type -> (a: Int, (Float)) -> BarEnum#]{{$}}
|
||||||
// BAR_ENUM_DOT-NEXT: Decl[EnumElement]/CurrNominal: Bar6({#a: Int#}, {#Float#})[#BarEnum.Type -> (a: Int, b: (Float)) -> BarEnum#]
|
// BAR_ENUM_DOT-NEXT: Decl[EnumElement]/CurrNominal: Bar6({#a: Int#}, {#Float#})[#BarEnum.Type -> (a: Int, b: (Float)) -> BarEnum#]{{$}}
|
||||||
// BAR_ENUM_DOT-NEXT: Decl[EnumElement]/CurrNominal: Bar7({#a: Int#}, ({#b: Float#}, {#c: Double#}))[#BarEnum.Type -> (a: Int, (b: Float, c: Double)) -> BarEnum#]{{$}}
|
// BAR_ENUM_DOT-NEXT: Decl[EnumElement]/CurrNominal: Bar7({#a: Int#}, ({#b: Float#}, {#c: Double#}))[#BarEnum.Type -> (a: Int, (b: Float, c: Double)) -> BarEnum#]{{$}}
|
||||||
// BAR_ENUM_DOT-NEXT: Decl[EnumElement]/CurrNominal: Bar8({#a: Int#}, b: ({#c: Float#}, {#d: Double#}))[#BarEnum.Type -> (a: Int, b: (c: Float, d: Double)) -> BarEnum#]{{$}}
|
// BAR_ENUM_DOT-NEXT: Decl[EnumElement]/CurrNominal: Bar8({#a: Int#}, b: ({#c: Float#}, {#d: Double#}))[#BarEnum.Type -> (a: Int, b: (c: Float, d: Double)) -> BarEnum#]{{$}}
|
||||||
// BAR_ENUM_DOT-NEXT: Decl[EnumElement]/CurrNominal: Bar9({#Int#})[#BarEnum.Type -> (Int) -> BarEnum#]{{$}}
|
// BAR_ENUM_DOT-NEXT: Decl[EnumElement]/CurrNominal: Bar9({#Int#})[#BarEnum.Type -> (Int) -> BarEnum#]{{$}}
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ func testSwiftCompletions(foo: SwiftStruct) {
|
|||||||
// CLANG_FOO-DAG: Decl[FreeFunction]/OtherModule: fooFunc1({#(a): Int32#})[#Int32#]{{$}}
|
// CLANG_FOO-DAG: Decl[FreeFunction]/OtherModule: fooFunc1({#(a): Int32#})[#Int32#]{{$}}
|
||||||
// CLANG_FOO-DAG: Decl[FreeFunction]/OtherModule: fooFunc1AnonymousParam({#Int32#})[#Int32#]{{$}}
|
// CLANG_FOO-DAG: Decl[FreeFunction]/OtherModule: fooFunc1AnonymousParam({#Int32#})[#Int32#]{{$}}
|
||||||
// CLANG_FOO-DAG: Decl[FreeFunction]/OtherModule: fooFunc3({#(a): Int32#}, {#(b): Float#}, {#(c): Double#}, {#(d): UnsafeMutablePointer<Int32>#})[#Int32#]{{$}}
|
// CLANG_FOO-DAG: Decl[FreeFunction]/OtherModule: fooFunc3({#(a): Int32#}, {#(b): Float#}, {#(c): Double#}, {#(d): UnsafeMutablePointer<Int32>#})[#Int32#]{{$}}
|
||||||
// CLANG_FOO-DAG: Decl[FreeFunction]/OtherModule: fooFuncWithBlock({#(blk): ((Float) -> Int32)!#})[#Void#]{{$}}
|
// CLANG_FOO-DAG: Decl[FreeFunction]/OtherModule: fooFuncWithBlock({#(blk): ((Float) -> Int32)!##(Float) -> Int32#})[#Void#]{{$}}
|
||||||
// CLANG_FOO-DAG: Decl[FreeFunction]/OtherModule: fooFuncWithComment1()[#Void#]{{$}}
|
// CLANG_FOO-DAG: Decl[FreeFunction]/OtherModule: fooFuncWithComment1()[#Void#]{{$}}
|
||||||
// CLANG_FOO-DAG: Decl[FreeFunction]/OtherModule: fooFuncWithComment2()[#Void#]{{$}}
|
// CLANG_FOO-DAG: Decl[FreeFunction]/OtherModule: fooFuncWithComment2()[#Void#]{{$}}
|
||||||
// CLANG_FOO-DAG: Decl[FreeFunction]/OtherModule: fooFuncWithComment3()[#Void#]{{$}}
|
// CLANG_FOO-DAG: Decl[FreeFunction]/OtherModule: fooFuncWithComment3()[#Void#]{{$}}
|
||||||
@@ -160,7 +160,7 @@ func testCompleteModuleQualifiedFoo2() {
|
|||||||
// CLANG_QUAL_FOO_2-DAG: Decl[FreeFunction]/OtherModule: .fooFunc3({#(a): Int32#}, {#(b): Float#}, {#(c): Double#}, {#(d): UnsafeMutablePointer<Int32>#})[#Int32#]{{$}}
|
// CLANG_QUAL_FOO_2-DAG: Decl[FreeFunction]/OtherModule: .fooFunc3({#(a): Int32#}, {#(b): Float#}, {#(c): Double#}, {#(d): UnsafeMutablePointer<Int32>#})[#Int32#]{{$}}
|
||||||
// CLANG_QUAL_FOO_2-DAG: Decl[FreeFunction]/OtherModule: .fooFuncNoreturn1()[#Void#]{{$}}
|
// CLANG_QUAL_FOO_2-DAG: Decl[FreeFunction]/OtherModule: .fooFuncNoreturn1()[#Void#]{{$}}
|
||||||
// CLANG_QUAL_FOO_2-DAG: Decl[FreeFunction]/OtherModule: .fooFuncNoreturn2()[#Void#]{{$}}
|
// CLANG_QUAL_FOO_2-DAG: Decl[FreeFunction]/OtherModule: .fooFuncNoreturn2()[#Void#]{{$}}
|
||||||
// CLANG_QUAL_FOO_2-DAG: Decl[FreeFunction]/OtherModule: .fooFuncWithBlock({#(blk): ((Float) -> Int32)!#})[#Void#]{{$}}
|
// CLANG_QUAL_FOO_2-DAG: Decl[FreeFunction]/OtherModule: .fooFuncWithBlock({#(blk): ((Float) -> Int32)!##(Float) -> Int32#})[#Void#]{{$}}
|
||||||
// CLANG_QUAL_FOO_2-DAG: Decl[FreeFunction]/OtherModule: .fooFuncWithFunctionPointer({#(fptr): CFunctionPointer<((Float) -> Int32)>#})[#Void#]{{$}}
|
// CLANG_QUAL_FOO_2-DAG: Decl[FreeFunction]/OtherModule: .fooFuncWithFunctionPointer({#(fptr): CFunctionPointer<((Float) -> Int32)>#})[#Void#]{{$}}
|
||||||
// CLANG_QUAL_FOO_2-DAG: Decl[FreeFunction]/OtherModule: .fooFuncWithComment1()[#Void#]{{$}}
|
// CLANG_QUAL_FOO_2-DAG: Decl[FreeFunction]/OtherModule: .fooFuncWithComment1()[#Void#]{{$}}
|
||||||
// CLANG_QUAL_FOO_2-DAG: Decl[FreeFunction]/OtherModule: .fooFuncWithComment2()[#Void#]{{$}}
|
// CLANG_QUAL_FOO_2-DAG: Decl[FreeFunction]/OtherModule: .fooFuncWithComment2()[#Void#]{{$}}
|
||||||
|
|||||||
@@ -132,6 +132,8 @@ struct FooStruct {
|
|||||||
func instanceFunc7(#a: Int) {}
|
func instanceFunc7(#a: Int) {}
|
||||||
mutating
|
mutating
|
||||||
func instanceFunc8(a: (Int, Int)) {}
|
func instanceFunc8(a: (Int, Int)) {}
|
||||||
|
mutating
|
||||||
|
func instanceFunc9(a: @autoclosure () -> Int) {}
|
||||||
|
|
||||||
mutating
|
mutating
|
||||||
func varargInstanceFunc0(v: Int...) {}
|
func varargInstanceFunc0(v: Int...) {}
|
||||||
@@ -269,6 +271,7 @@ var fooObject: FooStruct
|
|||||||
// FOO_OBJECT_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: instanceFunc6()[#Int!#]{{$}}
|
// FOO_OBJECT_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: instanceFunc6()[#Int!#]{{$}}
|
||||||
// FOO_OBJECT_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: instanceFunc7({#a: Int#})[#Void#]{{$}}
|
// FOO_OBJECT_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: instanceFunc7({#a: Int#})[#Void#]{{$}}
|
||||||
// FOO_OBJECT_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: instanceFunc8({#(a): (Int, Int)#})[#Void#]{{$}}
|
// FOO_OBJECT_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: instanceFunc8({#(a): (Int, Int)#})[#Void#]{{$}}
|
||||||
|
// FOO_OBJECT_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: instanceFunc9({#(a): @autoclosure () -> Int#})[#Void#]{{$}}
|
||||||
//
|
//
|
||||||
// FOO_OBJECT_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: varargInstanceFunc0({#(v): Int...#})[#Void#]{{$}}
|
// FOO_OBJECT_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: varargInstanceFunc0({#(v): Int...#})[#Void#]{{$}}
|
||||||
// FOO_OBJECT_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: varargInstanceFunc1({#(a): Float#}, {#v: Int...#})[#Void#]{{$}}
|
// FOO_OBJECT_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: varargInstanceFunc1({#(a): Float#}, {#v: Int...#})[#Void#]{{$}}
|
||||||
@@ -310,6 +313,7 @@ var fooObject: FooStruct
|
|||||||
// FOO_OBJECT_NO_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: .instanceFunc6()[#Int!#]{{$}}
|
// FOO_OBJECT_NO_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: .instanceFunc6()[#Int!#]{{$}}
|
||||||
// FOO_OBJECT_NO_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: .instanceFunc7({#a: Int#})[#Void#]{{$}}
|
// FOO_OBJECT_NO_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: .instanceFunc7({#a: Int#})[#Void#]{{$}}
|
||||||
// FOO_OBJECT_NO_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: .instanceFunc8({#(a): (Int, Int)#})[#Void#]{{$}}
|
// FOO_OBJECT_NO_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: .instanceFunc8({#(a): (Int, Int)#})[#Void#]{{$}}
|
||||||
|
// FOO_OBJECT_NO_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: .instanceFunc9({#(a): @autoclosure () -> Int#})[#Void#]{{$}}
|
||||||
//
|
//
|
||||||
// FOO_OBJECT_NO_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: .varargInstanceFunc0({#(v): Int...#})[#Void#]{{$}}
|
// FOO_OBJECT_NO_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: .varargInstanceFunc0({#(v): Int...#})[#Void#]{{$}}
|
||||||
// FOO_OBJECT_NO_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: .varargInstanceFunc1({#(a): Float#}, {#v: Int...#})[#Void#]{{$}}
|
// FOO_OBJECT_NO_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: .varargInstanceFunc1({#(a): Float#}, {#v: Int...#})[#Void#]{{$}}
|
||||||
@@ -352,6 +356,7 @@ var fooObject: FooStruct
|
|||||||
// FOO_STRUCT_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: instanceFunc6({#self: &FooStruct#})[#() -> Int!#]{{$}}
|
// FOO_STRUCT_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: instanceFunc6({#self: &FooStruct#})[#() -> Int!#]{{$}}
|
||||||
// FOO_STRUCT_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: instanceFunc7({#self: &FooStruct#})[#(a: Int) -> Void#]{{$}}
|
// FOO_STRUCT_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: instanceFunc7({#self: &FooStruct#})[#(a: Int) -> Void#]{{$}}
|
||||||
// FOO_STRUCT_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: instanceFunc8({#self: &FooStruct#})[#((Int, Int)) -> Void#]{{$}}
|
// FOO_STRUCT_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: instanceFunc8({#self: &FooStruct#})[#((Int, Int)) -> Void#]{{$}}
|
||||||
|
// FOO_STRUCT_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: instanceFunc9({#self: &FooStruct#})[#(@autoclosure () -> Int) -> Void#]{{$}}
|
||||||
// FOO_STRUCT_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: varargInstanceFunc0({#self: &FooStruct#})[#(Int...) -> Void#]{{$}}
|
// FOO_STRUCT_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: varargInstanceFunc0({#self: &FooStruct#})[#(Int...) -> Void#]{{$}}
|
||||||
// FOO_STRUCT_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: varargInstanceFunc1({#self: &FooStruct#})[#(Float, v: Int...) -> Void#]{{$}}
|
// FOO_STRUCT_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: varargInstanceFunc1({#self: &FooStruct#})[#(Float, v: Int...) -> Void#]{{$}}
|
||||||
// FOO_STRUCT_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: varargInstanceFunc2({#self: &FooStruct#})[#(Float, b: Double, v: Int...) -> Void#]{{$}}
|
// FOO_STRUCT_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: varargInstanceFunc2({#self: &FooStruct#})[#(Float, b: Double, v: Int...) -> Void#]{{$}}
|
||||||
@@ -406,6 +411,7 @@ var fooObject: FooStruct
|
|||||||
// FOO_STRUCT_NO_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: .instanceFunc6({#self: &FooStruct#})[#() -> Int!#]{{$}}
|
// FOO_STRUCT_NO_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: .instanceFunc6({#self: &FooStruct#})[#() -> Int!#]{{$}}
|
||||||
// FOO_STRUCT_NO_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: .instanceFunc7({#self: &FooStruct#})[#(a: Int) -> Void#]{{$}}
|
// FOO_STRUCT_NO_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: .instanceFunc7({#self: &FooStruct#})[#(a: Int) -> Void#]{{$}}
|
||||||
// FOO_STRUCT_NO_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: .instanceFunc8({#self: &FooStruct#})[#((Int, Int)) -> Void#]{{$}}
|
// FOO_STRUCT_NO_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: .instanceFunc8({#self: &FooStruct#})[#((Int, Int)) -> Void#]{{$}}
|
||||||
|
// FOO_STRUCT_NO_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: .instanceFunc9({#self: &FooStruct#})[#(@autoclosure () -> Int) -> Void#]{{$}}
|
||||||
// FOO_STRUCT_NO_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: .varargInstanceFunc0({#self: &FooStruct#})[#(Int...) -> Void#]{{$}}
|
// FOO_STRUCT_NO_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: .varargInstanceFunc0({#self: &FooStruct#})[#(Int...) -> Void#]{{$}}
|
||||||
// FOO_STRUCT_NO_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: .varargInstanceFunc1({#self: &FooStruct#})[#(Float, v: Int...) -> Void#]{{$}}
|
// FOO_STRUCT_NO_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: .varargInstanceFunc1({#self: &FooStruct#})[#(Float, v: Int...) -> Void#]{{$}}
|
||||||
// FOO_STRUCT_NO_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: .varargInstanceFunc2({#self: &FooStruct#})[#(Float, b: Double, v: Int...) -> Void#]{{$}}
|
// FOO_STRUCT_NO_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: .varargInstanceFunc2({#self: &FooStruct#})[#(Float, b: Double, v: Int...) -> Void#]{{$}}
|
||||||
|
|||||||
@@ -1,18 +1,27 @@
|
|||||||
// RUN: %swift-ide-test -code-completion -source-filename %s -code-completion-token=COMPLETE | FileCheck %s
|
// RUN: %swift-ide-test -code-completion -source-filename %s -code-completion-token=COMPLETE | FileCheck %s
|
||||||
|
|
||||||
typealias TestAl = (Int, Int) -> Bool
|
typealias FunctionTypealias = (Int, Int) -> Bool
|
||||||
|
typealias OptionalFunctionTypealias = ((Int, Int) -> Bool)?
|
||||||
|
|
||||||
class Bar {
|
struct FooStruct {
|
||||||
func foo1(callback: (Int, Int) -> Void) {
|
func instanceMethod1(callback: (Int, Int) -> Void) {}
|
||||||
}
|
func instanceMethod2(callback: ((Int, Int) -> Void)?) {}
|
||||||
func foo2(callback: TestAl) {
|
func instanceMethod3(callback: ((Int, Int) -> Void)??) {}
|
||||||
}
|
func instanceMethod4(callback: ((Int, Int) -> Void)!) {}
|
||||||
|
func instanceMethod5(callback: FunctionTypealias) {}
|
||||||
|
func instanceMethod6(callback: FunctionTypealias?) {}
|
||||||
|
func instanceMethod7(callback: OptionalFunctionTypealias) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
Bar().#^COMPLETE^#
|
FooStruct().#^COMPLETE^#
|
||||||
|
|
||||||
|
// CHECK: Begin completions, 7 items
|
||||||
// CHECK: Begin completions, 2 items
|
// CHECK-DAG: Decl[InstanceMethod]/CurrNominal: instanceMethod1({#(callback): (Int, Int) -> Void##(Int, Int) -> Void#})[#Void#]{{$}}
|
||||||
// CHECK-DAG: Decl[InstanceMethod]/CurrNominal: foo1({#(callback): (Int, Int) -> Void##(Int, Int) -> Void#})[#Void#]
|
// CHECK-DAG: Decl[InstanceMethod]/CurrNominal: instanceMethod2({#(callback): ((Int, Int) -> Void)?##(Int, Int) -> Void#})[#Void#]{{$}}
|
||||||
// CHECK-DAG: Decl[InstanceMethod]/CurrNominal: foo2({#(callback): TestAl##(Int, Int) -> Bool#})[#Void#]
|
// CHECK-DAG: Decl[InstanceMethod]/CurrNominal: instanceMethod3({#(callback): ((Int, Int) -> Void)??##(Int, Int) -> Void#})[#Void#]{{$}}
|
||||||
|
// CHECK-DAG: Decl[InstanceMethod]/CurrNominal: instanceMethod4({#(callback): ((Int, Int) -> Void)!##(Int, Int) -> Void#})[#Void#]{{$}}
|
||||||
|
// CHECK-DAG: Decl[InstanceMethod]/CurrNominal: instanceMethod5({#(callback): FunctionTypealias##(Int, Int) -> Bool#})[#Void#]{{$}}
|
||||||
|
// CHECK-DAG: Decl[InstanceMethod]/CurrNominal: instanceMethod6({#(callback): FunctionTypealias?##(Int, Int) -> Bool#})[#Void#]{{$}}
|
||||||
|
// CHECK-DAG: Decl[InstanceMethod]/CurrNominal: instanceMethod7({#(callback): OptionalFunctionTypealias##(Int, Int) -> Bool#})[#Void#]{{$}}
|
||||||
// CHECK: End completions
|
// CHECK: End completions
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user