@@ -968,8 +968,6 @@ macro_rules! try_or_def {
968968 } ;
969969}
970970
971- type ParallelCachePrimingNumThreads = u8 ;
972-
973971#[ derive( Debug , Clone , Eq , PartialEq ) ]
974972pub enum LinkedProject {
975973 ProjectManifest ( ProjectManifest ) ,
@@ -2205,51 +2203,6 @@ macro_rules! create_bool_or_string_serde {
22052203create_bool_or_string_serde ! ( true_or_always<true , "always" >) ;
22062204create_bool_or_string_serde ! ( false_or_never<false , "never" >) ;
22072205
2208- macro_rules! named_unit_variant {
2209- ( $variant: ident) => {
2210- pub ( super ) mod $variant {
2211- pub ( in super :: super ) fn deserialize<' de, D >( deserializer: D ) -> Result <( ) , D :: Error >
2212- where
2213- D : serde:: Deserializer <' de>,
2214- {
2215- struct V ;
2216- impl <' de> serde:: de:: Visitor <' de> for V {
2217- type Value = ( ) ;
2218- fn expecting( & self , f: & mut std:: fmt:: Formatter <' _>) -> std:: fmt:: Result {
2219- f. write_str( concat!( "\" " , stringify!( $variant) , "\" " ) )
2220- }
2221- fn visit_str<E : serde:: de:: Error >( self , value: & str ) -> Result <Self :: Value , E > {
2222- if value == stringify!( $variant) {
2223- Ok ( ( ) )
2224- } else {
2225- Err ( E :: invalid_value( serde:: de:: Unexpected :: Str ( value) , & self ) )
2226- }
2227- }
2228- }
2229- deserializer. deserialize_str( V )
2230- }
2231- pub ( in super :: super ) fn serialize<S >( serializer: S ) -> Result <S :: Ok , S :: Error >
2232- where
2233- S : serde:: Serializer ,
2234- {
2235- serializer. serialize_str( stringify!( $variant) )
2236- }
2237- }
2238- } ;
2239- }
2240-
2241- mod unit_v {
2242- named_unit_variant ! ( all) ;
2243- named_unit_variant ! ( skip_trivial) ;
2244- named_unit_variant ! ( mutable) ;
2245- named_unit_variant ! ( reborrow) ;
2246- named_unit_variant ! ( fieldless) ;
2247- named_unit_variant ! ( with_block) ;
2248- named_unit_variant ! ( decimal) ;
2249- named_unit_variant ! ( hexadecimal) ;
2250- named_unit_variant ! ( both) ;
2251- }
2252-
22532206#[ derive( Serialize , Deserialize , Debug , Clone , Copy , PartialEq ) ]
22542207#[ serde( rename_all = "snake_case" ) ]
22552208#[ derive( Default ) ]
@@ -2364,10 +2317,10 @@ pub(crate) enum CallableCompletionDef {
23642317}
23652318
23662319#[ derive( Serialize , Deserialize , Debug , Clone ) ]
2367- #[ serde( untagged ) ]
2320+ #[ serde( rename_all = "snake_case" ) ]
23682321enum CargoFeaturesDef {
2369- #[ serde( with = "unit_v::all" ) ]
23702322 All ,
2323+ #[ serde( untagged) ]
23712324 Selected ( Vec < String > ) ,
23722325}
23732326
@@ -2389,25 +2342,27 @@ enum InvocationLocation {
23892342}
23902343
23912344#[ derive( Serialize , Deserialize , Debug , Clone ) ]
2392- #[ serde( untagged ) ]
2345+ #[ serde( rename_all = "snake_case" ) ]
23932346enum LifetimeElisionDef {
2347+ SkipTrivial ,
23942348 #[ serde( with = "true_or_always" ) ]
2349+ #[ serde( untagged) ]
23952350 Always ,
23962351 #[ serde( with = "false_or_never" ) ]
2352+ #[ serde( untagged) ]
23972353 Never ,
2398- #[ serde( with = "unit_v::skip_trivial" ) ]
2399- SkipTrivial ,
24002354}
24012355
24022356#[ derive( Serialize , Deserialize , Debug , Clone ) ]
2403- #[ serde( untagged ) ]
2357+ #[ serde( rename_all = "snake_case" ) ]
24042358enum ClosureReturnTypeHintsDef {
2359+ WithBlock ,
24052360 #[ serde( with = "true_or_always" ) ]
2361+ #[ serde( untagged) ]
24062362 Always ,
24072363 #[ serde( with = "false_or_never" ) ]
2364+ #[ serde( untagged) ]
24082365 Never ,
2409- #[ serde( with = "unit_v::with_block" ) ]
2410- WithBlock ,
24112366}
24122367
24132368#[ derive( Serialize , Deserialize , Debug , Clone ) ]
@@ -2420,36 +2375,39 @@ enum ClosureStyle {
24202375}
24212376
24222377#[ derive( Serialize , Deserialize , Debug , Clone ) ]
2423- #[ serde( untagged ) ]
2378+ #[ serde( rename_all = "snake_case" ) ]
24242379enum ReborrowHintsDef {
2380+ Mutable ,
24252381 #[ serde( with = "true_or_always" ) ]
2382+ #[ serde( untagged) ]
24262383 Always ,
24272384 #[ serde( with = "false_or_never" ) ]
2385+ #[ serde( untagged) ]
24282386 Never ,
2429- #[ serde( with = "unit_v::mutable" ) ]
2430- Mutable ,
24312387}
24322388
24332389#[ derive( Serialize , Deserialize , Debug , Clone ) ]
2434- #[ serde( untagged ) ]
2390+ #[ serde( rename_all = "snake_case" ) ]
24352391enum AdjustmentHintsDef {
2392+ Reborrow ,
24362393 #[ serde( with = "true_or_always" ) ]
2394+ #[ serde( untagged) ]
24372395 Always ,
24382396 #[ serde( with = "false_or_never" ) ]
2397+ #[ serde( untagged) ]
24392398 Never ,
2440- #[ serde( with = "unit_v::reborrow" ) ]
2441- Reborrow ,
24422399}
24432400
24442401#[ derive( Serialize , Deserialize , Debug , Clone ) ]
2445- #[ serde( untagged ) ]
2402+ #[ serde( rename_all = "snake_case" ) ]
24462403enum DiscriminantHintsDef {
2404+ Fieldless ,
24472405 #[ serde( with = "true_or_always" ) ]
2406+ #[ serde( untagged) ]
24482407 Always ,
24492408 #[ serde( with = "false_or_never" ) ]
2409+ #[ serde( untagged) ]
24502410 Never ,
2451- #[ serde( with = "unit_v::fieldless" ) ]
2452- Fieldless ,
24532411}
24542412
24552413#[ derive( Serialize , Deserialize , Debug , Clone ) ]
@@ -2473,9 +2431,11 @@ enum FilesWatcherDef {
24732431#[ serde( rename_all = "snake_case" ) ]
24742432enum ImportPrefixDef {
24752433 Plain ,
2476- #[ serde( alias = "self" ) ]
2434+ #[ serde( rename = "self" ) ]
2435+ #[ serde( alias = "by_self" ) ]
24772436 BySelf ,
2478- #[ serde( alias = "crate" ) ]
2437+ #[ serde( rename = "crate" ) ]
2438+ #[ serde( alias = "by_crate" ) ]
24792439 ByCrate ,
24802440}
24812441
@@ -2502,13 +2462,9 @@ enum WorkspaceSymbolSearchKindDef {
25022462
25032463#[ derive( Serialize , Deserialize , Debug , Copy , Clone , PartialEq ) ]
25042464#[ serde( rename_all = "snake_case" ) ]
2505- #[ serde( untagged) ]
25062465enum MemoryLayoutHoverRenderKindDef {
2507- #[ serde( with = "unit_v::decimal" ) ]
25082466 Decimal ,
2509- #[ serde( with = "unit_v::hexadecimal" ) ]
25102467 Hexadecimal ,
2511- #[ serde( with = "unit_v::both" ) ]
25122468 Both ,
25132469}
25142470
@@ -2533,10 +2489,10 @@ pub enum TargetDirectory {
25332489
25342490#[ derive( Serialize , Deserialize , Debug , Clone , PartialEq ) ]
25352491#[ serde( rename_all = "snake_case" ) ]
2536- #[ serde( untagged) ]
25372492pub enum NumThreads {
25382493 Physical ,
25392494 Logical ,
2495+ #[ serde( untagged) ]
25402496 Concrete ( usize ) ,
25412497}
25422498
@@ -2792,6 +2748,10 @@ impl FullConfigInput {
27922748 ClientConfigInput :: schema_fields ( & mut fields) ;
27932749 fields. sort_by_key ( |& ( x, ..) | x) ;
27942750 fields
2751+ . iter ( )
2752+ . tuple_windows ( )
2753+ . for_each ( |( a, b) | assert ! ( a. 0 != b. 0 , "{a:?} duplicate field" ) ) ;
2754+ fields
27952755 }
27962756
27972757 fn json_schema ( ) -> serde_json:: Value {
@@ -3050,11 +3010,6 @@ fn field_props(field: &str, ty: &str, doc: &[&str], default: &str) -> serde_json
30503010 "Search for all symbols kinds."
30513011 ] ,
30523012 } ,
3053- "ParallelCachePrimingNumThreads" => set ! {
3054- "type" : "number" ,
3055- "minimum" : 0 ,
3056- "maximum" : 255
3057- } ,
30583013 "LifetimeElisionDef" => set ! {
30593014 "type" : "string" ,
30603015 "enum" : [
@@ -3276,13 +3231,32 @@ fn field_props(field: &str, ty: &str, doc: &[&str], default: &str) -> serde_json
32763231 } ,
32773232 ] ,
32783233 } ,
3234+ "NumThreads" => set ! {
3235+ "anyOf" : [
3236+ {
3237+ "type" : "number" ,
3238+ "minimum" : 0 ,
3239+ "maximum" : 255
3240+ } ,
3241+ {
3242+ "type" : "string" ,
3243+ "enum" : [ "physical" , "logical" , ] ,
3244+ "enumDescriptions" : [
3245+ "Use the number of physical cores" ,
3246+ "Use the number of logical cores" ,
3247+ ] ,
3248+ } ,
3249+ ] ,
3250+ } ,
32793251 "Option<NumThreads>" => set ! {
32803252 "anyOf" : [
32813253 {
32823254 "type" : "null"
32833255 } ,
32843256 {
3285- "type" : "number"
3257+ "type" : "number" ,
3258+ "minimum" : 0 ,
3259+ "maximum" : 255
32863260 } ,
32873261 {
32883262 "type" : "string" ,
@@ -3294,7 +3268,7 @@ fn field_props(field: &str, ty: &str, doc: &[&str], default: &str) -> serde_json
32943268 } ,
32953269 ] ,
32963270 } ,
3297- _ => panic ! ( "missing entry for {ty}: {default}" ) ,
3271+ _ => panic ! ( "missing entry for {ty}: {default} (field {field}) " ) ,
32983272 }
32993273
33003274 map. into ( )
@@ -3375,7 +3349,7 @@ mod tests {
33753349 . trim_start_matches ( '[' )
33763350 . trim_end_matches ( ']' )
33773351 . replace ( " " , " " )
3378- . replace ( '\n' , "\n " )
3352+ . replace ( '\n' , "\n " )
33793353 . trim_start_matches ( '\n' )
33803354 . trim_end ( )
33813355 . to_owned ( ) ;
0 commit comments