Swift: add function call autoclosure tests

This commit is contained in:
Robert Marsh
2023-10-06 19:49:33 +00:00
parent f7ca8e5b39
commit 661da76838
6 changed files with 87 additions and 0 deletions

View File

@@ -3338,6 +3338,24 @@ cfg.swift:
# 545| getElse(): [BraceStmt] { ... }
# 546| getElement(0): [ReturnStmt] return ...
# 546| getResult(): [IntegerLiteralExpr] 0
# 550| [NamedFunction] usesAutoclosure(_:)
# 550| InterfaceType = (@autoclosure () -> Int) -> Int
# 550| getParam(0): [ParamDecl] expr
# 550| Type = () -> Int
# 550| getBody(): [BraceStmt] { ... }
# 551| getElement(0): [ReturnStmt] return ...
# 551| getResult(): [CallExpr] call to ...
# 551| getFunction(): [DeclRefExpr] expr
# 554| [NamedFunction] autoclosureTest()
# 554| InterfaceType = () -> ()
# 554| getBody(): [BraceStmt] { ... }
# 555| getElement(0): [CallExpr] call to usesAutoclosure(_:)
# 555| getFunction(): [DeclRefExpr] usesAutoclosure(_:)
# 555| getArgument(0): [Argument] : { ... }
# 555| getExpr(): [AutoClosureExpr] { ... }
# 555| getBody(): [BraceStmt] { ... }
# 555| getElement(0): [ReturnStmt] return ...
# 555| getResult(): [IntegerLiteralExpr] 1
declarations.swift:
# 1| [StructDecl] Foo
# 2| getMember(0): [PatternBindingDecl] var ... = ...

View File

@@ -546,3 +546,11 @@ func testNilCoalescing2(x: Bool?) -> Int {
return 0
}
}
func usesAutoclosure(_ expr: @autoclosure () -> Int) -> Int {
return expr()
}
func autoclosureTest() {
usesAutoclosure(1)
}

View File

@@ -6276,3 +6276,46 @@ cfg.swift:
# 546| 0
#-----| -> return ...
# 550| enter usesAutoclosure(_:)
#-----| -> usesAutoclosure(_:)
# 550| exit usesAutoclosure(_:)
# 550| exit usesAutoclosure(_:) (normal)
#-----| -> exit usesAutoclosure(_:)
# 550| usesAutoclosure(_:)
#-----| -> expr
# 550| expr
#-----| -> expr
# 551| return ...
#-----| return -> exit usesAutoclosure(_:) (normal)
# 551| expr
#-----| -> call to ...
# 551| call to ...
#-----| -> return ...
# 554| autoclosureTest()
#-----| -> usesAutoclosure(_:)
# 554| enter autoclosureTest()
#-----| -> autoclosureTest()
# 554| exit autoclosureTest()
# 554| exit autoclosureTest() (normal)
#-----| -> exit autoclosureTest()
# 555| usesAutoclosure(_:)
#-----| -> { ... }
# 555| call to usesAutoclosure(_:)
#-----| -> exit autoclosureTest() (normal)
# 555| { ... }
#-----| -> call to usesAutoclosure(_:)

View File

@@ -546,3 +546,11 @@ func testNilCoalescing2(x: Bool?) -> Int {
return 0
}
}
func usesAutoclosure(_ expr: @autoclosure () -> Int) -> Int {
return expr()
}
func autoclosureTest() {
usesAutoclosure(1)
}

View File

@@ -1091,3 +1091,5 @@
| test.swift:871:24:871:31 | [...] | test.swift:871:24:871:31 | [...] |
| test.swift:872:28:872:31 | [...] | test.swift:872:28:872:31 | [...] |
| test.swift:873:21:873:31 | [...] | test.swift:873:21:873:31 | [...] |
| test.swift:876:22:876:49 | SSA def(expr) | test.swift:877:13:877:13 | expr |
| test.swift:876:22:876:49 | expr | test.swift:876:22:876:49 | SSA def(expr) |

View File

@@ -872,3 +872,11 @@ func testVarargsCaller() {
testVarargs2(source(), 2, 3)
testVarargs3(1, 2, source())
}
func usesAutoclosure(_ expr: @autoclosure () -> Int) {
sink(arg: expr())
}
func autoclosureTest() {
usesAutoclosure(source())
}