@@ -533,14 +533,14 @@ fn add_props_to_body(body: &mut Vec<Statement>, mut props: Vec<ClassMember>) {
533533 for prop in props. iter_mut ( ) . rev ( ) {
534534 if let & mut ClassMember :: Property {
535535 // ref is_static,
536- ref name ,
536+ ref mut key ,
537537 ref mut value,
538538 ..
539539 } = prop {
540540 body. insert (
541541 0 ,
542542 Expression :: binary (
543- Expression :: member ( Expression :: This , * name ) ,
543+ class_key_to_member ( Expression :: This , key ) ,
544544 Assign ,
545545 value. take ( ) ,
546546 ) . into ( )
@@ -549,6 +549,30 @@ fn add_props_to_body(body: &mut Vec<Statement>, mut props: Vec<ClassMember>) {
549549 }
550550}
551551
552+ #[ inline]
553+ fn class_key_to_member ( object : Expression , key : & mut ClassKey ) -> Expression {
554+ let expr = match * key {
555+ ClassKey :: Literal ( ref name) => {
556+ return Expression :: member ( object, * name) ;
557+ } ,
558+
559+ ClassKey :: Computed ( ref mut expr) => expr. take ( ) ,
560+
561+ ClassKey :: Number ( ref num) => {
562+ Expression :: Literal ( Value :: Number ( * num) )
563+ } ,
564+
565+ ClassKey :: Binary ( ref num) => {
566+ Expression :: Literal ( Value :: Binary ( * num) )
567+ }
568+ } ;
569+
570+ Expression :: ComputedMember {
571+ object : Box :: new ( object) ,
572+ property : Box :: new ( expr) ,
573+ }
574+ }
575+
552576impl Transformable for Statement {
553577 fn transform ( & mut self , settings : & Settings ) {
554578 * self = match * self {
@@ -671,20 +695,19 @@ impl Transformable for Statement {
671695
672696 for method in methods. iter_mut ( ) {
673697 if let & mut ClassMember :: Method {
674- name : ref method_name ,
698+ key : ref mut method_key ,
675699 params : ref mut method_params,
676700 body : ref mut method_body,
677701 ..
678702 } = method {
703+ let proto = Expression :: member ( name, "prototype" ) ;
704+
679705 body. push (
680706 Expression :: binary (
681- Expression :: member (
682- Expression :: member ( name, "prototype" ) ,
683- * method_name
684- ) ,
707+ class_key_to_member ( proto, method_key) ,
685708 Assign ,
686709 Expression :: Function {
687- name : Some ( * method_name ) ,
710+ name : None ,
688711 params : method_params. take ( ) ,
689712 body : method_body. take ( ) ,
690713 } ,
0 commit comments