/*
 * Copyright 2026 Sergey S. Chernov real.sergeych@gmail.com
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */

@file:Suppress("CanBeParameter")

package net.sergeych.lyng

import net.sergeych.lyng.obj.Obj

open class ScriptError(val pos: Pos, val errorMessage: String, cause: Throwable? = null) : Exception(
    """
        $pos: Error: $errorMessage
        
        ${pos.currentLine}
        ${if( pos.column >= 0 ) "-".repeat(pos.column) + "^" else ""}
    """.trimIndent(),
    cause
)

class ScriptFlowIsNoMoreCollected: Exception()

class ExecutionError(val errorObject: Obj, pos: Pos, message: String) : ScriptError(pos, message)

class ImportException(pos: Pos, message: String) : ScriptError(pos, message)