@@ -27,31 +27,31 @@ pub(crate) enum RewriteType<'alloc: 'data, 'data> {
2727 /// `cfg.metafn("cfg.base")`
2828 MetaFn ,
2929
30- /// `window.location ` -> cfg.wraplocation (window)
30+ /// `window.attr ` -> cfg.wrapattr (window)
3131 WrapGet {
32- ident : Atom < ' data > ,
33- propspan : Span ,
34- enclose : bool ,
32+ ident : Atom < ' data > ,
33+ propspan : Span ,
34+ enclose : bool ,
3535 } ,
36- /// `window["location "]` -> cfg.wrapgetcomputed(window, "location ")
36+ /// `window["attr "]` -> cfg.wrapgetcomputed(window, "attr ")
3737 WrapGetComputed {
38- leftspan : Span ,
39- propspan : Span ,
40- enclose : bool ,
38+ leftspan : Span ,
39+ propspan : Span ,
40+ enclose : bool ,
4141 } ,
42- /// `window.location ` -> cfg.wraplocation (window)
42+ /// `window.attr ` -> cfg.wrapattr (window)
4343 WrapSet {
44- ident : Atom < ' data > ,
45- propspan : Span ,
46- leftspan : Span ,
47- rightspan : Span ,
44+ ident : Atom < ' data > ,
45+ propspan : Span ,
46+ leftspan : Span ,
47+ rightspan : Span ,
4848 } ,
49- /// `cfg.wrapcomputedsetfn(window, "location ", t)`
49+ /// `cfg.wrapcomputedsetfn(window, "attr ", t)`
5050 WrapSetComputed {
51- propspan : Span ,
52- leftspan : Span ,
53- rightspan : Span ,
54- } ,
51+ propspan : Span ,
52+ leftspan : Span ,
53+ rightspan : Span ,
54+ } ,
5555 // dead code only if debug is disabled
5656 #[ allow( dead_code) ]
5757 /// `$scramerr(name)`
@@ -84,6 +84,7 @@ pub(crate) enum RewriteType<'alloc: 'data, 'data> {
8484 Delete ,
8585}
8686
87+ #[ derive( Debug ) ]
8788pub ( crate ) struct Rewrite < ' alloc , ' data > {
8889 span : Span ,
8990 ty : RewriteType < ' alloc , ' data > ,
@@ -114,6 +115,9 @@ impl<'alloc: 'data, 'data> RewriteType<'alloc, 'data> {
114115 ( $span1: ident $span2: ident end) => {
115116 Span :: new( $span1. end, $span2. end)
116117 } ;
118+ ( $span1: ident $span2: ident between) => {
119+ Span :: new( $span1. end, $span2. start)
120+ } ;
117121 }
118122
119123 match self {
@@ -122,59 +126,65 @@ impl<'alloc: 'data, 'data> RewriteType<'alloc, 'data> {
122126 change!( span!( end) , WrapFnRight { enclose } ) ,
123127 ] ,
124128 Self :: WrapGet {
125- ident,
126- propspan,
127- enclose,
129+ ident,
130+ propspan,
131+ enclose,
128132 } => smallvec ! [
129- change!( span!( start) , WrapGetLeft {
130- ident,
131- enclose,
132- } ) ,
133- change!( propspan, Delete ) ,
134- change!( Span :: new( propspan. start-1 , propspan. start) , Delete ) ,
135- change!( Span :: new( propspan. end, propspan. end) , WrapGetRight {
136- enclose,
137- } ) ,
133+ change!( span!( start) , WrapGetLeft { ident, enclose } ) ,
134+ change!( propspan. expand_left( 1 ) , WrapGetRight { enclose } ) ,
138135 ] ,
139- Self :: WrapGetComputed { leftspan, propspan, enclose } => smallvec ! [
140- change!( span!( start) , WrapGetComputedLeft {
141- enclose
142- } ) ,
136+ Self :: WrapGetComputed {
137+ leftspan,
138+ propspan,
139+ enclose,
140+ } => smallvec ! [
141+ change!( span!( start) , WrapGetComputedLeft { enclose } ) ,
143142 // replace the bracket with ,
144- change!( Span :: new ( leftspan. end , propspan. start ) , Replace { text: "," } ) ,
143+ change!( span! ( leftspan propspan between ) , Replace { text: "," } ) ,
145144 // replace the other bracket with )
146- change!( Span :: new( propspan. end, propspan. end + 1 ) , ClosingParen { semi: false , replace: true } ) ,
147-
145+ change!(
146+ propspan. expand_right( 1 ) ,
147+ ClosingParen {
148+ semi: false ,
149+ replace: true
150+ }
151+ ) ,
148152 ] ,
149- Self :: WrapSet { ident, propspan, leftspan, rightspan } => smallvec ! [
150- change!( span!( start) , WrapSet {
151- ident,
152- propspan,
153- } ) ,
154- change!( propspan, Delete ) ,
155- change!( Span :: new( leftspan. end, rightspan. start) , Replace { text: "," } ) ,
156- change!(
153+ Self :: WrapSet {
154+ ident,
155+ propspan,
156+ leftspan,
157+ rightspan,
158+ } => smallvec ! [
159+ change!( span!( start) , WrapSet { ident, propspan } ) ,
160+ change!( propspan, Delete ) ,
161+ change!( span!( leftspan rightspan between) , Replace { text: "," } ) ,
162+ change!(
157163 span!( end) ,
158164 ClosingParen {
159165 semi: false ,
160166 replace: true
161167 }
162168 )
163- ] ,
164- RewriteType :: WrapSetComputed { leftspan, rightspan, propspan } => smallvec ! [
165- change!( span!( start) , WrapSetComputed ) ,
166- // replace the bracket with ,
167- change!( Span :: new( leftspan. end, propspan. start) , Replace { text: "," } ) ,
169+ ] ,
170+ RewriteType :: WrapSetComputed {
171+ leftspan,
172+ rightspan,
173+ propspan,
174+ } => smallvec ! [
175+ change!( span!( start) , WrapSetComputed ) ,
176+ // replace the bracket with ,
177+ change!( span!( leftspan propspan between) , Replace { text: "," } ) ,
168178 // replace the other bracket with another ,
169- change!( Span :: new ( propspan. end , rightspan. start ) , Replace { text: "," } ) ,
179+ change!( span! ( propspan rightspan between ) , Replace { text: "," } ) ,
170180 change!(
171181 span!( end) ,
172182 ClosingParen {
173183 semi: false ,
174184 replace: true
175185 }
176186 )
177- ] ,
187+ ] ,
178188 Self :: SetRealmFn => smallvec ! [ change!( span, SetRealmFn ) ] ,
179189 Self :: ImportFn => smallvec ! [ change!( span, ImportFn ) ] ,
180190 Self :: MetaFn => smallvec ! [ change!( span, MetaFn ) ] ,
0 commit comments