blob: 9a81f57cf7e5c3aac1951ae7a02589067db27e1d [file] [log] [blame]
Evaluate private class member out of class scope in Runtime.evaluate()
class Klass {
#field = "string";
get #getterOnly() { return "getterOnly"; }
set #setterOnly(val) { this.#field = "setterOnlyCalled"; }
get #accessor() { return this.#field }
set #accessor(val) { this.#field = val; }
#method() { return "method"; }
}
const obj = new Klass();
Running test: evaluatePrivateMembers
Checking private fields
Runtime.evaluate: `obj.#field`
{
type : string
value : string
}
Runtime.evaluate: `obj.#field = 1`
{
description : 1
type : number
value : 1
}
Runtime.evaluate: `obj.#field`
{
description : 1
type : number
value : 1
}
Runtime.evaluate: `obj.#field++`
{
description : 1
type : number
value : 1
}
Runtime.evaluate: `obj.#field`
{
description : 2
type : number
value : 2
}
Runtime.evaluate: `++obj.#field`
{
description : 3
type : number
value : 3
}
Runtime.evaluate: `obj.#field`
{
description : 3
type : number
value : 3
}
Runtime.evaluate: `obj.#field -= 3`
{
description : 0
type : number
value : 0
}
Runtime.evaluate: `obj.#field`
{
description : 0
type : number
value : 0
}
Checking private getter-only accessors
Runtime.evaluate: `obj.#getterOnly`
{
type : string
value : getterOnly
}
Runtime.evaluate: `obj.#getterOnly = 1`
{
className : Error
description : Error: '#getterOnly' was defined without a setter at <anonymous>:1:17
objectId : <objectId>
subtype : error
type : object
}
Runtime.evaluate: `obj.#getterOnly++`
{
className : Error
description : Error: '#getterOnly' was defined without a setter at <anonymous>:1:16
objectId : <objectId>
subtype : error
type : object
}
Runtime.evaluate: `obj.#getterOnly -= 3`
{
className : Error
description : Error: '#getterOnly' was defined without a setter at <anonymous>:1:17
objectId : <objectId>
subtype : error
type : object
}
Runtime.evaluate: `obj.#getterOnly`
{
type : string
value : getterOnly
}
Checking private setter-only accessors
Runtime.evaluate: `obj.#setterOnly`
{
className : Error
description : Error: '#setterOnly' was defined without a getter at <anonymous>:1:1
objectId : <objectId>
subtype : error
type : object
}
Runtime.evaluate: `obj.#setterOnly = 1`
{
description : 1
type : number
value : 1
}
Runtime.evaluate: `obj.#setterOnly++`
{
className : Error
description : Error: '#setterOnly' was defined without a getter at <anonymous>:1:1
objectId : <objectId>
subtype : error
type : object
}
Runtime.evaluate: `obj.#setterOnly -= 3`
{
className : Error
description : Error: '#setterOnly' was defined without a getter at <anonymous>:1:1
objectId : <objectId>
subtype : error
type : object
}
Runtime.evaluate: `obj.#field`
{
type : string
value : setterOnlyCalled
}
Checking private accessors
Runtime.evaluate: `obj.#accessor`
{
type : string
value : setterOnlyCalled
}
Runtime.evaluate: `obj.#accessor = 1`
{
description : 1
type : number
value : 1
}
Runtime.evaluate: `obj.#field`
{
description : 1
type : number
value : 1
}
Runtime.evaluate: `obj.#accessor++`
{
description : 1
type : number
value : 1
}
Runtime.evaluate: `obj.#field`
{
description : 2
type : number
value : 2
}
Runtime.evaluate: `++obj.#accessor`
{
type : undefined
}
Runtime.evaluate: `obj.#field`
{
description : 3
type : number
value : 3
}
Runtime.evaluate: `obj.#accessor -= 3`
{
description : 0
type : number
value : 0
}
Runtime.evaluate: `obj.#field`
{
description : 0
type : number
value : 0
}
Checking private methods
Runtime.evaluate: `obj.#method`
{
className : Function
description : #method() { return "method"; }
objectId : <objectId>
type : function
}
Runtime.evaluate: `obj.#method = 1`
{
className : Error
description : Error: Private method '#method' is not writable at <anonymous>:1:13
objectId : <objectId>
subtype : error
type : object
}
Runtime.evaluate: `obj.#method++`
{
className : Error
description : Error: Private method '#method' is not writable at <anonymous>:1:12
objectId : <objectId>
subtype : error
type : object
}
Runtime.evaluate: `++obj.#method`
{
className : Error
description : Error: Private method '#method' is not writable at <anonymous>:1:7
objectId : <objectId>
subtype : error
type : object
}
Runtime.evaluate: `obj.#method -= 3`
{
className : Error
description : Error: Private method '#method' is not writable at <anonymous>:1:13
objectId : <objectId>
subtype : error
type : object
}