NEPLg2 Standard Library - error
Web Playground
Web Playground

error: 診断しんだんあたいモデルをまとめるライブラリ

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

DiagLevel: 診断しんだん大分類だいぶんるい

目的もくてき:

注意ちゅうい:

計算量けいさんりょう:

StdErrorKind: stdlib 全体ぜんたい共有きょうゆうする軽量けいりょう失敗しっぱい分類ぶんるい

目的もくてき:

注意ちゅうい:

計算量けいさんりょう:

Span: 診断しんだん位置いち

目的もくてき:

注意ちゅうい:

計算量けいさんりょう:

DiagKind: 診断しんだん分類ぶんるい

目的もくてき:

注意ちゅうい:

計算量けいさんりょう:

Diag: 単一たんいつ診断しんだん

目的もくてき:

実装じっそう:

注意ちゅうい:

計算量けいさんりょう:

Diags: 複数ふくすう診断しんだん順序じゅんじょきで保持ほじする struct

目的もくてき:

実装じっそう:

計算量けいさんりょう:

Outcome: ResultDiags同時どうじはこぶ struct

目的もくてき:

注意ちゅうい:

計算量けいさんりょう:

diag_kind_new: DiagKind構築こうちくする
std_error_kind: StdErrorKindつ error 診断しんだん分類ぶんるいつく
log_kind: local kind きの log 分類ぶんるいつく
info_kind: local kind きの info 分類ぶんるいつく
warn_kind: local kind きの warn 分類ぶんるいつく
diag_new: 診断しんだん 1 けん構築こうちくする
diag_log: log 診断しんだんつく
diag_info: info 診断しんだんつく
diag_warn: warn 診断しんだんつく
diag_error: StdErrorKind き error 診断しんだんつく
diag_with_span: 位置いち情報じょうほう付与ふよする
diag_with_source: 由来ゆらい情報じょうほう付与ふよする
diag_add_note: note を 1 けん追加ついかする
diag_add_help: help を 1 けん追加ついかする
diag_level: 重大度じゅうだいど
diag_std_error_kind: StdErrorKind
diag_std_error_kind_str: StdErrorKind文字列もじれつめい
diag_err: DiagResult::Errつつ
diag_out_of_memory: 確保かくほ失敗しっぱいあらわす error 診断しんだんつく
diag_empty_collection: からコレクション操作そうさの error 診断しんだんつく
diag_capacity_exceeded: 容量ようりょう超過ちょうかの error 診断しんだんつく
diag_key_not_found: 欠落けつらく key の error 診断しんだんつく
diags_new: からDiagsつく
diags_one: Diag 1 けんから Diagsつく
diags_push: DiagsDiag を 1 けん追加ついかする
diags_len: 診断しんだん件数けんすうかえ
diags_has_errors: error level の診断しんだんを 1 けんでもふくむか判定はんていする
outcome_ok: 診断しんだんなしの成功せいこう結果けっかつく
outcome_err: 診断しんだんなしの失敗しっぱい結果けっかつく
outcome_with_diags: 診断しんだんぐん付与ふよする
result_to_outcome: Result診断しんだんなし Outcome昇格しょうかくする
into_outcome: ResultOutcome昇格しょうかくする共通きょうつう入口いりぐち

目的もくてき

  • ResultOutcomeおなじ helper めいあつかい、がわ必要ひつよう時点じてんOutcomeそろえられるようにします。

使用例しようれい

TEST
#entry main
#target std
#import "std/test" as *
#import "alloc/diag/error" as *
fn main <()*>i32> ():
    let o <Outcome<i32, StdErrorKind>> into_outcome Result::Ok<i32, StdErrorKind> 7;
    assert outcome_is_ok o;
    0

実装じっそう

  • result_to_outcome をそのままび、診断しんだんぐんなしの Outcomeかえします。

注意ちゅうい

  • Result がわ診断しんだんぐんはないため、昇格しょうかくしても diagsnone です。

計算量けいさんりょう

  • 時間じかん: O(1)
  • 空間くうかん: O(1)

into_outcome: そのまま Outcomeかえ

目的もくてき

  • すでに OutcomeっているあたいResultおなじ helper めいあつかえるようにします。

実装じっそう

  • 入力にゅうりょくをそのままかえします。

注意ちゅうい

  • diags有無うむ保持ほじされます。

計算量けいさんりょう

  • 時間じかん: O(1)
  • 空間くうかん: O(1)

result_like_result: Result をそのまま

目的もくてき

  • Result / Outcome共通きょうつう helper であつかうとき、成否せいひじくだけをおな名前なまえせるようにします。

実装じっそう

  • 入力にゅうりょくResult をそのままかえします。

計算量けいさんりょう

  • 時間じかん: O(1)
  • 空間くうかん: O(1)

result_like_result: Outcome 内部ないぶResult

目的もくてき

  • Outcome 内部ないぶresult field を Resultおな名前なまえせるようにします。

実装じっそう

  • outcome_resultびます。

計算量けいさんりょう

  • 時間じかん: O(1)
  • 空間くうかん: O(1)

result_like_is_ok: Result成功せいこう判定はんていする
result_like_is_ok: Outcome成功せいこう判定はんていする
result_like_is_err: Result失敗しっぱい判定はんていする
result_like_is_err: Outcome失敗しっぱい判定はんていする
outcome_result: Outcome 内部ないぶResult

目的もくてき:

  • Outcomeったがわが、診断しんだんぐんとはべつ成否せいひだけを確認かくにんできるようにします。
  • ResultOutcome共通きょうつう helper であつかうときの入口いりぐちとして使つかいます。

使用例しようれい:
neplg2:test

#entry main
#target std
#import "std/test" as *
#import "alloc/diag/error" as *
fn main <()*>i32> ():
    let o <Outcome<i32, StdErrorKind>> outcome_ok<i32, StdErrorKind> 42;
    match outcome_result o:
        Result::Ok v:
            assert_eq_i32 42 v;
        Result::Err _e:
            test_fail "expected ok";
    0

実装じっそう:

  • struct field result をそのままかえします。

注意ちゅうい:

  • diagsかえさないので、診断しんだんぐんたい場合ばあいoutcome_diags_or_empty併用へいようします。

計算量けいさんりょう:

  • 時間じかん: O(1)
  • 空間くうかん: O(1)

outcome_is_ok: Outcome.resultOk判定はんていする

目的もくてき:

  • あたい成否せいひだけをみじかりたい場面ばめんで、matchはぶいて使つかえるようにします。

実装じっそう:

  • outcome_result omatch し、Result::Ok なら true をかえします。

注意ちゅうい:

  • diags に warning や error がふくまれていても、resultOk なら true です。
  • 診断しんだんぐん重大度じゅうだいどoutcome_has_errors別途べっと確認かくにんします。

計算量けいさんりょう:

  • 時間じかん: O(1)
  • 空間くうかん: O(1)

outcome_is_err: Outcome.resultErr判定はんていする

目的もくてき:

  • 軽量けいりょう失敗しっぱい制御せいぎょだけをたい場面ばめんで、ResultErr かどうかを即座そくざ調しらべられるようにします。

実装じっそう:

  • outcome_is_ok否定ひていかえします。

注意ちゅうい:

  • Outcome診断しんだんぐんとは独立どくりつです。

計算量けいさんりょう:

  • 時間じかん: O(1)
  • 空間くうかん: O(1)

outcome_diags_or_empty: Outcome診断しんだんぐんからならからDiagsえてかえ

目的もくてき:

  • Outcome使つかがわOption<Diags> をそのつど match せず、一貫いっかんして Diags としてあつかえるようにします。

実装じっそう:

  • some ならそのままかえし、none なら diags_newつくります。

注意ちゅうい:

  • none のときはから Diags新規しんき確保かくほします。

計算量けいさんりょう:

  • 時間じかん: O(1)
  • 空間くうかん: O(1)

outcome_has_errors: Outcome診断しんだんぐんに error level がふくまれるか判定はんていする

目的もくてき:

  • compiler や richer な parser が Outcome.result とはべつに、診断しんだんぐん重大度じゅうだいど処理しょり継続けいぞく判断はんだんするときに使つかいます。

実装じっそう:

  • diagsnone なら false、some なら diags_has_errorsびます。

注意ちゅうい:

  • Result::Err であっても diagsからなら false をかえします。
  • Outcome.result成否せいひDiagLevel::Error別軸べつじくです。

計算量けいさんりょう:

  • 時間じかん: O(n)
  • 空間くうかん: O(n)(再帰さいきぶん)

std_error_kind_str: StdErrorKind文字列もじれつ変換へんかんする
diag_level_str: DiagLevel文字列もじれつ変換へんかんする