Skip to content

Commit 3c76878

Browse files
authored
chore(refactor): Move resolved error structures out of acir crate (#7734)
1 parent 5a41441 commit 3c76878

File tree

8 files changed

+38
-41
lines changed

8 files changed

+38
-41
lines changed

acvm-repo/acir/src/circuit/mod.rs

-22
Original file line numberDiff line numberDiff line change
@@ -123,28 +123,6 @@ impl<'de> Deserialize<'de> for ErrorSelector {
123123
}
124124
}
125125

126-
#[derive(Clone, PartialEq, Eq, Debug, Serialize, Deserialize)]
127-
pub struct RawAssertionPayload<F> {
128-
pub selector: ErrorSelector,
129-
pub data: Vec<F>,
130-
}
131-
132-
#[derive(Clone, PartialEq, Eq, Debug)]
133-
pub enum ResolvedAssertionPayload<F> {
134-
String(String),
135-
Raw(RawAssertionPayload<F>),
136-
}
137-
138-
#[derive(Debug, Copy, Clone)]
139-
/// The opcode location for a call to a separate ACIR circuit
140-
/// This includes the function index of the caller within a [program][Program]
141-
/// and the index in the callers ACIR to the specific call opcode.
142-
/// This is only resolved and set during circuit execution.
143-
pub struct ResolvedOpcodeLocation {
144-
pub acir_function_index: usize,
145-
pub opcode_location: OpcodeLocation,
146-
}
147-
148126
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, PartialOrd, Ord, Serialize, Deserialize)]
149127
#[cfg_attr(feature = "arb", derive(proptest_derive::Arbitrary))]
150128
/// Opcodes are locatable so that callers can

acvm-repo/acvm/src/pwg/brillig.rs

+5-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use acir::{
44
AcirField,
55
brillig::{ForeignCallParam, ForeignCallResult, Opcode as BrilligOpcode},
66
circuit::{
7-
ErrorSelector, OpcodeLocation, RawAssertionPayload, ResolvedAssertionPayload,
7+
OpcodeLocation,
88
brillig::{BrilligFunctionId, BrilligInputs, BrilligOutputs},
99
opcodes::BlockId,
1010
},
@@ -16,7 +16,10 @@ use serde::{Deserialize, Serialize};
1616

1717
use crate::{OpcodeResolutionError, pwg::OpcodeNotSolvable};
1818

19-
use super::{get_value, insert_value, memory_op::MemoryOpSolver};
19+
use super::{
20+
ErrorSelector, RawAssertionPayload, ResolvedAssertionPayload, get_value, insert_value,
21+
memory_op::MemoryOpSolver,
22+
};
2023

2124
#[derive(Debug)]
2225
pub enum BrilligSolverStatus<F> {

acvm-repo/acvm/src/pwg/mod.rs

+13-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ use acir::{
77
brillig::ForeignCallResult,
88
circuit::{
99
AssertionPayload, ErrorSelector, ExpressionOrMemory, Opcode, OpcodeLocation,
10-
RawAssertionPayload, ResolvedAssertionPayload,
1110
brillig::{BrilligBytecode, BrilligFunctionId},
1211
opcodes::{
1312
AcirFunctionId, BlockId, ConstantOrWitnessEnum, FunctionInput, InvalidInputBitSize,
@@ -34,6 +33,7 @@ mod memory_op;
3433

3534
pub use self::brillig::{BrilligSolver, BrilligSolverStatus};
3635
pub use brillig::ForeignCallWaitInfo;
36+
use serde::{Deserialize, Serialize};
3737

3838
#[derive(Debug, Clone, PartialEq)]
3939
pub enum ACVMStatus<F> {
@@ -117,6 +117,18 @@ impl std::fmt::Display for ErrorLocation {
117117
}
118118
}
119119

120+
#[derive(Clone, PartialEq, Eq, Debug, Serialize, Deserialize)]
121+
pub struct RawAssertionPayload<F> {
122+
pub selector: ErrorSelector,
123+
pub data: Vec<F>,
124+
}
125+
126+
#[derive(Clone, PartialEq, Eq, Debug)]
127+
pub enum ResolvedAssertionPayload<F> {
128+
String(String),
129+
Raw(RawAssertionPayload<F>),
130+
}
131+
120132
#[derive(Clone, PartialEq, Eq, Debug, Error)]
121133
pub enum OpcodeResolutionError<F> {
122134
#[error("Cannot solve opcode: {0}")]

acvm-repo/acvm_js/src/execute.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
use std::{future::Future, pin::Pin};
22

3-
use acvm::acir::circuit::ResolvedAssertionPayload;
43
use acvm::acir::circuit::brillig::BrilligBytecode;
54
use acvm::{BlackBoxFunctionSolver, FieldElement};
65
use acvm::{
76
acir::circuit::{Circuit, Program},
87
acir::native_types::{WitnessMap, WitnessStack},
9-
pwg::{ACVM, ACVMStatus, ErrorLocation, OpcodeResolutionError},
8+
pwg::{ACVM, ACVMStatus, ErrorLocation, OpcodeResolutionError, ResolvedAssertionPayload},
109
};
1110
use bn254_blackbox_solver::Bn254BlackBoxSolver;
1211

acvm-repo/acvm_js/src/js_execution_error.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use acvm::{
22
FieldElement,
3-
acir::circuit::{OpcodeLocation, RawAssertionPayload, brillig::BrilligFunctionId},
3+
acir::circuit::{OpcodeLocation, brillig::BrilligFunctionId},
4+
pwg::RawAssertionPayload,
45
};
56
use gloo_utils::format::JsValueSerdeExt;
67
use js_sys::{Array, Error, JsString, Reflect};

tooling/nargo/src/errors.rs

+12-5
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,8 @@ use std::collections::BTreeMap;
22

33
use acvm::{
44
AcirField, FieldElement,
5-
acir::circuit::{
6-
ErrorSelector, OpcodeLocation, RawAssertionPayload, ResolvedAssertionPayload,
7-
ResolvedOpcodeLocation, brillig::BrilligFunctionId,
8-
},
9-
pwg::{ErrorLocation, OpcodeResolutionError},
5+
acir::circuit::{ErrorSelector, OpcodeLocation, brillig::BrilligFunctionId},
6+
pwg::{ErrorLocation, OpcodeResolutionError, RawAssertionPayload, ResolvedAssertionPayload},
107
};
118
use noirc_abi::{Abi, AbiErrorType, display_abi_error};
129
use noirc_errors::{CustomDiagnostic, debug_info::DebugInfo, reporter::ReportedErrors};
@@ -86,6 +83,16 @@ impl<F: AcirField> NargoError<F> {
8683
}
8784
}
8885

86+
#[derive(Debug, Copy, Clone)]
87+
/// The opcode location for a call to a separate ACIR circuit
88+
/// This includes the function index of the caller within a [program][Program]
89+
/// and the index in the callers ACIR to the specific call opcode.
90+
/// This is only resolved and set during circuit execution.
91+
pub struct ResolvedOpcodeLocation {
92+
pub acir_function_index: usize,
93+
pub opcode_location: OpcodeLocation,
94+
}
95+
8996
#[derive(Debug, Error)]
9097
pub enum ExecutionError<F: AcirField> {
9198
#[error("Failed assertion")]

tooling/nargo/src/ops/execute.rs

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
11
use acvm::acir::circuit::brillig::BrilligBytecode;
2-
use acvm::acir::circuit::{
3-
OpcodeLocation, Program, ResolvedAssertionPayload, ResolvedOpcodeLocation,
4-
};
2+
use acvm::acir::circuit::{OpcodeLocation, Program};
53
use acvm::acir::native_types::WitnessStack;
64
use acvm::pwg::{
75
ACVM, ACVMStatus, ErrorLocation, OpcodeNotSolvable, OpcodeResolutionError, ProfilingSamples,
6+
ResolvedAssertionPayload,
87
};
98
use acvm::{AcirField, BlackBoxFunctionSolver};
109
use acvm::{acir::circuit::Circuit, acir::native_types::WitnessMap};
1110

1211
use crate::NargoError;
13-
use crate::errors::ExecutionError;
12+
use crate::errors::{ExecutionError, ResolvedOpcodeLocation};
1413
use crate::foreign_calls::ForeignCallExecutor;
1514

1615
struct ProgramExecutor<'a, F: AcirField, B: BlackBoxFunctionSolver<F>, E: ForeignCallExecutor<F>> {

tooling/noirc_abi_wasm/src/lib.rs

+2-4
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,8 @@ use getrandom as _;
77

88
use acvm::{
99
FieldElement,
10-
acir::{
11-
circuit::RawAssertionPayload,
12-
native_types::{WitnessMap, WitnessStack},
13-
},
10+
acir::native_types::{WitnessMap, WitnessStack},
11+
pwg::RawAssertionPayload,
1412
};
1513
use iter_extended::try_btree_map;
1614
use noirc_abi::{

0 commit comments

Comments
 (0)