Fix parsing of nested classes with private fields
The parsing of private fields checks whether or not it is within a class to determine if it is valid or not. However, the state.inClass property is incorrect as it marks it as outside a class when the inner class is closed. This commit fixes this problem by replacing the state.inClass property with a class nesting counter.
This commit is contained in:
40
test/fixtures/experimental/class-private-properties/nested/actual.js
vendored
Normal file
40
test/fixtures/experimental/class-private-properties/nested/actual.js
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
class Point {
|
||||
#x = 1;
|
||||
#y = 2;
|
||||
|
||||
constructor(x = 0, y = 0) {
|
||||
#x = +x;
|
||||
#y = +y;
|
||||
|
||||
|
||||
this.foo = class {
|
||||
#x = 1;
|
||||
#y = 2;
|
||||
|
||||
constructor(x = 0, y = 0) {
|
||||
#x = +x;
|
||||
#y = +y;
|
||||
}
|
||||
|
||||
get x() { return #x }
|
||||
set x(value) { #x = +value }
|
||||
|
||||
get y() { return #y }
|
||||
set y(value) { #y = +value }
|
||||
|
||||
equals(p) { return #x === p.#x && #y === p.#y }
|
||||
|
||||
toString() { return `Point<${ #x },${ #y }>` }
|
||||
};
|
||||
}
|
||||
|
||||
get x() { return #x }
|
||||
set x(value) { #x = +value }
|
||||
|
||||
get y() { return #y }
|
||||
set y(value) { #y = +value }
|
||||
|
||||
equals(p) { return #x === p.#x && #y === p.#y }
|
||||
|
||||
toString() { return `Point<${ #x },${ #y }>` }
|
||||
}
|
||||
3353
test/fixtures/experimental/class-private-properties/nested/expected.json
vendored
Normal file
3353
test/fixtures/experimental/class-private-properties/nested/expected.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
3
test/fixtures/experimental/class-private-properties/nested/options.json
vendored
Normal file
3
test/fixtures/experimental/class-private-properties/nested/options.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"plugins": ["classProperties", "classPrivateProperties"]
|
||||
}
|
||||
Reference in New Issue
Block a user