/*
 * Copyright (c) Huawei Technologies Co., Ltd. 2025. All rights reserved.
 * This source file is part of the Cangjie project, licensed under Apache-2.0
 * with Runtime Library Exception.
 *
 * See https://cangjie-lang.cn/pages/LICENSE for license information.
 */

package stdx.effect

public class DoubleResumeException <: Exception {
    public init() {
        super("Resumption resumed multiple times")
    }
    protected override func getClassName(): String {
        "DoubleResumeException"
    }
}

public class UnhandledCommandException <: Exception {
    public init() {
        super("Unhandled command")
    }
    protected override func getClassName(): String {
        "UnhandledCommand"
    }
}

public abstract class Command<Res> {
    public open func defaultImpl(): Res {
        throw UnhandledCommandException()
    }
}