1# Test printing Handles.
2# Ignore flake8 errors "undefined name 'assert_pretty'"
3# As it caused by the way we instanciate this file
4# flake8: noqa: F821
5
6assert_subprinter_registered("SpiderMonkey", "instantiations-of-JS::Rooted")
7assert_subprinter_registered("SpiderMonkey", "instantiations-of-JS::Handle")
8assert_subprinter_registered("SpiderMonkey", "instantiations-of-JS::MutableHandle")
9assert_subprinter_registered("SpiderMonkey", "instantiations-of-js::BarrieredBase")
10
11run_fragment("Root.handle")
12
13assert_pretty("obj", "(JSObject * const)  [object global]")
14assert_pretty("mutableObj", "(JSObject *)  [object global]")
15
16run_fragment("Root.HeapSlot")
17
18# This depends on implementation details of arrays, but since HeapSlot is
19# not a public type, I'm not sure how to avoid doing *something* ugly.
20assert_pretty("((js::NativeObject *) array.ptr)->elements_[0]", '$JS::Value("plinth")')
21
22run_fragment("Root.barriers")
23
24assert_pretty("prebarriered", "(JSObject *)  [object Object]")
25assert_pretty("heapptr", "(JSObject *)  [object Object]")
26assert_pretty("relocatable", "(JSObject *)  [object Object]")
27assert_pretty("val", "$JS::Value((JSObject *)  [object Object])")
28assert_pretty("heapValue", "$JS::Value((JSObject *)  [object Object])")
29assert_pretty("prebarrieredValue", "$JS::Value((JSObject *)  [object Object])")
30assert_pretty("relocatableValue", "$JS::Value((JSObject *)  [object Object])")
31