Rascal 中的 Switch 语句未作为案例或默认值执行

Switch statement in Rascal not executing as cases or default

这是对我在此处发布的问题的扩展

我对 switch 语句查找模式的方式做了一些修改,但似乎有 none 个模式匹配,而默认模式没有执行!

代码:

private str synthesise_f(Core::AST::Exp exp) {
    println("START");
    switch (exp) {
        case Exp e: str t(&T t0, &T t1) {
            println("IN CASE");
        }
        default: println("!DEFAULT!");
    }
    println("END");
    return ret;
}

输出为:

START
END

知道这里会发生什么吗?我做错了什么吗?

谢谢!

Rascal 代码看起来不错,所以我猜你的修改(在解释器的代码中?)干扰了所述解释器中的隐藏假设或优化。最好 post 在 github 上提出拉取请求,以便我们讨论一下?很可能是内部异常导致解释器跳过默认情况。