Merge branch 'master' into skip_ffi
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 750d93d..5fcade6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,8 +2,6 @@
* Add an analysis_options.yaml and fix or suppress all the complaints from it.
* Add unit tests using dart:ffi to compare formatting output to ICU.
* Bump SDK requirements up to 2.5.0 for dart:ffi availability.
- * Canonicalize the locale in the Intl.defaultLocale setter, so e.g. 'en-US'
- will get turned into the correct 'en_US'
* Attempt to compensate for erratic errors in DateTime creation better, and add
tests for the compensation.
* Add a MessageFormat class. It can prepares strings for display to users,
diff --git a/analysis_options.yaml b/analysis_options.yaml
index e98bb02..76203fd 100644
--- a/analysis_options.yaml
+++ b/analysis_options.yaml
@@ -1,3 +1,89 @@
analyzer:
exclude:
- - test/number_format_compact_icu_test.dart # broken due to ffi instability
+ - test/number_format_compact_icu_test.dart # TODO(240): Update for FFI changes
+
+errors:
+ dead_code: error
+ override_on_non_overriding_method: error
+ unused_element: error
+ unused_import: error
+ unused_local_variable: error
+linter:
+ rules:
+ - always_declare_return_types
+ - avoid_classes_with_only_static_members
+ - avoid_empty_else
+ - avoid_function_literals_in_foreach_calls
+ - avoid_init_to_null
+ - avoid_null_checks_in_equality_operators
+ - avoid_relative_lib_imports
+ - avoid_renaming_method_parameters
+ - avoid_return_types_on_setters
+ - avoid_returning_null_for_void
+ - avoid_shadowing_type_parameters
+ - avoid_single_cascade_in_expression_statements
+ - avoid_types_as_parameter_names
+ - avoid_unused_constructor_parameters
+ - await_only_futures
+ - camel_case_types
+ - cancel_subscriptions
+ - constant_identifier_names
+ - control_flow_in_finally
+ - curly_braces_in_flow_control_structures
+ - directives_ordering
+ - empty_catches
+ - empty_constructor_bodies
+ - empty_statements
+ - file_names
+ - hash_and_equals
+ - implementation_imports
+ - iterable_contains_unrelated_type
+ - library_names
+ - library_prefixes
+ - list_remove_unrelated_type
+ - literal_only_boolean_expressions
+ - no_duplicate_case_values
+ - non_constant_identifier_names
+ - null_closures
+ - omit_local_variable_types
+ - only_throw_errors
+ - overridden_fields
+ - package_api_docs
+ - package_names
+ - package_prefixed_library_names
+ - prefer_adjacent_string_concatenation
+ - prefer_conditional_assignment
+ - prefer_const_constructors
+ - prefer_contains
+ - prefer_equal_for_default_values
+ - prefer_final_fields
+ - prefer_generic_function_type_aliases
+ - prefer_initializing_formals
+ - prefer_interpolation_to_compose_strings
+ - prefer_iterable_whereType
+ - prefer_is_empty
+ - prefer_is_not_empty
+ - prefer_null_aware_operators
+ - prefer_single_quotes
+ - prefer_typing_uninitialized_variables
+ - recursive_getters
+ - slash_for_doc_comments
+ - test_types_in_equals
+ - throw_in_finally
+ - type_init_formals
+ - unawaited_futures
+ - unnecessary_brace_in_string_interps
+ - unnecessary_const
+ - unnecessary_getters_setters
+ - unnecessary_lambdas
+ - unnecessary_new
+ - unnecessary_null_aware_assignments
+ - unnecessary_null_in_if_null_operators
+ - unnecessary_parenthesis
+ - unnecessary_statements
+ - unnecessary_this
+ - unrelated_type_equality_checks
+ - use_function_type_syntax_for_parameters
+ - use_rethrow_when_possible
+ - valid_regexps
+ - void_checks
diff --git a/lib/intl.dart b/lib/intl.dart
index 7dc6f30..f4120c7 100644
--- a/lib/intl.dart
+++ b/lib/intl.dart
@@ -99,7 +99,7 @@
}
static set defaultLocale(String newLocale) {
- _defaultLocale = newLocale == null ? null : canonicalizedLocale(newLocale);
+ _defaultLocale = newLocale;
}
static String _defaultLocale;
diff --git a/lib/src/intl_helpers.dart b/lib/src/intl_helpers.dart
index 57edee8..a807d97 100644
--- a/lib/src/intl_helpers.dart
+++ b/lib/src/intl_helpers.dart
@@ -22,8 +22,10 @@
final F fallbackData;
UninitializedLocaleData(this.message, this.fallbackData);
+ bool _isFallback(String key) => Intl.canonicalizedLocale(key) == 'en_US';
+
F operator [](String key) =>
- (key == 'en_US') ? fallbackData : _throwException();
+ _isFallback(key) ? fallbackData : _throwException();
/// If a message is looked up before any locale initialization, record it,
/// and throw an exception with that information once the locale is
@@ -66,7 +68,7 @@
List<String> get keys => _throwException() as List<String>;
- bool containsKey(String key) => (key == 'en_US') ? true : _throwException();
+ bool containsKey(String key) => _isFallback(key) ? true : _throwException();
F _throwException() {
throw LocaleDataException('Locale data has not been initialized'