use erg_common::error::{ErrorCore, ErrorKind, Location, SubMessage}; use erg_common::io::Input; use erg_common::switch_lang; use erg_compiler::error::CompileError; pub(crate) fn reassign_func_error( input: Input, loc: Location, caused_by: String, name: &str, ) -> CompileError { CompileError::new( ErrorCore::new( vec![SubMessage::only_loc(loc)], switch_lang!( "japanese" => format!("{name}は既に宣言され、参照されています。このような関数に再代入するのは望ましくありません"), "simplified_chinese" => format!("{name}已声明,已被引用。不建议再次赋值"), "traditional_chinese" => format!("{name}已宣告,已被引用。不建議再次賦值"), "english" => format!("{name} has already been declared and referenced. It is not recommended to reassign such a function"), ), 1, ErrorKind::AssignError, loc, ), input, caused_by, ) } pub(crate) fn self_not_found_error(input: Input, loc: Location, caused_by: String) -> CompileError { CompileError::new( ErrorCore::new( vec![SubMessage::only_loc(loc)], switch_lang!( "japanese" => format!("このメソッドは第一引数にselfを取るべきですが、見つかりませんでした"), "simplified_chinese" => format!("该方法应该有第一个参数self,但是没有找到"), "traditional_chinese" => format!("該方法應該有第一個參數self,但是沒有找到"), "english" => format!("This method should have the first parameter `self`, but it was not found"), ), 2, ErrorKind::NameError, loc, ), input, caused_by, ) } pub(crate) fn init_var_error(input: Input, loc: Location, caused_by: String) -> CompileError { CompileError::new( ErrorCore::new( vec![SubMessage::only_loc(loc)], switch_lang!( "japanese" => format!("`__init__`はメソッドです。メンバ変数として宣言するべきではありません"), "simplified_chinese" => format!("__init__是方法。不能宣告为变量"), "traditional_chinese" => format!("__init__是方法。不能宣告為變量"), "english" => format!("`__init__` should be a method. It should not be defined as a member variable"), ), 3, ErrorKind::NameError, loc, ), input, caused_by, ) }