Rascal中的switch语句不作为case或default执行

时间:2015-02-06 16:53:48

标签: switch-statement pattern-matching rascal

这是我在Pattern matching AST nodes in Rascal

发布的问题的一些扩展

我对switch语句如何查找模式进行了一些修改,但似乎没有任何模式匹配且默认模式没有执行!

代码:

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

任何想法可能会发生在这里?我做错了吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

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