@@ -181,9 +181,9 @@ impl Struct {
181181 fn from_json_value( value: #serde_json_path:: Value ) -> :: std:: result:: Result <Self , #parse_object_error> {
182182 let api_version = value
183183 . get( "apiVersion" )
184- . ok_or_else( || #parse_object_error:: FieldNotPresent ) ?
184+ . ok_or_else( || #parse_object_error:: FieldMissing { field : "apiVersion" . to_string ( ) } ) ?
185185 . as_str( )
186- . ok_or_else( || #parse_object_error:: FieldNotStr ) ?;
186+ . ok_or_else( || #parse_object_error:: FieldNotStr { field : "apiVersion" . to_string ( ) } ) ?;
187187
188188 let object = match api_version {
189189 #( #api_versions => {
@@ -321,6 +321,7 @@ impl Struct {
321321 let versioned_path = & * kubernetes_arguments. crates . versioned ;
322322 let kube_core_path = & * kubernetes_arguments. crates . kube_core ;
323323
324+ let parse_object_error = quote ! { #versioned_path:: ParseObjectError } ;
324325 let convert_object_error = quote ! { #versioned_path:: ConvertObjectError } ;
325326
326327 // Generate conversion paths and the match arms for these paths
@@ -431,6 +432,24 @@ impl Struct {
431432 let mut converted_objects = :: std:: vec:: Vec :: with_capacity( objects. len( ) ) ;
432433
433434 for object in objects {
435+ let object_kind = object
436+ . get( "kind" )
437+ . ok_or_else( || #convert_object_error:: Parse {
438+ source: #parse_object_error:: FieldMissing { field: "kind" . to_string( ) }
439+ } ) ?
440+ . as_str( )
441+ . ok_or_else( || #convert_object_error:: Parse {
442+ source: #parse_object_error:: FieldNotStr { field: "kind" . to_string( ) }
443+ } ) ?;
444+ if object_kind != stringify!( #struct_ident) {
445+ return Err ( #convert_object_error:: Parse {
446+ source: #parse_object_error:: WrongObjectKind {
447+ kind: object_kind. to_string( ) ,
448+ supported_kind: stringify!( #struct_ident) . to_string( ) ,
449+ }
450+ } )
451+ }
452+
434453 // This clone is required because in the noop case we move the object into
435454 // the converted objects vec.
436455 let current_object = Self :: from_json_value( object. clone( ) )
0 commit comments