diff --git a/compiler/passes/src/type_checker/check_expressions.rs b/compiler/passes/src/type_checker/check_expressions.rs index 367c0cae2b..d31a1c0a6c 100644 --- a/compiler/passes/src/type_checker/check_expressions.rs +++ b/compiler/passes/src/type_checker/check_expressions.rs @@ -159,9 +159,6 @@ impl<'a> ExpressionVisitor<'a> for TypeChecker<'a> { } // Check circuit member types. - // TODO: Leo errors for: - // - missing members on initialization. - // - members that don't exist in the circuit circ.members .iter() .for_each(|CircuitMember::CircuitVariable(name, ty)| { @@ -171,10 +168,10 @@ impl<'a> ExpressionVisitor<'a> for TypeChecker<'a> { self.visit_expression(expr, &Some(*ty)); } } else { - self.handler.emit_err(TypeCheckerError::unknown_sym( - "circuit member variable", + self.handler.emit_err(TypeCheckerError::missing_circuit_member( + circ.identifier, name, - name.span(), + input.span(), )); }; }); diff --git a/leo/errors/src/errors/type_checker/type_checker_error.rs b/leo/errors/src/errors/type_checker/type_checker_error.rs index 5d63b7748e..98b69cbc59 100644 --- a/leo/errors/src/errors/type_checker/type_checker_error.rs +++ b/leo/errors/src/errors/type_checker/type_checker_error.rs @@ -216,7 +216,7 @@ create_messages!( missing_circuit_member { args: (circuit: impl Display, member: impl Display), msg: format!( - "Circuit `{circuit}` missing member `{member}`.", + "Circuit initialization expression for `{circuit}` is missing member `{member}`.", ), help: None, } diff --git a/tests/expectations/compiler/compiler/records/init_expression_var_fail.out b/tests/expectations/compiler/compiler/records/init_expression_var_fail.out index 16535102a9..db6c601efc 100644 --- a/tests/expectations/compiler/compiler/records/init_expression_var_fail.out +++ b/tests/expectations/compiler/compiler/records/init_expression_var_fail.out @@ -2,4 +2,4 @@ namespace: Compile expectation: Fail outputs: - - "Error [ETYC0372006]: Unknown circuit member variable `owner`\n --> compiler-test:5:5\n |\n 5 | owner: address,\n | ^^^^^\n" + - "Error [ETYC0372019]: Circuit initialization expression for `Token` is missing member `owner`.\n --> compiler-test:13:12\n |\n 13 | return Token {\n 14 | sender: r0, // This variable should be named `owner`.\n 15 | balance: 0u64,\n 16 | amount: r1,\n 17 | };\n | ^^^^^^\n"