enum & allOf
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
Línea de trabajo
Comienza por typify-impl/src/defaults.rs alrededor de la línea 320 y sigue después los frames de convert_typed_enum y convert_schema_object en el backtrace indicado. Reproduce la generación usando el esquema de Discord OpenAPI enlazado y la conversión sciguy16/openapi31to30. Se considera terminado cuando enum combinado con allOf ya no alcanza el panic unreachable y el esquema se procesa de forma coherente.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
https://github.com/discord/discord-api-spec/blob/main/specs/openapi.json contains a lot of schemas like this.
RoleSelectDefaultValueResponse:
type: object
properties:
type:
type: string
enum:
- role
allOf:
- $ref: '#/components/schemas/SnowflakeSelectDefaultValueTypes'
id:
$ref: '#/components/schemas/SnowflakeType'
required:
- type
- id
...
SnowflakeSelectDefaultValueTypes:
type: string
oneOf:
- title: USER
const: user
- title: ROLE
const: role
- title: CHANNEL
const: channel
Note I am using https://github.com/sciguy16/openapi31to30 to make it compatible with progenitor/typify
I checked the openapi doc using https://github.com/daveshanley/vacuum , and while there were a lot of warnings, they didnt appear to relate to the above https://github.com/discord/discord-api-spec/issues/41
I don't see any prohibition on using enum & allOf in this way...?
As I understand it, the addition of allOf SnowflakeSelectDefaultValueTypes is redundant, as SnowflakeSelectDefaultValueTypes is a superset of the enum, and could be simply discarded.
typify on main fails at https://github.com/oxidecomputer/typify/blob/7d61436/typify-impl/src/defaults.rs#L320
thread 'main' panicked at /Users/jayvdb/rust/typify/typify-impl/src/defaults.rs:320:47:
internal error: entered unreachable code
stack backtrace:
0: __rustc::rust_begin_unwind
at /rustc/6b00bc3880198600130e1cf62b8f8a93494488cc/library/std/src/panicking.rs:697:5
1: core::panicking::panic_fmt
at /rustc/6b00bc3880198600130e1cf62b8f8a93494488cc/library/core/src/panicking.rs:75:14
2: core::panicking::panic
at /rustc/6b00bc3880198600130e1cf62b8f8a93494488cc/library/core/src/panicking.rs:145:5
3: typify_impl::defaults::<impl typify_impl::type_entry::TypeEntry>::validate_value
4: typify_impl::convert::<impl typify_impl::TypeSpace>::convert_typed_enum::{{closure}}
5: core::iter::traits::iterator::Iterator::try_for_each::call::{{closure}}
6: core::iter::traits::iterator::Iterator::try_fold
7: core::iter::traits::iterator::Iterator::try_for_each
8: typify_impl::convert::<impl typify_impl::TypeSpace>::convert_typed_enum
9: typify_impl::convert::<impl typify_impl::TypeSpace>::convert_schema_object
10: typify_impl::convert::<impl typify_impl::TypeSpace>::convert_schema
11: typify_impl::TypeSpace::id_for_schema
12: typify_impl::structs::<impl typify_impl::TypeSpace>::struct_property
13: typify_impl::structs::<impl typify_impl::TypeSpace>::struct_members::{{closure}}
14: core::iter::adapters::filter_map::filter_map_try_fold::{{closure}}
15: core::ops::function::impls::<impl core::ops::function::FnMut<A> for &mut F>::call_mut
16: core::iter::traits::iterator::Iterator::try_fold
17: <core::iter::adapters::chain::Chain<A,B> as core::iter::traits::iterator::Iterator>::try_fold
18: <core::iter::adapters::filter_map::FilterMap<I,F> as core::iter::traits::iterator::Iterator>::try_fold
19: <core::iter::adapters::GenericShunt<I,R> as core::iter::traits::iterator::Iterator>::try_fold
20: <core::iter::adapters::GenericShunt<I,R> as core::iter::traits::iterator::Iterator>::next
21: alloc::vec::Vec<T,A>::extend_desugared
22: <alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<T,I>>::spec_extend
23: <alloc::vec::Vec<T> as alloc::vec::spec_from_iter_nested::SpecFromIterNested<T,I>>::from_iter
24: <alloc::vec::Vec<T> as alloc::vec::spec_from_iter::SpecFromIter<T,I>>::from_iter
25: <alloc::vec::Vec<T> as core::iter::traits::collect::FromIterator<T>>::from_iter
26: core::iter::traits::iterator::Iterator::collect
27: <core::result::Result<V,E> as core::iter::traits::collect::FromIterator<core::result::Result<A,E>>>::from_iter::{{closure}}
28: core::iter::adapters::try_process
29: <core::result::Result<V,E> as core::iter::traits::collect::FromIterator<core::result::Result<A,E>>>::from_iter
30: core::iter::traits::iterator::Iterator::collect
31: typify_impl::structs::<impl typify_impl::TypeSpace>::struct_members
32: typify_impl::convert::<impl typify_impl::TypeSpace>::convert_object
33: typify_impl::convert::<impl typify_impl::TypeSpace>::convert_schema_object
34: typify_impl::convert::<impl typify_impl::TypeSpace>::convert_schema
35: typify_impl::TypeSpace::convert_ref_type
36: typify_impl::TypeSpace::add_ref_types_impl
37: typify_impl::TypeSpace::add_ref_types
38: progenitor_impl::Generator::generate_tokens
- Lenguaje dominante
- Rust
- Estrellas
- 898
- Forks
- 114
- Merge medio
- 13 h 19 min
- PR fusionados (30 d)
- 16
Preparar el entorno
Aún no hemos revisado los archivos de configuración de este proyecto. Empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de oxidecomputer/typify
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
oxidecomputer/typify#1077 · 1 comentario ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 55/100
oxidecomputer/typify#1075 · 1 comentario ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 50/100
oxidecomputer/typify#1060 ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 48/100
oxidecomputer/typify#1059 ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 65/100
oxidecomputer/typify#1022 · 1 comentario ·
Todos los issues de oxidecomputer/typify
Issues similares
-
`sysknife history --help` says --since takes ISO-8601, and the parser refuses offsets and bare datesAbiertobug easy good first issue help wanted
Dificultad 1/5 1-3 horas Aptitud para principiantes 94/100
lacs-project/sysknife#519 ·
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 1/5 Menos de una hora Aptitud para principiantes 72/100
-
area:breg bug criticality:p3 triage:needs-implementation
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
registrystack/registry-stack#1699 ·
Los mantenedores suelen responder en 1 día
-
documentation
Dificultad 1/5 1-3 horas Aptitud para principiantes 84/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
lbjlaq/Antigravity-Manager#3539 · 2 comentarios ·
Los mantenedores suelen responder en 1 día