File tree Expand file tree Collapse file tree 7 files changed +16
-9
lines changed Expand file tree Collapse file tree 7 files changed +16
-9
lines changed Original file line number Diff line number Diff line change @@ -23,6 +23,8 @@ All Notable changes to `bakame/http-strucured-fields` will be documented in this
23
23
- ` Value ` internal class to improve Item public API;
24
24
- ** [ BC Break] ** ` ::fromAssociative ` and ` ::fromPair ` the ` $parameters ` argument is now required;
25
25
- ** [ BC Break] ** ` MemberOrderedMap ` instances can no longer be added to ` Dictionary ` or ` OuterList ` instances.
26
+ - RFC restriction on eligible container members.
27
+ - Exception normalization.
26
28
27
29
### Deprecated
28
30
Original file line number Diff line number Diff line change @@ -53,7 +53,8 @@ private static function filterMember(mixed $member): object
53
53
{
54
54
return match (true ) {
55
55
$ member instanceof ParameterAccess && ($ member instanceof MemberList || $ member instanceof ValueAccess) => $ member ,
56
- $ member instanceof MemberOrderedMap => throw new InvalidArgument ('Only structured fields as list are supported. ' ),
56
+ !$ member instanceof ParameterAccess && ($ member instanceof MemberList || $ member instanceof ValueAccess),
57
+ $ member instanceof MemberOrderedMap => throw new InvalidArgument ('An instance of " ' .$ member ::class.'" can not be a member of " ' .self ::class.'". ' ),
57
58
is_iterable ($ member ) => InnerList::new (...$ member ),
58
59
default => Item::new ($ member ),
59
60
};
Original file line number Diff line number Diff line change @@ -46,8 +46,8 @@ private static function filterMember(mixed $member): object
46
46
{
47
47
return match (true ) {
48
48
$ member instanceof ValueAccess && $ member instanceof ParameterAccess => $ member ,
49
- ! $ member instanceof StructuredField => Item:: new ( $ member ),
50
- default => throw new InvalidArgument ( ' Expecting a " ' .ValueAccess::class. ' " instance; received a " ' . $ member::class. ' " instead. ' ),
49
+ $ member instanceof StructuredField => throw new InvalidArgument ( ' An instance of " ' . $ member::class. ' " can not be a member of " ' . self ::class. ' ". ' ),
50
+ default => Item:: new ( $ member ),
51
51
};
52
52
}
53
53
Original file line number Diff line number Diff line change @@ -47,7 +47,8 @@ private static function filterMember(mixed $member): object
47
47
{
48
48
return match (true ) {
49
49
$ member instanceof ParameterAccess && ($ member instanceof MemberList || $ member instanceof ValueAccess) => $ member ,
50
- $ member instanceof MemberOrderedMap => throw new InvalidArgument ('Only structured fields as list are supported. ' ),
50
+ !$ member instanceof ParameterAccess && ($ member instanceof MemberList || $ member instanceof ValueAccess),
51
+ $ member instanceof MemberOrderedMap => throw new InvalidArgument ('An instance of " ' .$ member ::class.'" can not be a member of " ' .self ::class.'". ' ),
51
52
is_iterable ($ member ) => InnerList::new (...$ member ),
52
53
default => Item::new ($ member ),
53
54
};
Original file line number Diff line number Diff line change @@ -50,10 +50,13 @@ private function __construct(iterable $members = [])
50
50
*/
51
51
private static function filterMember (mixed $ member ): object
52
52
{
53
+ $ isItem = $ member instanceof ValueAccess && $ member instanceof ParameterAccess;
54
+
53
55
return match (true ) {
54
- $ member instanceof ValueAccess && $ member instanceof ParameterAccess && $ member ->parameters ()->hasNoMembers () => $ member ,
55
- !$ member instanceof StructuredField => Item::new ($ member ),
56
- default => throw new InvalidArgument ('Parameters instances can only contain bare items. ' ),
56
+ $ isItem && $ member ->parameters ()->hasNoMembers () => $ member ,
57
+ $ isItem && $ member ->parameters ()->hasMembers () => throw new InvalidArgument ('The instance of " ' .$ member ::class.'" is not a Bare Item instance. ' ),
58
+ $ member instanceof StructuredField => throw new InvalidArgument ('An instance of " ' .$ member ::class.'" can not be a member of " ' .self ::class.'". ' ),
59
+ default => Item::new ($ member ),
57
60
};
58
61
}
59
62
Original file line number Diff line number Diff line change @@ -15,7 +15,7 @@ final class TypeTest extends TestCase
15
15
#[Test]
16
16
public function it_will_throw_if_the_type_is_no_supported (): void
17
17
{
18
- $ this ->expectException (SyntaxError ::class);
18
+ $ this ->expectException (InvalidArgument ::class);
19
19
20
20
Type::fromValue ([]);
21
21
}
Original file line number Diff line number Diff line change @@ -31,7 +31,7 @@ public function __construct(mixed $value)
31
31
is_float ($ value ) => [self ::filterDecimal ($ value ), Type::Decimal],
32
32
is_bool ($ value ) => [$ value , Type::Boolean],
33
33
is_string ($ value ) => [self ::filterString ($ value ), Type::String],
34
- default => throw new SyntaxError ('The type " ' .(is_object ($ value ) ? $ value ::class : gettype ($ value )).'" is not supported. ' )
34
+ default => throw new InvalidArgument ('The type " ' .(is_object ($ value ) ? $ value ::class : gettype ($ value )).'" is not supported. ' )
35
35
};
36
36
}
37
37
You can’t perform that action at this time.
0 commit comments