File tree Expand file tree Collapse file tree 3 files changed +31
-5
lines changed
oxc_minifier/tests/mangler Expand file tree Collapse file tree 3 files changed +31
-5
lines changed Original file line number Diff line number Diff line change @@ -2752,11 +2752,9 @@ impl Gen for AccessorProperty<'_> {
27522752impl Gen for PrivateIdentifier < ' _ > {
27532753 fn r#gen ( & self , p : & mut Codegen , _ctx : Context ) {
27542754 let name = if let Some ( class_index) = p. current_class_index ( )
2755- && let Some ( mangled) = & p
2756- . private_member_mappings
2757- . as_ref ( )
2758- . and_then ( |m| m[ class_index] . get ( self . name . as_str ( ) ) )
2759- {
2755+ && let Some ( mangled) = & p. private_member_mappings . as_ref ( ) . and_then ( |m| {
2756+ m[ 0 ..=class_index] . iter ( ) . rev ( ) . find_map ( |m| m. get ( self . name . as_str ( ) ) )
2757+ } ) {
27602758 ( * mangled) . clone ( )
27612759 } else {
27622760 self . name . into_compact_str ( )
Original file line number Diff line number Diff line change @@ -118,6 +118,8 @@ fn private_member_mangling() {
118118 "class Foo { #x; check() { return #x in this; } }" ,
119119 // Nested classes
120120 "class Outer { #outerField = 1; inner() { return class Inner { #innerField = 2; get() { return this.#innerField; } }; } }" ,
121+ "class Outer { #shared = 1; getInner() { let self = this; return class { method() { return self.#shared; } }; } }" ,
122+ "class Outer { #shared = 1; getInner() { return class { #shared = 2; method() { return this.#shared; } }; } }" ,
121123 // Mixed public and private
122124 "class Foo { publicField = 1; #privateField = 2; getSum() { return this.publicField + this.#privateField; } }" ,
123125 // Test same names across different classes should reuse mangled names
Original file line number Diff line number Diff line change @@ -60,6 +60,32 @@ class Outer {
6060 }
6161}
6262
63+ class Outer { #shared = 1 ; getInner() { let self = this ; return class { method() { return self .#shared ; } }; } }
64+ class Outer {
65+ #e = 1 ;
66+ getInner() {
67+ let e = this ;
68+ return class {
69+ method() {
70+ return e .#e ;
71+ }
72+ };
73+ }
74+ }
75+
76+ class Outer { #shared = 1 ; getInner() { return class { #shared = 2 ; method() { return this .#shared ; } }; } }
77+ class Outer {
78+ #e = 1 ;
79+ getInner() {
80+ return class {
81+ #e = 2 ;
82+ method() {
83+ return this .#e ;
84+ }
85+ };
86+ }
87+ }
88+
6389class Foo { publicField = 1 ; #privateField = 2 ; getSum() { return this .publicField + this .#privateField ; } }
6490class Foo {
6591 publicField = 1 ;
You can’t perform that action at this time.
0 commit comments