diff --git a/features/functions.yml b/features/functions.yml new file mode 100644 index 00000000000..57cf253e46b --- /dev/null +++ b/features/functions.yml @@ -0,0 +1,45 @@ +name: Functions +description: "Functions are series of statements that can be called and return a value. The `function` keyword (as in `function () { }`) and arrow (`=>`) expression create functions. The JavaScript functions protocol includes default and rest parameters and binding to `this`." +spec: + - https://tc39.es/ecma262/multipage/ecmascript-language-functions-and-classes.html#sec-ecmascript-language-functions-and-classes + - https://tc39.es/ecma262/multipage/fundamental-objects.html#sec-function-objects +group: javascript +status: + compute_from: javascript.functions +compat_features: + - javascript.builtins.Function + - javascript.builtins.Function.Function + - javascript.builtins.Function.apply + - javascript.builtins.Function.apply.generic_arrays_as_arguments + - javascript.builtins.Function.bind + - javascript.builtins.Function.call + - javascript.builtins.Function.length + - javascript.builtins.Function.toString + - javascript.builtins.Function.length.configurable_true + - javascript.builtins.Function.name + - javascript.builtins.Function.name.configurable_true + - javascript.builtins.Function.name.inferred_names + - javascript.builtins.Function.@@hasInstance + - javascript.functions + - javascript.functions.arguments + - javascript.functions.arguments.length + - javascript.functions.arguments.@@iterator + - javascript.functions.arrow_functions + - javascript.functions.arrow_functions.trailing_comma + - javascript.functions.block_level_functions + - javascript.functions.default_parameters + - javascript.functions.default_parameters.destructured_parameter_with_default_value_assignment + - javascript.functions.default_parameters.parameters_without_defaults_after_default_parameters + - javascript.functions.get + - javascript.functions.get.computed_property_names + - javascript.functions.method_definitions + - javascript.functions.method_definitions.async_methods + - javascript.functions.method_definitions.generator_methods_not_constructable + - javascript.functions.rest_parameters + - javascript.functions.rest_parameters.destructuring + - javascript.functions.set + - javascript.functions.set.computed_property_names + - javascript.operators.function + - javascript.operators.function.trailing_comma + - javascript.statements.function + - javascript.statements.function.trailing_comma_in_parameters diff --git a/features/functions.yml.dist b/features/functions.yml.dist new file mode 100644 index 00000000000..c9b784ec1f3 --- /dev/null +++ b/features/functions.yml.dist @@ -0,0 +1,328 @@ +# Generated from: functions.yml +# Do not edit this file by hand. Edit the source file instead! + +status: + baseline: high + baseline_low_date: 2015-07-29 + baseline_high_date: 2018-01-29 + support: + chrome: "1" + chrome_android: "18" + edge: "12" + firefox: "1" + firefox_android: "4" + safari: "1" + safari_ios: "1" +compat_features: + # ⬇️ Same status as overall feature ⬇️ + # baseline: high + # baseline_low_date: 2015-07-29 + # baseline_high_date: 2018-01-29 + # support: + # chrome: "1" + # chrome_android: "18" + # edge: "12" + # firefox: "1" + # firefox_android: "4" + # safari: "1" + # safari_ios: "1" + - javascript.builtins.Function + - javascript.builtins.Function.Function + - javascript.builtins.Function.apply + - javascript.builtins.Function.call + - javascript.builtins.Function.length + - javascript.builtins.Function.toString + - javascript.functions + - javascript.functions.arguments + - javascript.functions.arguments.length + - javascript.operators.function + - javascript.statements.function + + # baseline: high + # baseline_low_date: 2015-07-29 + # baseline_high_date: 2018-01-29 + # support: + # chrome: "1" + # chrome_android: "18" + # edge: "12" + # firefox: "1.5" + # firefox_android: "4" + # safari: "3" + # safari_ios: "1" + - javascript.functions.get + - javascript.functions.set + + # baseline: high + # baseline_low_date: 2015-07-29 + # baseline_high_date: 2018-01-29 + # support: + # chrome: "7" + # chrome_android: "18" + # edge: "12" + # firefox: "4" + # firefox_android: "4" + # safari: "5.1" + # safari_ios: "6" + - javascript.builtins.Function.bind + + # baseline: high + # baseline_low_date: 2015-07-29 + # baseline_high_date: 2018-01-29 + # support: + # chrome: "17" + # chrome_android: "18" + # edge: "12" + # firefox: "4" + # firefox_android: "4" + # safari: "6" + # safari_ios: "6" + - javascript.builtins.Function.apply.generic_arrays_as_arguments + + # baseline: high + # baseline_low_date: 2015-09-30 + # baseline_high_date: 2018-03-30 + # support: + # chrome: "39" + # chrome_android: "39" + # edge: "12" + # firefox: "34" + # firefox_android: "34" + # safari: "9" + # safari_ios: "9" + - javascript.functions.method_definitions + + # baseline: high + # baseline_low_date: 2016-03-21 + # baseline_high_date: 2018-09-21 + # support: + # chrome: "42" + # chrome_android: "42" + # edge: "13" + # firefox: "43" + # firefox_android: "43" + # safari: "9.1" + # safari_ios: "9.3" + - javascript.functions.method_definitions.generator_methods_not_constructable + + # baseline: high + # baseline_low_date: 2016-03-21 + # baseline_high_date: 2018-09-21 + # support: + # chrome: "46" + # chrome_android: "46" + # edge: "12" + # firefox: "34" + # firefox_android: "34" + # safari: "9.1" + # safari_ios: "9.3" + - javascript.functions.get.computed_property_names + - javascript.functions.set.computed_property_names + + # baseline: high + # baseline_low_date: 2016-07-27 + # baseline_high_date: 2019-01-27 + # support: + # chrome: "52" + # chrome_android: "52" + # edge: "12" + # firefox: "46" + # firefox_android: "46" + # safari: "9" + # safari_ios: "9" + - javascript.functions.arguments.@@iterator + + # baseline: high + # baseline_low_date: 2016-08-02 + # baseline_high_date: 2019-02-02 + # support: + # chrome: "15" + # chrome_android: "18" + # edge: "14" + # firefox: "1" + # firefox_android: "4" + # safari: "6" + # safari_ios: "6" + - javascript.builtins.Function.name + + # baseline: high + # baseline_low_date: 2016-09-20 + # baseline_high_date: 2019-03-20 + # support: + # chrome: "43" + # chrome_android: "43" + # edge: "12" + # firefox: "37" + # firefox_android: "37" + # safari: "10" + # safari_ios: "10" + - javascript.builtins.Function.length.configurable_true + + # baseline: high + # baseline_low_date: 2016-09-20 + # baseline_high_date: 2019-03-20 + # support: + # chrome: "43" + # chrome_android: "43" + # edge: "14" + # firefox: "38" + # firefox_android: "38" + # safari: "10" + # safari_ios: "10" + - javascript.builtins.Function.name.configurable_true + + # baseline: high + # baseline_low_date: 2016-09-20 + # baseline_high_date: 2019-03-20 + # support: + # chrome: "45" + # chrome_android: "45" + # edge: "12" + # firefox: "22" + # firefox_android: "22" + # safari: "10" + # safari_ios: "10" + - javascript.functions.arrow_functions + + # baseline: high + # baseline_low_date: 2016-09-20 + # baseline_high_date: 2019-03-20 + # support: + # chrome: "47" + # chrome_android: "47" + # edge: "12" + # firefox: "15" + # firefox_android: "15" + # safari: "10" + # safari_ios: "10" + - javascript.functions.rest_parameters + + # baseline: high + # baseline_low_date: 2016-09-20 + # baseline_high_date: 2019-03-20 + # support: + # chrome: "49" + # chrome_android: "49" + # edge: "12" + # firefox: "46" + # firefox_android: "46" + # safari: "10" + # safari_ios: "10" + - javascript.functions.block_level_functions + + # baseline: high + # baseline_low_date: 2016-09-20 + # baseline_high_date: 2019-03-20 + # support: + # chrome: "49" + # chrome_android: "49" + # edge: "14" + # firefox: "15" + # firefox_android: "15" + # safari: "10" + # safari_ios: "10" + - javascript.functions.default_parameters + + # baseline: high + # baseline_low_date: 2016-09-20 + # baseline_high_date: 2019-03-20 + # support: + # chrome: "49" + # chrome_android: "49" + # edge: "14" + # firefox: "26" + # firefox_android: "26" + # safari: "10" + # safari_ios: "10" + - javascript.functions.default_parameters.parameters_without_defaults_after_default_parameters + + # baseline: high + # baseline_low_date: 2016-09-20 + # baseline_high_date: 2019-03-20 + # support: + # chrome: "49" + # chrome_android: "49" + # edge: "14" + # firefox: "41" + # firefox_android: "41" + # safari: "10" + # safari_ios: "10" + - javascript.functions.default_parameters.destructured_parameter_with_default_value_assignment + + # baseline: high + # baseline_low_date: 2017-04-05 + # baseline_high_date: 2019-10-05 + # support: + # chrome: "50" + # chrome_android: "50" + # edge: "15" + # firefox: "50" + # firefox_android: "50" + # safari: "10" + # safari_ios: "10" + - javascript.builtins.Function.@@hasInstance + + # baseline: high + # baseline_low_date: 2017-04-05 + # baseline_high_date: 2019-10-05 + # support: + # chrome: "55" + # chrome_android: "55" + # edge: "15" + # firefox: "52" + # firefox_android: "52" + # safari: "10.1" + # safari_ios: "10.3" + - javascript.functions.method_definitions.async_methods + + # baseline: high + # baseline_low_date: 2017-04-25 + # baseline_high_date: 2019-10-25 + # support: + # chrome: "58" + # chrome_android: "58" + # edge: "12" + # firefox: "52" + # firefox_android: "52" + # safari: "10" + # safari_ios: "10" + - javascript.functions.arrow_functions.trailing_comma + + # baseline: high + # baseline_low_date: 2017-04-25 + # baseline_high_date: 2019-10-25 + # support: + # chrome: "58" + # chrome_android: "58" + # edge: "14" + # firefox: "52" + # firefox_android: "52" + # safari: "10" + # safari_ios: "10" + - javascript.operators.function.trailing_comma + - javascript.statements.function.trailing_comma_in_parameters + + # baseline: high + # baseline_low_date: 2020-01-15 + # baseline_high_date: 2022-07-15 + # support: + # chrome: "49" + # chrome_android: "49" + # edge: "79" + # firefox: "52" + # firefox_android: "52" + # safari: "10" + # safari_ios: "10" + - javascript.functions.rest_parameters.destructuring + + # baseline: high + # baseline_low_date: 2020-01-15 + # baseline_high_date: 2022-07-15 + # support: + # chrome: "51" + # chrome_android: "51" + # edge: "79" + # firefox: "53" + # firefox_android: "53" + # safari: "10" + # safari_ios: "10" + - javascript.builtins.Function.name.inferred_names