tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

TestJSHandleRootedTypedef.cpp (18328B)


      1 #include "js/TypeDecls.h"
      2 #include "js/Value.h"
      3 #include "js/GCVector.h"
      4 #include "js/Id.h"
      5 
      6 class Foo {
      7  void HandleFunction(JS::HandleFunction){}; // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
      8  void HandleId(JS::HandleId){}; // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
      9  void HandleObject(JS::HandleObject){}; // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     10  void HandleScript(JS::HandleScript){}; // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     11  void HandleString(JS::HandleString){}; // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     12  void HandleSymbol(JS::HandleSymbol){}; // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     13  void HandleBigInt(JS::HandleBigInt){}; // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     14  void HandleValue(JS::HandleValue){}; // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     15  void HandleValueVector(JS::HandleValueVector){}; // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     16  void HandleObjectVector(JS::HandleObjectVector){}; // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     17  void HandleIdVector(JS::HandleIdVector){}; // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     18 
     19  void MutableHandleFunction(JS::MutableHandleFunction){}; // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     20  void MutableHandleId(JS::MutableHandleId){}; // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     21  void MutableHandleObject(JS::MutableHandleObject){}; // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     22  void MutableHandleScript(JS::MutableHandleScript){}; // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     23  void MutableHandleString(JS::MutableHandleString){}; // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     24  void MutableHandleSymbol(JS::MutableHandleSymbol){}; // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     25  void MutableHandleBigInt(JS::MutableHandleBigInt){}; // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     26  void MutableHandleValue(JS::MutableHandleValue){}; // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     27  void MutableHandleValueVector(JS::MutableHandleValueVector){}; // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     28  void MutableHandleObjectVector(JS::MutableHandleObjectVector){}; // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     29  void MutableHandleIdVector(JS::MutableHandleIdVector){}; // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     30 
     31  // Examples of preferred forms
     32  void FullHandleFunction(JS::Handle<JSFunction*>){};
     33  void FullHandleId(JS::Handle<JS::PropertyKey>){};
     34  void FullHandleObject(JS::Handle<JSObject*>){};
     35  void FullHandleScript(JS::Handle<JSScript*>){};
     36  void FullHandleString(JS::Handle<JSString*>){};
     37  void FullHandleSymbol(JS::Handle<JS::Symbol*>){};
     38  void FullHandleBigInt(JS::Handle<JS::BigInt*>){};
     39  void FullHandleValue(JS::Handle<JS::Value>){};
     40  void FullHandleValueVector(JS::Handle<JS::StackGCVector<JS::Value>>){};
     41  void FullHandleObjectVector(JS::Handle<JS::StackGCVector<JSObject*>>){};
     42  void FullHandleIdVector(JS::HandleVector<JS::PropertyKey>){};
     43  void FullHandleValueVectorShorter(JS::HandleVector<JS::Value>){};
     44  void FullHandleObjectVectorShorter(JS::HandleVector<JSObject*>){};
     45  void FullHandleIdVectorShorter(JS::HandleVector<JS::PropertyKey>){};
     46 
     47  void FullMutableHandleFunction(JS::MutableHandle<JSFunction*>){};
     48  void FullMutableHandleId(JS::MutableHandle<JS::PropertyKey>){};
     49  void FullMutableHandleObject(JS::MutableHandle<JSObject*>){};
     50  void FullMutableHandleScript(JS::MutableHandle<JSScript*>){};
     51  void FullMutableHandleString(JS::MutableHandle<JSString*>){};
     52  void FullMutableHandleSymbol(JS::MutableHandle<JS::Symbol*>){};
     53  void FullMutableHandleBigInt(JS::MutableHandle<JS::BigInt*>){};
     54  void FullMutableHandleValue(JS::MutableHandle<JS::Value*>){};
     55  void FullMutableHandleValueVector(JS::MutableHandle<JS::StackGCVector<JS::Value>>){};
     56  void FullMutableHandleObjectVector(JS::MutableHandle<JS::StackGCVector<JSObject*>>){};
     57  void FullMutableHandleIdVector(JS::MutableHandle<JS::StackGCVector<JS::PropertyKey>>){};
     58  void FullMutableHandleValueVectorShorter(JS::MutableHandleVector<JS::Value>){};
     59  void FullMutableHandleObjectVectorShorter(JS::MutableHandleVector<JSObject*>){};
     60  void FullMutableHandleIdVectorShorter(JS::MutableHandleVector<JS::PropertyKey>){};
     61 };
     62 
     63 static void Bar(JSContext *aCx) {
     64  JS::RootedObject RootedObject(aCx); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     65  JS::RootedFunction RootedFunction(aCx); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     66  JS::RootedScript RootedScript(aCx); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     67  JS::RootedString RootedString(aCx); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     68  JS::RootedSymbol RootedSymbol(aCx); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     69  JS::RootedBigInt RootedBigInt(aCx); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     70  JS::RootedId RootedId(aCx); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     71  JS::RootedValue RootedValue(aCx); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     72 
     73  JS::RootedValueVector RootedValueVector(aCx); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     74  JS::RootedObjectVector RootedObjectVector(aCx); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     75  JS::RootedIdVector RootedIdVector(aCx); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     76 
     77  JS::PersistentRootedFunction PersistentRootedFunction(aCx); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     78  JS::PersistentRootedId PersistentRootedId(aCx); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     79  JS::PersistentRootedObject PersistentRootedObject(aCx); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     80  JS::PersistentRootedScript PersistentRootedScript(aCx); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     81  JS::PersistentRootedString PersistentRootedString(aCx); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     82  JS::PersistentRootedSymbol PersistentRootedSymbol(aCx); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     83  JS::PersistentRootedBigInt PersistentRootedBigInt(aCx); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     84  JS::PersistentRootedValue PersistentRootedValue(aCx); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     85 
     86  JS::PersistentRootedIdVector PersistentRootedIdVector(aCx); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     87  JS::PersistentRootedObjectVector PersistentRootedObjectVector(aCx); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     88 
     89  JS::HandleFunction HandleFunction(RootedFunction); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     90  JS::HandleId HandleId(RootedId); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     91  JS::HandleObject HandleObject(RootedObject); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     92  JS::HandleScript HandleScript(RootedScript); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     93  JS::HandleString HandleString(RootedString); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     94  JS::HandleSymbol HandleSymbol(RootedSymbol); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     95  JS::HandleBigInt HandleBigInt(RootedBigInt); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     96  JS::HandleValue HandleValue(RootedValue); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     97  JS::HandleValueVector HandleValueVector(RootedValueVector); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     98  JS::HandleObjectVector HandleObjectVector(RootedObjectVector); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
     99  JS::HandleIdVector HandleIdVector(RootedIdVector); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
    100 
    101  JS::MutableHandleFunction MutableHandleFunction(&RootedFunction); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
    102  JS::MutableHandleId MutableHandleId(&RootedId); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
    103  JS::MutableHandleObject MutableHandleObject(&RootedObject); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
    104  JS::MutableHandleScript MutableHandleScript(&RootedScript); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
    105  JS::MutableHandleString MutableHandleString(&RootedString); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
    106  JS::MutableHandleSymbol MutableHandleSymbol(&RootedSymbol); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
    107  JS::MutableHandleBigInt MutableHandleBigInt(&RootedBigInt); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
    108  JS::MutableHandleValue MutableHandleValue(&RootedValue); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
    109  JS::MutableHandleValueVector MutableHandleValueVector(&RootedValueVector); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
    110  JS::MutableHandleObjectVector MutableHandleObjectVector(&RootedObjectVector); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
    111  JS::MutableHandleIdVector MutableHandleIdVector(&RootedIdVector); // expected-error {{The fully qualified types are preferred over the shorthand typedefs for JS::Handle/JS::Rooted types outside SpiderMonkey.}}
    112 
    113  // Examples of preferred forms
    114  JS::Rooted<JSObject*> FullRootedObject(aCx);
    115  JS::Rooted<JSFunction*> FullRootedFunction(aCx);
    116  JS::Rooted<JSScript*> FullRootedScript(aCx);
    117  JS::Rooted<JSString*> FullRootedString(aCx);
    118  JS::Rooted<JS::Symbol*> FullRootedSymbol(aCx);
    119  JS::Rooted<JS::BigInt*> FullRootedBigInt(aCx);
    120  JS::Rooted<JS::PropertyKey> FullRootedId(aCx);
    121  JS::Rooted<JS::Value> FullRootedValue(aCx);
    122 
    123  JS::RootedVector<JS::Value> FullRootedValueVector(aCx);
    124  JS::RootedVector<JSObject*> FullRootedObjectVector(aCx);
    125  JS::RootedVector<JS::PropertyKey> FullRootedIdVector(aCx);
    126 
    127  JS::PersistentRooted<JSFunction*> FullPersistentRootedFunction(aCx);
    128  JS::PersistentRooted<JS::PropertyKey> FullPersistentRootedId(aCx);
    129  JS::PersistentRooted<JSObject*> FullPersistentRootedObject(aCx);
    130  JS::PersistentRooted<JSScript*> FullPersistentRootedScript(aCx);
    131  JS::PersistentRooted<JSString*> FullPersistentRootedString(aCx);
    132  JS::PersistentRooted<JS::Symbol*> FullPersistentRootedSymbol(aCx);
    133  JS::PersistentRooted<JS::BigInt*> FullPersistentRootedBigInt(aCx);
    134  JS::PersistentRooted<JS::Value> FullPersistentRootedValue(aCx);
    135 
    136  JS::PersistentRootedVector<JS::PropertyKey> FullPersistentRootedIdVector(aCx);
    137  JS::PersistentRootedVector<JSObject*> FullPersistentRootedObjectVector(aCx);
    138 
    139  JS::Handle<JSFunction*> FullHandleFunction(FullRootedFunction);
    140  JS::Handle<JS::PropertyKey> FullHandleId(FullRootedId);
    141  JS::Handle<JSObject*> FullHandleObject(FullRootedObject);
    142  JS::Handle<JSScript*> FullHandleScript(FullRootedScript);
    143  JS::Handle<JSString*> FullHandleString(FullRootedString);
    144  JS::Handle<JS::Symbol*> FullHandleSymbol(FullRootedSymbol);
    145  JS::Handle<JS::BigInt*> FullHandleBigInt(FullRootedBigInt);
    146  JS::Handle<JS::Value> FullHandleValue(FullRootedValue);
    147  JS::Handle<JS::StackGCVector<JS::Value>> FullHandleValueVector(FullRootedValueVector);
    148  JS::Handle<JS::StackGCVector<JSObject*>> FullHandleObjectVector(FullRootedObjectVector);
    149  JS::Handle<JS::StackGCVector<JS::PropertyKey>> FullHandleIdVector(FullRootedIdVector);
    150  JS::HandleVector<JS::Value> FullHandleValueVectorShorter(FullRootedValueVector);
    151  JS::HandleVector<JSObject*> FullHandleObjectVectorShorter(FullRootedObjectVector);
    152  JS::HandleVector<JS::PropertyKey> FullHandleIdVectorShorter(FullRootedIdVector);
    153 
    154  JS::MutableHandle<JSFunction*> FullMutableHandleFunction(&FullRootedFunction);
    155  JS::MutableHandle<JS::PropertyKey> FullMutableHandleId(&FullRootedId);
    156  JS::MutableHandle<JSObject*> FullMutableHandleObject(&FullRootedObject);
    157  JS::MutableHandle<JSScript*> FullMutableHandleScript(&FullRootedScript);
    158  JS::MutableHandle<JSString*> FullMutableHandleString(&FullRootedString);
    159  JS::MutableHandle<JS::Symbol*> FullMutableHandleSymbol(&FullRootedSymbol);
    160  JS::MutableHandle<JS::BigInt*> FullMutableHandleBigInt(&FullRootedBigInt);
    161  JS::MutableHandle<JS::Value> FullMutableHandleValue(&FullRootedValue);
    162  JS::MutableHandle<JS::StackGCVector<JS::Value>> FullMutableHandleValueVector(&FullRootedValueVector);
    163  JS::MutableHandle<JS::StackGCVector<JSObject*>> FullMutableHandleObjectVector(&FullRootedObjectVector);
    164  JS::MutableHandle<JS::StackGCVector<JS::PropertyKey>> FullMutableHandleIdVector(&FullRootedIdVector);
    165  JS::MutableHandleVector<JS::Value> FullMutableHandleValueVectorShorter(&FullRootedValueVector);
    166  JS::MutableHandleVector<JSObject*> FullMutableHandleObjectVectorShorter(&FullRootedObjectVector);
    167  JS::MutableHandleVector<JS::PropertyKey> FullMutableHandleIdVectorShorter(&FullRootedIdVector);
    168 }