2
2
use rustc:: hir;
3
3
use rustc_target:: spec:: abi:: { self , Abi } ;
4
4
use std:: rc:: Rc ;
5
+ use std:: str;
5
6
use syntax:: ast:: * ;
6
7
use syntax:: attr:: mk_attr_inner;
7
- use syntax:: parse:: token:: { self , DelimToken , Token } ;
8
+ use syntax:: parse:: token:: { self , DelimToken , TokenKind , Token } ;
8
9
use syntax:: ptr:: P ;
9
10
use syntax:: source_map:: { dummy_spanned, Span , Spanned , DUMMY_SP } ;
10
- use syntax:: symbol:: keywords;
11
11
use syntax:: tokenstream:: { TokenStream , TokenStreamBuilder , TokenTree } ;
12
12
use syntax:: ThinVec ;
13
13
@@ -167,6 +167,16 @@ impl<'a> Make<LitIntType> for UintTy {
167
167
}
168
168
}
169
169
170
+ impl Make < Lit > for hir:: Lit {
171
+ fn make ( self , _mk : & Builder ) -> Lit {
172
+ Lit {
173
+ token : self . node . to_lit_token ( ) ,
174
+ node : self . node ,
175
+ span : self . span ,
176
+ }
177
+ }
178
+ }
179
+
170
180
impl < I : Make < Ident > > Make < PathSegment > for I {
171
181
fn make ( self , mk : & Builder ) -> PathSegment {
172
182
PathSegment {
@@ -200,7 +210,7 @@ impl Make<TokenStream> for Vec<TokenTree> {
200
210
201
211
impl Make < TokenTree > for Token {
202
212
fn make ( self , _mk : & Builder ) -> TokenTree {
203
- TokenTree :: Token ( DUMMY_SP , self )
213
+ TokenTree :: Token ( self )
204
214
}
205
215
}
206
216
@@ -357,8 +367,11 @@ impl Builder {
357
367
style : AttrStyle :: Outer ,
358
368
path : key,
359
369
tokens : vec ! [
360
- Token :: Eq ,
361
- Token :: Literal ( token:: Lit :: Str_ ( value. into_symbol( ) ) , None ) ,
370
+ TokenTree :: token( token:: Eq , DUMMY_SP ) ,
371
+ TokenTree :: token(
372
+ TokenKind :: Literal ( token:: Lit :: new( token:: LitKind :: Str , value. into_symbol( ) , None ) ) ,
373
+ DUMMY_SP
374
+ )
362
375
]
363
376
. into_iter ( )
364
377
. collect ( ) ,
@@ -401,21 +414,22 @@ impl Builder {
401
414
402
415
let tokens: TokenStream = {
403
416
let mut builder = TokenStreamBuilder :: new ( ) ;
404
- builder. push ( Token :: OpenDelim ( DelimToken :: Paren ) ) ;
417
+ builder. push ( TokenTree :: token ( TokenKind :: OpenDelim ( DelimToken :: Paren ) , DUMMY_SP ) ) ;
405
418
406
419
let mut is_first = true ;
407
420
for argument in arguments {
408
421
if is_first {
409
422
is_first = false ;
410
423
} else {
411
- builder. push ( Token :: Comma ) ;
424
+ builder. push ( TokenTree :: token ( TokenKind :: Comma , DUMMY_SP ) ) ;
412
425
}
413
426
414
427
let argument: Ident = argument. make ( & self ) ;
415
- builder. push ( Token :: from_ast_ident ( argument) ) ;
428
+ let token_kind = TokenKind :: Ident ( argument. name , argument. is_raw_guess ( ) ) ;
429
+ builder. push ( TokenTree :: token ( token_kind, DUMMY_SP ) ) ;
416
430
}
417
431
418
- builder. push ( Token :: CloseDelim ( DelimToken :: Paren ) ) ;
432
+ builder. push ( TokenTree :: token ( TokenKind :: CloseDelim ( DelimToken :: Paren ) , DUMMY_SP ) ) ;
419
433
builder. build ( )
420
434
} ;
421
435
@@ -470,7 +484,7 @@ impl Builder {
470
484
AngleBracketedArgs {
471
485
span : self . span ,
472
486
args : args,
473
- bindings : vec ! [ ] ,
487
+ constraints : vec ! [ ] ,
474
488
}
475
489
}
476
490
@@ -504,20 +518,20 @@ impl Builder {
504
518
path. make ( & self )
505
519
}
506
520
507
- pub fn abs_path < Pa > ( self , path : Pa ) -> Path
508
- where
509
- Pa : Make < Path > ,
510
- {
511
- let mut p = path. make ( & self ) ;
512
- if !p
513
- . segments
514
- . get ( 0 )
515
- . map_or ( false , |s| s. ident . name == keywords :: Crate . name ( ) )
516
- {
517
- p. segments . insert ( 0 , keywords :: Crate . ident ( ) . make ( & self ) ) ;
518
- }
519
- p
520
- }
521
+ // pub fn abs_path<Pa>(self, path: Pa) -> Path
522
+ // where
523
+ // Pa: Make<Path>,
524
+ // {
525
+ // let mut p = path.make(&self);
526
+ // if !p
527
+ // .segments
528
+ // .get(0)
529
+ // .map_or(false, |s| s.ident.name == kw ::Crate)
530
+ // {
531
+ // p.segments.insert(0, kw ::Crate.ident().make(&self));
532
+ // }
533
+ // p
534
+ // }
521
535
522
536
pub fn anon_const < E > ( self , expr : E ) -> AnonConst
523
537
where
@@ -941,55 +955,56 @@ impl Builder {
941
955
let body = body. make ( & self ) ;
942
956
Arm {
943
957
attrs : self . attrs ,
944
- pats : pats ,
958
+ pats,
945
959
guard,
946
960
body,
961
+ span : DUMMY_SP ,
947
962
}
948
963
}
949
964
950
965
// Literals
951
966
952
967
pub fn bytestr_lit ( self , s : Vec < u8 > ) -> Lit {
953
- Lit {
954
- node : LitKind :: ByteStr ( Rc :: new ( s) ) ,
955
- span : self . span ,
956
- }
968
+ Lit :: from_lit_kind (
969
+ LitKind :: ByteStr ( Rc :: new ( s) ) ,
970
+ self . span
971
+ )
957
972
}
958
973
959
974
pub fn str_lit < S > ( self , s : S ) -> Lit
960
975
where
961
976
S : IntoSymbol ,
962
977
{
963
978
let s = s. into_symbol ( ) ;
964
- Lit {
965
- node : LitKind :: Str ( s, StrStyle :: Cooked ) ,
966
- span : self . span ,
967
- }
979
+ Lit :: from_lit_kind (
980
+ LitKind :: Str ( s, StrStyle :: Cooked ) ,
981
+ self . span
982
+ )
968
983
}
969
984
970
985
pub fn byte_lit ( self , b : u8 ) -> Lit {
971
- Lit {
972
- node : LitKind :: Byte ( b) ,
973
- span : self . span ,
974
- }
986
+ Lit :: from_lit_kind (
987
+ LitKind :: Byte ( b) ,
988
+ self . span
989
+ )
975
990
}
976
991
977
992
pub fn char_lit ( self , c : char ) -> Lit {
978
- Lit {
979
- node : LitKind :: Char ( c) ,
980
- span : self . span ,
981
- }
993
+ Lit :: from_lit_kind (
994
+ LitKind :: Char ( c) ,
995
+ self . span
996
+ )
982
997
}
983
998
984
999
pub fn int_lit < T > ( self , i : u128 , ty : T ) -> Lit
985
1000
where
986
1001
T : Make < LitIntType > ,
987
1002
{
988
1003
let ty = ty. make ( & self ) ;
989
- Lit {
990
- node : LitKind :: Int ( i, ty) ,
991
- span : self . span ,
992
- }
1004
+ Lit :: from_lit_kind (
1005
+ LitKind :: Int ( i, ty) ,
1006
+ self . span
1007
+ )
993
1008
}
994
1009
995
1010
pub fn float_lit < S , T > ( self , s : S , ty : T ) -> Lit
@@ -999,28 +1014,28 @@ impl Builder {
999
1014
{
1000
1015
let s = s. into_symbol ( ) ;
1001
1016
let ty = ty. make ( & self ) ;
1002
- Lit {
1003
- node : LitKind :: Float ( s, ty) ,
1004
- span : self . span ,
1005
- }
1017
+ Lit :: from_lit_kind (
1018
+ LitKind :: Float ( s, ty) ,
1019
+ self . span
1020
+ )
1006
1021
}
1007
1022
1008
1023
pub fn float_unsuffixed_lit < S > ( self , s : S ) -> Lit
1009
1024
where
1010
1025
S : IntoSymbol ,
1011
1026
{
1012
1027
let s = s. into_symbol ( ) ;
1013
- Lit {
1014
- node : LitKind :: FloatUnsuffixed ( s) ,
1015
- span : self . span ,
1016
- }
1028
+ Lit :: from_lit_kind (
1029
+ LitKind :: FloatUnsuffixed ( s) ,
1030
+ self . span
1031
+ )
1017
1032
}
1018
1033
1019
1034
pub fn bool_lit ( self , b : bool ) -> Lit {
1020
- Lit {
1021
- node : LitKind :: Bool ( b) ,
1022
- span : self . span ,
1023
- }
1035
+ Lit :: from_lit_kind (
1036
+ LitKind :: Bool ( b) ,
1037
+ self . span
1038
+ )
1024
1039
}
1025
1040
1026
1041
pub fn ifte_expr < C , T , E > ( self , cond : C , then_case : T , else_case : Option < E > ) -> P < Expr >
@@ -1605,7 +1620,7 @@ impl Builder {
1605
1620
let mac = mac. make ( & self ) ;
1606
1621
let kind = ItemKind :: Mac ( mac) ;
1607
1622
Self :: item (
1608
- keywords :: Invalid . ident ( ) ,
1623
+ Ident :: invalid ( ) ,
1609
1624
self . attrs ,
1610
1625
self . vis ,
1611
1626
self . span ,
@@ -1659,7 +1674,7 @@ impl Builder {
1659
1674
{
1660
1675
let ty = ty. make ( & self ) ;
1661
1676
Self :: item (
1662
- keywords :: Invalid . ident ( ) ,
1677
+ Ident :: invalid ( ) ,
1663
1678
self . attrs ,
1664
1679
self . vis ,
1665
1680
self . span ,
@@ -1709,7 +1724,7 @@ impl Builder {
1709
1724
kind : UseTreeKind :: Simple ( rename, DUMMY_NODE_ID , DUMMY_NODE_ID ) ,
1710
1725
} ;
1711
1726
Self :: item (
1712
- keywords :: Invalid . ident ( ) ,
1727
+ Ident :: invalid ( ) ,
1713
1728
self . attrs ,
1714
1729
self . vis ,
1715
1730
self . span ,
@@ -1743,7 +1758,7 @@ impl Builder {
1743
1758
kind : UseTreeKind :: Nested ( inner_trees) ,
1744
1759
} ;
1745
1760
Self :: item (
1746
- keywords :: Invalid . ident ( ) ,
1761
+ Ident :: invalid ( ) ,
1747
1762
self . attrs ,
1748
1763
self . vis ,
1749
1764
self . span ,
@@ -1758,7 +1773,7 @@ impl Builder {
1758
1773
items,
1759
1774
} ;
1760
1775
Self :: item (
1761
- keywords :: Invalid . ident ( ) ,
1776
+ Ident :: invalid ( ) ,
1762
1777
self . attrs ,
1763
1778
self . vis ,
1764
1779
self . span ,
@@ -1800,7 +1815,7 @@ impl Builder {
1800
1815
let mac = mac. make ( & self ) ;
1801
1816
let kind = ImplItemKind :: Macro ( mac) ;
1802
1817
Self :: impl_item_ (
1803
- keywords :: Invalid . ident ( ) ,
1818
+ Ident :: invalid ( ) ,
1804
1819
self . attrs ,
1805
1820
self . vis ,
1806
1821
Defaultness :: Final ,
@@ -1840,7 +1855,7 @@ impl Builder {
1840
1855
let mac = mac. make ( & self ) ;
1841
1856
let kind = TraitItemKind :: Macro ( mac) ;
1842
1857
Self :: trait_item_ (
1843
- keywords :: Invalid . ident ( ) ,
1858
+ Ident :: invalid ( ) ,
1844
1859
self . attrs ,
1845
1860
self . generics ,
1846
1861
self . span ,
@@ -1893,14 +1908,13 @@ impl Builder {
1893
1908
{
1894
1909
let name = name. make ( & self ) ;
1895
1910
let ty = ty. make ( & self ) ;
1896
- let is_mut = self . mutbl == Mutability :: Mutable ;
1897
1911
Self :: foreign_item (
1898
1912
name,
1899
1913
self . attrs ,
1900
1914
self . vis ,
1901
1915
self . span ,
1902
1916
self . id ,
1903
- ForeignItemKind :: Static ( ty, is_mut ) ,
1917
+ ForeignItemKind :: Static ( ty, self . mutbl ) ,
1904
1918
)
1905
1919
}
1906
1920
@@ -1926,7 +1940,7 @@ impl Builder {
1926
1940
let mac = mac. make ( & self ) ;
1927
1941
let kind = ForeignItemKind :: Macro ( mac) ;
1928
1942
Self :: foreign_item (
1929
- keywords :: Invalid . ident ( ) ,
1943
+ Ident :: invalid ( ) ,
1930
1944
self . attrs ,
1931
1945
self . vis ,
1932
1946
self . span ,
@@ -2017,6 +2031,7 @@ impl Builder {
2017
2031
let ty = ty. make ( & self ) ;
2018
2032
let pat = pat. make ( & self ) ;
2019
2033
Arg {
2034
+ attrs : ThinVec :: new ( ) ,
2020
2035
ty : ty,
2021
2036
pat : pat,
2022
2037
id : self . id ,
@@ -2029,7 +2044,8 @@ impl Builder {
2029
2044
{
2030
2045
let eself = dummy_spanned ( kind. make ( & self ) ) ;
2031
2046
let ident = "self" . make ( & self ) ;
2032
- Arg :: from_self ( eself, ident)
2047
+ let attrs = ThinVec :: new ( ) ;
2048
+ Arg :: from_self ( attrs, eself, ident)
2033
2049
}
2034
2050
2035
2051
pub fn ty_param < I > ( self , ident : I ) -> GenericParam
0 commit comments