Index: src/flag-definitions.h |
diff --git a/src/flag-definitions.h b/src/flag-definitions.h |
index d161d55745b66bda313d211090197d1bc6f1e29b..d5ff24742683d373ad66105313490bdb800e68f5 100644 |
--- a/src/flag-definitions.h |
+++ b/src/flag-definitions.h |
@@ -156,10 +156,13 @@ struct MaybeBoolFlag { |
DEFINE_BOOL(use_strict, false, "enforce strict mode") |
DEFINE_BOOL(es_staging, false, "enable upcoming ES6+ features") |
-DEFINE_BOOL(harmony, false, "enable all harmony features (except proxies)") |
+DEFINE_BOOL(harmony, false, "enable all completed harmony features") |
DEFINE_IMPLICATION(harmony, es_staging) |
+// TODO(rossberg): activate once we have staged scoping: |
+// DEFINE_IMPLICATION(es_staging, harmony) |
-#define HARMONY_FEATURES(V) \ |
+// Features that are still work in progress (behind individual flags). |
+#define HARMONY_INPROGRESS(V) \ |
V(harmony_scoping, "harmony block scoping") \ |
V(harmony_modules, "harmony modules (implies block scoping)") \ |
V(harmony_arrays, "harmony arrays") \ |
@@ -167,42 +170,49 @@ DEFINE_IMPLICATION(harmony, es_staging) |
V(harmony_object_literals, "harmony object literal extensions") \ |
V(harmony_regexps, "reg-exp related harmony features") \ |
V(harmony_arrow_functions, "harmony arrow functions") \ |
- V(harmony_tostring, "harmony Symbol.toStringTag") |
+ V(harmony_tostring, "harmony Symbol.toStringTag") \ |
+ V(harmony_proxies, "harmony proxies") |
-#define STAGED_FEATURES(V) \ |
+// Features that are complete (but still behind --harmony/es-staging flag). |
+#define HARMONY_STAGED(V) \ |
V(harmony_strings, "harmony strings") \ |
- V(harmony_numeric_literals, "harmony numeric literals (0o77, 0b11)") |
+ V(harmony_numeric_literals, "harmony numeric literals") |
-#define SHIPPING_FEATURES(V) |
+// Features that are shipping (turned on by default, but internal flag remains). |
+#define HARMONY_SHIPPING(V) |
+ |
+// Once a shipping feature has proved stable in the wild, it will be dropped |
+// from HARMONY_SHIPPING, all occurrences of the FLAG_ variable are removed, |
+// and associated tests are moved from the harmony directory to the appropriate |
+// esN directory. |
-#define FLAG_FEATURES(id, description) \ |
- DEFINE_BOOL(id, false, "enable " #description) \ |
- DEFINE_IMPLICATION(harmony, id) |
-HARMONY_FEATURES(FLAG_FEATURES) |
-STAGED_FEATURES(FLAG_FEATURES) |
-#undef FLAG_FEATURES |
+#define FLAG_INPROGRESS_FEATURES(id, description) \ |
+ DEFINE_BOOL(id, false, "enable " #description) |
+HARMONY_INPROGRESS(FLAG_INPROGRESS_FEATURES) |
+#undef FLAG_INPROGRESS_FEATURES |
-#define FLAG_STAGED_FEATURES(id, description) DEFINE_IMPLICATION(es_staging, id) |
+// TODO(rossberg): temporary, remove once we have staged scoping. |
+// After that, --harmony will be synonymous to --es-staging. |
+DEFINE_IMPLICATION(harmony, harmony_scoping) |
-STAGED_FEATURES(FLAG_STAGED_FEATURES) |
+#define FLAG_STAGED_FEATURES(id, description) \ |
+ DEFINE_BOOL(id, false, "enable " #description) \ |
+ DEFINE_IMPLICATION(es_staging, id) |
+HARMONY_STAGED(FLAG_STAGED_FEATURES) |
#undef FLAG_STAGED_FEATURES |
#define FLAG_SHIPPING_FEATURES(id, description) \ |
DEFINE_BOOL_READONLY(id, true, "enable " #description) |
- |
-SHIPPING_FEATURES(FLAG_SHIPPING_FEATURES) |
+HARMONY_SHIPPING(FLAG_SHIPPING_FEATURES) |
#undef FLAG_SHIPPING_FEATURES |
+ |
// Feature dependencies. |
DEFINE_IMPLICATION(harmony_modules, harmony_scoping) |
DEFINE_IMPLICATION(harmony_classes, harmony_scoping) |
DEFINE_IMPLICATION(harmony_classes, harmony_object_literals) |
-DEFINE_BOOL(harmony_proxies, false, "enable harmony proxies") |
-// TODO(rossberg): Reenable when problems are sorted out. |
-// DEFINE_IMPLICATION(harmony, harmony_proxies) |
- |
// Flags for experimental implementation features. |
DEFINE_BOOL(compiled_keyed_generic_loads, false, |