blob: 8dea7613d6954cbc571e542060f103b476e0c4f5 [file] [log] [blame]
// RUN: %target-typecheck-verify-swift
@noreturn func noReturn1(_: Int) {}
// expected-error@-1 {{'@noreturn' has been removed; functions that never return should have a return type of 'Never' instead}}{{1-11=}}{{33-33= -> Never }}
@noreturn func noReturn2(_: Int)
{}
// expected-error@-2 {{'@noreturn' has been removed; functions that never return should have a return type of 'Never' instead}}{{1-11=}}{{33-33= -> Never}}
@noreturn
func noReturn3(_: Int)
{}
// expected-error@-3 {{'@noreturn' has been removed; functions that never return should have a return type of 'Never' instead}}{{1-10=}}{{23-23= -> Never}}
@noreturn func noReturnInt1(_: Int) -> Int {}
// expected-error@-1 {{'@noreturn' has been removed; functions that never return should have a return type of 'Never' instead}}{{1-11=}}{{40-43=Never}}
@noreturn func noReturnInt2(_: Int) -> Int
{}
// expected-error@-2 {{'@noreturn' has been removed; functions that never return should have a return type of 'Never' instead}}{{1-11=}}{{40-43=Never}}
@noreturn func noReturnThrows1(_: Int) throws {}
// expected-error@-1 {{'@noreturn' has been removed; functions that never return should have a return type of 'Never' instead}}{{1-11=}}{{46-46= -> Never }}
@noreturn func noReturnThrows2(_: Int) throws
{}
// expected-error@-2 {{'@noreturn' has been removed; functions that never return should have a return type of 'Never' instead}}{{1-11=}}{{46-46= -> Never}}
@noreturn func noReturnThrowsInt1(_: Int) throws -> Int {}
// expected-error@-1 {{'@noreturn' has been removed; functions that never return should have a return type of 'Never' instead}}{{1-11=}}{{53-56=Never}}
@noreturn func noReturnThrowsInt2(_: Int) throws -> Int
{}
// expected-error@-2 {{'@noreturn' has been removed; functions that never return should have a return type of 'Never' instead}}{{1-11=}}{{53-56=Never}}
// Test that error recovery gives us the 'Never' return type
let x: Never = noReturn1(0) // No error
// @noreturn in function type declarations
let valueNoReturn: @noreturn () -> ()
// expected-error@-1 {{'@noreturn' has been removed; functions that never return should have a return type of 'Never' instead}}{{20-30=}}{{36-38=Never}}
let valueNoReturnInt: @noreturn () -> Int
// expected-error@-1 {{'@noreturn' has been removed; functions that never return should have a return type of 'Never' instead}}{{23-33=}}{{39-42=Never}}
let valueNoReturnInt2: @noreturn
() -> Int
// expected-error@-2 {{'@noreturn' has been removed; functions that never return should have a return type of 'Never' instead}}{{24-1=}}{{7-10=Never}}
let valueNoReturn2: @noreturn () -> () = {}
// expected-error@-1 {{'@noreturn' has been removed; functions that never return should have a return type of 'Never' instead}}{{21-31=}}{{37-39=Never}}