@@ -10,8 +10,8 @@ use proc_macro_error2::emit_error;
10
10
use quote:: { quote, quote_spanned, ToTokens , TokenStreamExt } ;
11
11
use syn:: parse:: { Parse , ParseStream , Result } ;
12
12
use syn:: spanned:: Spanned ;
13
- use syn:: { braced, bracketed, parenthesized, parse_quote , token} ;
14
- use syn:: { Expr , Ident , LitStr , Member , Token , Type } ;
13
+ use syn:: { braced, bracketed, parenthesized, token} ;
14
+ use syn:: { Expr , Ident , LitStr , Member , Token } ;
15
15
16
16
#[ allow( non_camel_case_types) ]
17
17
mod kw {
@@ -21,24 +21,12 @@ mod kw {
21
21
custom_keyword ! ( pack) ;
22
22
custom_keyword ! ( column) ;
23
23
custom_keyword ! ( row) ;
24
- custom_keyword ! ( right) ;
25
- custom_keyword ! ( left) ;
26
- custom_keyword ! ( down) ;
27
- custom_keyword ! ( up) ;
28
- custom_keyword ! ( center) ;
29
- custom_keyword ! ( stretch) ;
30
24
custom_keyword ! ( frame) ;
31
25
custom_keyword ! ( list) ;
32
26
custom_keyword ! ( grid) ;
33
- custom_keyword ! ( default ) ;
34
- custom_keyword ! ( top) ;
35
- custom_keyword ! ( bottom) ;
36
27
custom_keyword ! ( aligned_column) ;
37
28
custom_keyword ! ( aligned_row) ;
38
29
custom_keyword ! ( float) ;
39
- custom_keyword ! ( px) ;
40
- custom_keyword ! ( em) ;
41
- custom_keyword ! ( map_any) ;
42
30
custom_keyword ! ( with_direction) ;
43
31
custom_keyword ! ( with_style) ;
44
32
custom_keyword ! ( with_background) ;
@@ -48,15 +36,14 @@ mod kw {
48
36
pub struct StorageFields {
49
37
pub ty_toks : Toks ,
50
38
pub def_toks : Toks ,
51
- pub used_data_ty : bool ,
52
39
}
53
40
54
41
#[ derive( Debug ) ]
55
42
pub struct Tree ( Layout ) ;
56
43
impl Tree {
57
- pub fn storage_fields ( & self , children : & mut Vec < Child > , data_ty : & Type ) -> StorageFields {
44
+ pub fn storage_fields ( & self , children : & mut Vec < Child > ) -> StorageFields {
58
45
let mut fields = StorageFields :: default ( ) ;
59
- self . 0 . append_fields ( & mut fields, children, data_ty ) ;
46
+ self . 0 . append_fields ( & mut fields, children) ;
60
47
fields
61
48
}
62
49
@@ -138,7 +125,6 @@ enum Layout {
138
125
Float ( LayoutList < ( ) > ) ,
139
126
Grid ( Ident , GridDimensions , LayoutList < CellInfo > ) ,
140
127
Label ( Ident , LitStr ) ,
141
- MapAny ( Box < Layout > , MapAny ) ,
142
128
}
143
129
144
130
#[ derive( Debug ) ]
@@ -148,6 +134,7 @@ struct ExprMember {
148
134
member : Member ,
149
135
}
150
136
137
+ #[ allow( unused) ]
151
138
#[ derive( Debug ) ]
152
139
enum Direction {
153
140
Left ,
@@ -192,20 +179,17 @@ impl Layout {
192
179
193
180
loop {
194
181
if let Ok ( dot_token) = input. parse :: < Token ! [ . ] > ( ) {
195
- if input. peek ( kw:: map_any) {
196
- let map_any = MapAny :: parse ( dot_token, input) ?;
197
- layout = Layout :: MapAny ( Box :: new ( layout) , map_any) ;
198
- } else if input. peek ( kw:: align) {
182
+ if input. peek ( kw:: align) {
199
183
let align = Align :: parse ( dot_token, input) ?;
200
184
layout = Layout :: Align ( Box :: new ( layout) , align) ;
201
185
} else if input. peek ( kw:: pack) {
202
186
let pack = Pack :: parse ( dot_token, input, core_gen) ?;
203
187
layout = Layout :: Pack ( Box :: new ( layout) , pack) ;
204
188
} else if let Ok ( ident) = input. parse :: < Ident > ( ) {
205
189
let note_msg = if matches ! ( & layout, & Layout :: Frame ( _, _, _, _) ) {
206
- "supported methods on layout objects: `map_any`, ` align`, `pack`, `with_style`, `with_background`"
190
+ "supported methods on layout objects: `align`, `pack`, `with_style`, `with_background`"
207
191
} else {
208
- "supported methods on layout objects: `map_any`, ` align`, `pack`"
192
+ "supported methods on layout objects: `align`, `pack`"
209
193
} ;
210
194
emit_error ! (
211
195
ident, "method not supported here" ;
@@ -484,24 +468,7 @@ impl ToTokens for ExprMember {
484
468
485
469
impl Parse for Direction {
486
470
fn parse ( input : ParseStream ) -> Result < Self > {
487
- let lookahead = input. lookahead1 ( ) ;
488
- if lookahead. peek ( kw:: right) {
489
- let _: kw:: right = input. parse ( ) ?;
490
- Ok ( Direction :: Right )
491
- } else if lookahead. peek ( kw:: down) {
492
- let _: kw:: down = input. parse ( ) ?;
493
- Ok ( Direction :: Down )
494
- } else if lookahead. peek ( kw:: left) {
495
- let _: kw:: left = input. parse ( ) ?;
496
- Ok ( Direction :: Left )
497
- } else if lookahead. peek ( kw:: up) {
498
- let _: kw:: up = input. parse ( ) ?;
499
- Ok ( Direction :: Up )
500
- } else if lookahead. peek ( Token ! [ self ] ) {
501
- Ok ( Direction :: Expr ( input. parse ( ) ?) )
502
- } else {
503
- Err ( lookahead. error ( ) )
504
- }
471
+ Ok ( Direction :: Expr ( input. parse ( ) ?) )
505
472
}
506
473
}
507
474
@@ -524,24 +491,6 @@ impl ToTokens for Direction {
524
491
}
525
492
}
526
493
527
- #[ derive( Debug ) ]
528
- #[ allow( unused) ]
529
- struct MapAny {
530
- pub dot_token : Token ! [ . ] ,
531
- pub kw : kw:: map_any ,
532
- pub paren_token : token:: Paren ,
533
- }
534
- impl MapAny {
535
- fn parse ( dot_token : Token ! [ . ] , input : ParseStream ) -> Result < Self > {
536
- let _content;
537
- Ok ( MapAny {
538
- dot_token,
539
- kw : input. parse ( ) ?,
540
- paren_token : parenthesized ! ( _content in input) ,
541
- } )
542
- }
543
- }
544
-
545
494
#[ derive( Debug ) ]
546
495
#[ allow( unused) ]
547
496
struct Align {
@@ -612,10 +561,10 @@ impl Pack {
612
561
}
613
562
614
563
impl Layout {
615
- fn append_fields ( & self , fields : & mut StorageFields , children : & mut Vec < Child > , data_ty : & Type ) {
564
+ fn append_fields ( & self , fields : & mut StorageFields , children : & mut Vec < Child > ) {
616
565
match self {
617
566
Layout :: Align ( layout, _) => {
618
- layout. append_fields ( fields, children, data_ty ) ;
567
+ layout. append_fields ( fields, children) ;
619
568
}
620
569
Layout :: Single ( _) => ( ) ,
621
570
Layout :: Pack ( layout, pack) => {
@@ -626,18 +575,17 @@ impl Layout {
626
575
fields
627
576
. def_toks
628
577
. append_all ( quote ! { #stor: Default :: default ( ) , } ) ;
629
- layout. append_fields ( fields, children, data_ty ) ;
578
+ layout. append_fields ( fields, children) ;
630
579
}
631
580
Layout :: Widget ( ident, expr) => {
632
581
children. push ( Child :: new_core ( ident. clone ( ) . into ( ) ) ) ;
633
582
fields
634
583
. ty_toks
635
- . append_all ( quote ! { #ident: Box <dyn :: kas:: Widget <Data = #data_ty >>, } ) ;
584
+ . append_all ( quote ! { #ident: Box <dyn :: kas:: Widget <Data = ( ) >>, } ) ;
636
585
let span = expr. span ( ) ;
637
586
fields
638
587
. def_toks
639
588
. append_all ( quote_spanned ! { span=> #ident: Box :: new( #expr) , } ) ;
640
- fields. used_data_ty = true ;
641
589
}
642
590
Layout :: Frame ( stor, layout, _, _) => {
643
591
fields
@@ -646,7 +594,7 @@ impl Layout {
646
594
fields
647
595
. def_toks
648
596
. append_all ( quote ! { #stor: Default :: default ( ) , } ) ;
649
- layout. append_fields ( fields, children, data_ty ) ;
597
+ layout. append_fields ( fields, children) ;
650
598
}
651
599
Layout :: List ( stor, _, LayoutList ( list) ) => {
652
600
fields
@@ -660,12 +608,12 @@ impl Layout {
660
608
quote ! { #stor: :: kas:: layout:: FixedRowStorage <#len>, }
661
609
} ) ;
662
610
for item in list {
663
- item. layout . append_fields ( fields, children, data_ty ) ;
611
+ item. layout . append_fields ( fields, children) ;
664
612
}
665
613
}
666
614
Layout :: Float ( LayoutList ( list) ) => {
667
615
for item in list {
668
- item. layout . append_fields ( fields, children, data_ty ) ;
616
+ item. layout . append_fields ( fields, children) ;
669
617
}
670
618
}
671
619
Layout :: Grid ( stor, dim, LayoutList ( list) ) => {
@@ -678,42 +626,18 @@ impl Layout {
678
626
. append_all ( quote ! { #stor: Default :: default ( ) , } ) ;
679
627
680
628
for item in list {
681
- item. layout . append_fields ( fields, children, data_ty ) ;
629
+ item. layout . append_fields ( fields, children) ;
682
630
}
683
631
}
684
632
Layout :: Label ( ident, text) => {
685
633
children. push ( Child :: new_core ( ident. clone ( ) . into ( ) ) ) ;
686
634
let span = text. span ( ) ;
687
- if * data_ty == syn:: parse_quote! { ( ) } {
688
- fields
689
- . ty_toks
690
- . append_all ( quote ! { #ident: :: kas:: hidden:: StrLabel , } ) ;
691
- fields. def_toks . append_all (
692
- quote_spanned ! { span=> #ident: :: kas:: hidden:: StrLabel :: new( #text) , } ,
693
- ) ;
694
- } else {
695
- fields. ty_toks . append_all (
696
- quote ! { #ident: :: kas:: hidden:: MapAny <#data_ty, :: kas:: hidden:: StrLabel >, } ,
697
- ) ;
698
- fields. def_toks . append_all (
699
- quote_spanned ! { span=> #ident: :: kas:: hidden:: MapAny :: new( :: kas:: hidden:: StrLabel :: new( #text) ) , } ,
700
- ) ;
701
- fields. used_data_ty = true ;
702
- }
703
- }
704
- Layout :: MapAny ( layout, map_any) => {
705
- let start = children. len ( ) ;
706
- layout. append_fields ( fields, children, & parse_quote ! { ( ) } ) ;
707
- let map_expr: Expr = parse_quote ! { & ( ) } ;
708
- for child in & mut children[ start..] {
709
- if let Some ( ref expr) = child. data_binding {
710
- if * expr != map_expr {
711
- emit_error ! ( map_any. kw, "invalid data type mapping" )
712
- }
713
- } else {
714
- child. data_binding = Some ( map_expr. clone ( ) ) ;
715
- }
716
- }
635
+ fields
636
+ . ty_toks
637
+ . append_all ( quote ! { #ident: :: kas:: hidden:: StrLabel , } ) ;
638
+ fields. def_toks . append_all (
639
+ quote_spanned ! { span=> #ident: :: kas:: hidden:: StrLabel :: new( #text) , } ,
640
+ ) ;
717
641
}
718
642
}
719
643
}
@@ -764,7 +688,6 @@ impl Layout {
764
688
Layout :: Label ( stor, _) => {
765
689
quote ! { layout:: Visitor :: single( & mut #core_path. #stor) }
766
690
}
767
- Layout :: MapAny ( layout, _) => return layout. generate ( core_path) ,
768
691
} )
769
692
}
770
693
@@ -777,10 +700,9 @@ impl Layout {
777
700
output : & mut Vec < usize > ,
778
701
) -> std:: result:: Result < ( ) , ( Span , & ' static str ) > {
779
702
match self {
780
- Layout :: Align ( layout, _)
781
- | Layout :: Pack ( layout, _)
782
- | Layout :: Frame ( _, layout, _, _)
783
- | Layout :: MapAny ( layout, _) => layout. nav_next ( children, output) ,
703
+ Layout :: Align ( layout, _) | Layout :: Pack ( layout, _) | Layout :: Frame ( _, layout, _, _) => {
704
+ layout. nav_next ( children, output)
705
+ }
784
706
Layout :: Single ( m) => {
785
707
for ( i, child) in children. enumerate ( ) {
786
708
if let ChildIdent :: Field ( ref ident) = child. ident {
0 commit comments