1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2  * vim: set ts=8 sts=4 et sw=4 tw=99:
3  * This Source Code Form is subject to the terms of the Mozilla Public
4  * License, v. 2.0. If a copy of the MPL was not distributed with this
5  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 
7 /* Code related to various SpiderMonkey-specific language syntax extensions. */
8 
9 #ifndef frontend_LanguageExtensions_h
10 #define frontend_LanguageExtensions_h
11 
12 namespace js {
13 
14 /**
15  * Numeric identifiers for various deprecated language extensions.
16  *
17  * The initializer numbers are directly used in telemetry, so while it's okay
18  * to *remove* values as language extensions are removed from SpiderMonkey,
19  * it's *not* okay to compact or reorder them.  When an initializer falls into
20  * disuse, remove it without reassigning its value to a new or existing
21  * initializer.  The *only* initializer whose value should ever change is
22  * DeprecatedLanguageExtension::Count.
23  */
24 enum class DeprecatedLanguageExtension {
25   // NO LONGER USING 0
26   // NO LONGER USING 1
27   // NO LONGER USING 2
28   ExpressionClosure = 3,  // Added in JS 1.8
29                           // NO LONGER USING 4
30                           // NO LONGER USING 5
31                           // NO LONGER USING 6
32                           // NO LONGER USING 7
33                           // NO LONGER USING 8
34                           // NO LONGER USING 9
35                           // NO LONGER USING 10
36 
37   // Sentinel value.  MAY change as extension initializers are added (only to
38   // the end) above.
39   Count
40 };
41 
42 }  // namespace js
43 
44 #endif /* frontend_LanguageExtensions_h */
45