@@ -44,14 +44,14 @@ Result<std::shared_ptr<B>> Unbound<B>::Bind(const Schema& schema) const {
4444// NamedReference implementation
4545Result<std::unique_ptr<NamedReference>> NamedReference::Make (std::string field_name) {
4646 if (field_name.empty ()) [[unlikely]] {
47- return InvalidExpression (" NamedReference field name cannot be empty" );
47+ return InvalidExpression (" NamedReference cannot have empty field name " );
4848 }
4949 return std::unique_ptr<NamedReference>(new NamedReference (std::move (field_name)));
5050}
5151
5252NamedReference::NamedReference (std::string field_name)
5353 : field_name_(std::move(field_name)) {
54- ICEBERG_DCHECK (!field_name_.empty (), " NamedReference field name cannot be empty" );
54+ ICEBERG_DCHECK (!field_name_.empty (), " NamedReference cannot have empty field name " );
5555}
5656
5757NamedReference::~NamedReference () = default ;
@@ -73,14 +73,16 @@ std::string NamedReference::ToString() const {
7373
7474// BoundReference implementation
7575Result<std::unique_ptr<BoundReference>> BoundReference::Make (SchemaField field) {
76- if (!field.type ()) [[unlikely]] {
77- return InvalidExpression (" BoundReference field type cannot be null" );
76+ if (auto status = field.Validate (); !status.has_value ()) [[unlikely]] {
77+ return InvalidExpression (" Cannot create BoundReference with invalid field: {}" ,
78+ status.error ().message );
7879 }
7980 return std::unique_ptr<BoundReference>(new BoundReference (std::move (field)));
8081}
8182
8283BoundReference::BoundReference (SchemaField field) : field_(std::move(field)) {
83- ICEBERG_DCHECK (field_.type () != nullptr , " BoundReference field type cannot be null" );
84+ ICEBERG_DCHECK (field_.Validate ().has_value (),
85+ " Cannot create BoundReference with invalid field" );
8486}
8587
8688BoundReference::~BoundReference () = default ;
@@ -108,7 +110,8 @@ bool BoundReference::Equals(const BoundTerm& other) const {
108110Result<std::unique_ptr<UnboundTransform>> UnboundTransform::Make (
109111 std::shared_ptr<NamedReference> ref, std::shared_ptr<Transform> transform) {
110112 if (!ref || !transform) [[unlikely]] {
111- return InvalidExpression (" UnboundTransform cannot have null children" );
113+ return InvalidExpression (
114+ " Cannot create UnboundTransform with null reference or transform" );
112115 }
113116 return std::unique_ptr<UnboundTransform>(
114117 new UnboundTransform (std::move (ref), std::move (transform)));
@@ -117,8 +120,8 @@ Result<std::unique_ptr<UnboundTransform>> UnboundTransform::Make(
117120UnboundTransform::UnboundTransform (std::shared_ptr<NamedReference> ref,
118121 std::shared_ptr<Transform> transform)
119122 : ref_(std::move(ref)), transform_(std::move(transform)) {
120- ICEBERG_DCHECK (ref_ != nullptr , " UnboundTransform reference cannot be null " );
121- ICEBERG_DCHECK (transform_ != nullptr , " UnboundTransform transform cannot be null" );
123+ ICEBERG_DCHECK (!ref || !transform,
124+ " Cannot create UnboundTransform with null reference or transform " );
122125}
123126
124127UnboundTransform::~UnboundTransform () = default ;
@@ -140,7 +143,8 @@ Result<std::unique_ptr<BoundTransform>> BoundTransform::Make(
140143 std::shared_ptr<BoundReference> ref, std::shared_ptr<Transform> transform,
141144 std::shared_ptr<TransformFunction> transform_func) {
142145 if (!ref || !transform || !transform_func) [[unlikely]] {
143- return InvalidExpression (" BoundTransform cannot have null children" );
146+ return InvalidExpression (
147+ " Cannot create BoundTransform with null reference or transform" );
144148 }
145149 return std::unique_ptr<BoundTransform>(new BoundTransform (
146150 std::move (ref), std::move (transform), std::move (transform_func)));
@@ -152,10 +156,8 @@ BoundTransform::BoundTransform(std::shared_ptr<BoundReference> ref,
152156 : ref_(std::move(ref)),
153157 transform_ (std::move(transform)),
154158 transform_func_(std::move(transform_func)) {
155- ICEBERG_DCHECK (ref_ != nullptr , " BoundTransform reference cannot be null" );
156- ICEBERG_DCHECK (transform_ != nullptr , " BoundTransform transform cannot be null" );
157- ICEBERG_DCHECK (transform_func_ != nullptr ,
158- " BoundTransform transform function cannot be null" );
159+ ICEBERG_DCHECK (ref_ && transform_ && transform_func_,
160+ " Cannot create BoundTransform with null reference or transform" );
159161}
160162
161163BoundTransform::~BoundTransform () = default ;
0 commit comments