Skip to content

Commit 454efda

Browse files
Fix core type in try ... with ... body (#1042)
Fixes #1040 by transforming the inferred type from source (instead of inferring the type of the transformed expression).
1 parent ee900d0 commit 454efda

File tree

3 files changed

+16
-1
lines changed

3 files changed

+16
-1
lines changed

effekt/shared/src/main/scala/effekt/core/Transformer.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -443,7 +443,7 @@ object Transformer extends Phase[Typechecked, CoreTransformed] {
443443

444444
val transformedProg = transform(prog)
445445

446-
val answerType = transformedProg.tpe
446+
val answerType = transform(Context.inferredTypeOf(prog))
447447

448448
// create a fresh prompt, a variable referring to it, and a parameter binding it
449449
val promptId = Id("p")

examples/pos/issue1040.check

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
OK

examples/pos/issue1040.effekt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
effect hurl(n: String): Unit
2+
3+
def result(): String / {} = {
4+
try {
5+
do hurl("OK")
6+
<{"No return?" }> // <-- Replace '"No return?"' with '<>' and nothing gets printed
7+
} with hurl {
8+
def hurl(r) = r
9+
}
10+
}
11+
12+
def main() = {
13+
println(result())
14+
}

0 commit comments

Comments
 (0)