Skip to content

Commit 3250488

Browse files
authored
Merge pull request #246 from github/ensure-marks-default-to-configurable-enumerable
ensure marks default to configurable+enumerable
2 parents c12f5b7 + b34abdd commit 3250488

2 files changed

Lines changed: 23 additions & 1 deletion

File tree

src/mark.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ export function createMark<T extends object>(
6060
enumerable: true
6161
}
6262
const newDescriptor = initialize(instance, {name, kind: getType(access), access}) || access
63-
Object.defineProperty(instance, name, newDescriptor)
63+
Object.defineProperty(instance, name, Object.assign({configurable: true, enumerable: true}, newDescriptor))
6464
}
6565
}
6666
]

test/mark.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,4 +231,26 @@ describe('createMark', () => {
231231
expect(initialize).to.be.calledWithExactly(fooBar, {name: 'grault', kind: 'method', access: accessFor('grault')})
232232
expect(initialize).to.be.calledWithExactly(fooBar, {name: sym, kind: 'method', access: accessFor(sym)})
233233
})
234+
235+
it('can apply multiple different marks to the same property', () => {
236+
const [mark1, getMarks1, initializeMarks1] = createMark(
237+
fake(),
238+
fake(() => ({get: fake(), set: fake()}))
239+
)
240+
const [mark2, getMarks2, initializeMarks2] = createMark(
241+
fake(),
242+
fake(() => ({get: fake(), set: fake()}))
243+
)
244+
class FooBar {
245+
@mark1 @mark2 foo: unknown
246+
@mark2 @mark1 bar = 'hi'
247+
constructor() {
248+
initializeMarks1(this)
249+
initializeMarks2(this)
250+
}
251+
}
252+
const fooBar = new FooBar()
253+
expect(Array.from(getMarks1(fooBar))).to.eql(['foo', 'bar'])
254+
expect(Array.from(getMarks2(fooBar))).to.eql(['foo', 'bar'])
255+
})
234256
})

0 commit comments

Comments
 (0)