blob: 05f98247f13a961915b30ac7e00f91e0c0452ed3 [file] [log] [blame]
Yegor Jbanov2894fd82017-08-01 14:58:30 -07001# Specify analysis options.
2#
Michael Goderbauer88585ef2022-08-25 09:57:05 -07003# This file is a copy of analysis_options.yaml from flutter repo
Michael Goderbauerbb97da82024-01-03 15:16:49 -08004# as of 2023-12-18, but with some modifications marked with
Michael Goderbauer88585ef2022-08-25 09:57:05 -07005# "DIFFERENT FROM FLUTTER/FLUTTER" below. The file is expected to
6# be kept in sync with the master file from the flutter repo.
Yegor Jbanov2894fd82017-08-01 14:58:30 -07007
8analyzer:
Michael Goderbauer88585ef2022-08-25 09:57:05 -07009 language:
stuartmorganab626892023-01-31 12:11:36 -080010 strict-casts: true
Michael Goderbauerbb97da82024-01-03 15:16:49 -080011 strict-inference: true
Michael Goderbauer88585ef2022-08-25 09:57:05 -070012 strict-raw-types: true
Yegor Jbanov2894fd82017-08-01 14:58:30 -070013 errors:
Matan Lureya8642542024-02-14 04:19:26 -080014 # allow deprecated members (we do this because otherwise we have to annotate
15 # every member in every test, assert, etc, when we or the Dart SDK deprecates
16 # something (https://github.com/flutter/flutter/issues/143312)
17 deprecated_member_use: ignore
Michael Goderbauer88585ef2022-08-25 09:57:05 -070018 deprecated_member_use_from_same_package: ignore
Michael Goderbauer88585ef2022-08-25 09:57:05 -070019 exclude: # DIFFERENT FROM FLUTTER/FLUTTER
Maurice Parrish4eda7ad2022-04-14 07:19:47 -070020 # Ignore generated files
stuartmorgan2d484152023-01-31 15:25:20 -080021 - '**/*.g.dart'
Maurice Parrish4eda7ad2022-04-14 07:19:47 -070022 - '**/*.mocks.dart' # Mockito @GenerateMocks
Yegor Jbanov2894fd82017-08-01 14:58:30 -070023
24linter:
25 rules:
Michael Goderbauer88585ef2022-08-25 09:57:05 -070026 # This list is derived from the list of all available lints located at
Michael Goderbauerbb97da82024-01-03 15:16:49 -080027 # https://github.com/dart-lang/linter/blob/main/example/all.yaml
Greg Spencer70de3f62018-06-15 11:14:21 -070028 - always_declare_return_types
29 - always_put_control_body_on_new_line
30 # - always_put_required_named_parameters_first # we prefer having parameters in the same order as fields https://github.com/flutter/flutter/issues/10219
Greg Spencer70de3f62018-06-15 11:14:21 -070031 - always_specify_types
Michael Goderbauera164beb2021-03-11 13:40:43 -080032 # - always_use_package_imports # we do this commonly
Greg Spencer70de3f62018-06-15 11:14:21 -070033 - annotate_overrides
34 # - avoid_annotating_with_dynamic # conflicts with always_specify_types
Michael Goderbauer053ed442019-08-28 10:52:29 -070035 - avoid_bool_literals_in_conditional_expressions
Michael Goderbauer88585ef2022-08-25 09:57:05 -070036 # - avoid_catches_without_on_clauses # blocked on https://github.com/dart-lang/linter/issues/3023
37 # - avoid_catching_errors # blocked on https://github.com/dart-lang/linter/issues/3023
Michael Goderbauerbb97da82024-01-03 15:16:49 -080038 # - avoid_classes_with_only_static_members # we do this commonly for `abstract final class`es
Michael Goderbauer88585ef2022-08-25 09:57:05 -070039 - avoid_double_and_int_checks
40 - avoid_dynamic_calls
Yegor Jbanov2894fd82017-08-01 14:58:30 -070041 - avoid_empty_else
Michael Goderbauera164beb2021-03-11 13:40:43 -080042 - avoid_equals_and_hash_code_on_mutable_classes
Michael Goderbauer88585ef2022-08-25 09:57:05 -070043 - avoid_escaping_inner_quotes
Michael Goderbauer053ed442019-08-28 10:52:29 -070044 - avoid_field_initializers_in_const_classes
Michael Goderbauer88585ef2022-08-25 09:57:05 -070045 # - avoid_final_parameters # incompatible with prefer_final_parameters
Greg Spencer70de3f62018-06-15 11:14:21 -070046 - avoid_function_literals_in_foreach_calls
Michael Goderbauerbb97da82024-01-03 15:16:49 -080047 # - avoid_implementing_value_types # see https://github.com/dart-lang/linter/issues/4558
Greg Spencer70de3f62018-06-15 11:14:21 -070048 - avoid_init_to_null
Michael Goderbauer88585ef2022-08-25 09:57:05 -070049 - avoid_js_rounded_ints
50 # - avoid_multiple_declarations_per_line # seems to be a stylistic choice we don't subscribe to
Greg Spencer70de3f62018-06-15 11:14:21 -070051 - avoid_null_checks_in_equality_operators
Michael Goderbauer88585ef2022-08-25 09:57:05 -070052 # - avoid_positional_boolean_parameters # would have been nice to enable this but by now there's too many places that break it
53 - avoid_print
Greg Spencer70de3f62018-06-15 11:14:21 -070054 # - avoid_private_typedef_functions # we prefer having typedef (discussion in https://github.com/flutter/flutter/pull/16356)
Michael Goderbauer88585ef2022-08-25 09:57:05 -070055 - avoid_redundant_argument_values
Greg Spencer70de3f62018-06-15 11:14:21 -070056 - avoid_relative_lib_imports
57 - avoid_renaming_method_parameters
58 - avoid_return_types_on_setters
Michael Goderbauer053ed442019-08-28 10:52:29 -070059 - avoid_returning_null_for_void
Michael Goderbauer88585ef2022-08-25 09:57:05 -070060 # - avoid_returning_this # there are enough valid reasons to return `this` that this lint ends up with too many false positives
61 - avoid_setters_without_getters
Michael Goderbauera164beb2021-03-11 13:40:43 -080062 - avoid_shadowing_type_parameters
63 - avoid_single_cascade_in_expression_statements
Yegor Jbanov2894fd82017-08-01 14:58:30 -070064 - avoid_slow_async_io
Michael Goderbauera164beb2021-03-11 13:40:43 -080065 - avoid_type_to_string
Michael Goderbauer053ed442019-08-28 10:52:29 -070066 - avoid_types_as_parameter_names
Greg Spencer70de3f62018-06-15 11:14:21 -070067 # - avoid_types_on_closure_parameters # conflicts with always_specify_types
Michael Goderbauera164beb2021-03-11 13:40:43 -080068 - avoid_unnecessary_containers
Michael Goderbauer053ed442019-08-28 10:52:29 -070069 - avoid_unused_constructor_parameters
70 - avoid_void_async
Michael Goderbauer88585ef2022-08-25 09:57:05 -070071 # - avoid_web_libraries_in_flutter # we use web libraries in web-specific code, and our tests prevent us from using them elsewhere
Greg Spencer70de3f62018-06-15 11:14:21 -070072 - await_only_futures
Michael Goderbauera164beb2021-03-11 13:40:43 -080073 - camel_case_extensions
Greg Spencer70de3f62018-06-15 11:14:21 -070074 - camel_case_types
Yegor Jbanov2894fd82017-08-01 14:58:30 -070075 - cancel_subscriptions
Michael Goderbauer88585ef2022-08-25 09:57:05 -070076 # - cascade_invocations # doesn't match the typical style of this repo
Michael Goderbauera164beb2021-03-11 13:40:43 -080077 - cast_nullable_to_non_nullable
Michael Goderbauer053ed442019-08-28 10:52:29 -070078 # - close_sinks # not reliable enough
Kevin Moore06cd9e92023-09-12 17:37:24 -070079 - collection_methods_unrelated_type
Michael Goderbauerbb97da82024-01-03 15:16:49 -080080 - combinators_ordering
Michael Goderbauera164beb2021-03-11 13:40:43 -080081 # - comment_references # blocked on https://github.com/dart-lang/linter/issues/1142
Michael Goderbauer88585ef2022-08-25 09:57:05 -070082 - conditional_uri_does_not_exist
Michael Goderbauer053ed442019-08-28 10:52:29 -070083 # - constant_identifier_names # needs an opt-out https://github.com/dart-lang/linter/issues/204
Yegor Jbanov2894fd82017-08-01 14:58:30 -070084 - control_flow_in_finally
Michael Goderbauer88585ef2022-08-25 09:57:05 -070085 - curly_braces_in_flow_control_structures
Michael Goderbauerbb97da82024-01-03 15:16:49 -080086 - dangling_library_doc_comments
Michael Goderbauer88585ef2022-08-25 09:57:05 -070087 - depend_on_referenced_packages
Michael Goderbauera164beb2021-03-11 13:40:43 -080088 - deprecated_consistency
Michael Goderbauerbb97da82024-01-03 15:16:49 -080089 # - deprecated_member_use_from_same_package # we allow self-references to deprecated members
Michael Goderbauer88585ef2022-08-25 09:57:05 -070090 # - diagnostic_describe_all_properties # enabled only at the framework level (packages/flutter/lib)
Greg Spencer70de3f62018-06-15 11:14:21 -070091 - directives_ordering
Michael Goderbauerbb97da82024-01-03 15:16:49 -080092 # - discarded_futures # too many false positives, similar to unawaited_futures
Michael Goderbauer88585ef2022-08-25 09:57:05 -070093 # - do_not_use_environment # there are appropriate times to use the environment, especially in our tests and build logic
Greg Spencer70de3f62018-06-15 11:14:21 -070094 - empty_catches
95 - empty_constructor_bodies
Yegor Jbanov2894fd82017-08-01 14:58:30 -070096 - empty_statements
Michael Goderbauer88585ef2022-08-25 09:57:05 -070097 - eol_at_end_of_file
Michael Goderbauera164beb2021-03-11 13:40:43 -080098 - exhaustive_cases
99 - file_names
Michael Goderbauer053ed442019-08-28 10:52:29 -0700100 - flutter_style_todos
Yegor Jbanov2894fd82017-08-01 14:58:30 -0700101 - hash_and_equals
Greg Spencer70de3f62018-06-15 11:14:21 -0700102 - implementation_imports
Michael Goderbauerbb97da82024-01-03 15:16:49 -0800103 - implicit_call_tearoffs
104 - implicit_reopen
105 - invalid_case_patterns
Michael Goderbauera164beb2021-03-11 13:40:43 -0800106 # - join_return_with_assignment # not required by flutter style
107 - leading_newlines_in_multiline_strings
Michael Goderbauerbb97da82024-01-03 15:16:49 -0800108 - library_annotations
Greg Spencer70de3f62018-06-15 11:14:21 -0700109 - library_names
110 - library_prefixes
Michael Goderbauer88585ef2022-08-25 09:57:05 -0700111 - library_private_types_in_public_api
Michael Goderbauera164beb2021-03-11 13:40:43 -0800112 # - lines_longer_than_80_chars # not required by flutter style
Michael Goderbauerbb97da82024-01-03 15:16:49 -0800113 - literal_only_boolean_expressions
114 # - matching_super_parameters # blocked on https://github.com/dart-lang/language/issues/2509
Michael Goderbauera164beb2021-03-11 13:40:43 -0800115 - missing_whitespace_between_adjacent_strings
Yegor Jbanov2894fd82017-08-01 14:58:30 -0700116 - no_adjacent_strings_in_list
Michael Goderbauer88585ef2022-08-25 09:57:05 -0700117 - no_default_cases
Yegor Jbanov2894fd82017-08-01 14:58:30 -0700118 - no_duplicate_case_values
Michael Goderbauer88585ef2022-08-25 09:57:05 -0700119 - no_leading_underscores_for_library_prefixes
120 - no_leading_underscores_for_local_identifiers
Michael Goderbauerbb97da82024-01-03 15:16:49 -0800121 - no_literal_bool_comparisons
Michael Goderbauera164beb2021-03-11 13:40:43 -0800122 - no_logic_in_create_state
stuartmorgan2e4224e2023-01-31 16:17:56 -0800123 - no_runtimeType_toString # DIFFERENT FROM FLUTTER/FLUTTER
Michael Goderbauerbb97da82024-01-03 15:16:49 -0800124 - no_self_assignments
125 - no_wildcard_variable_uses
Yegor Jbanov2894fd82017-08-01 14:58:30 -0700126 - non_constant_identifier_names
Michael Goderbauer88585ef2022-08-25 09:57:05 -0700127 - noop_primitive_operations
Michael Goderbauera164beb2021-03-11 13:40:43 -0800128 - null_check_on_nullable_type_parameter
129 - null_closures
Yegor Jbanov2894fd82017-08-01 14:58:30 -0700130 # - omit_local_variable_types # opposite of always_specify_types
131 # - one_member_abstracts # too many false positives
Michael Goderbauer88585ef2022-08-25 09:57:05 -0700132 - only_throw_errors # this does get disabled in a few places where we have legacy code that uses strings et al
Yegor Jbanov2894fd82017-08-01 14:58:30 -0700133 - overridden_fields
Parker Lougheedbf751e62024-10-14 13:47:10 -0500134 # - package_api_docs # Deprecated (https://github.com/dart-lang/linter/issues/5107)
Greg Spencer70de3f62018-06-15 11:14:21 -0700135 - package_names
Yegor Jbanov2894fd82017-08-01 14:58:30 -0700136 - package_prefixed_library_names
137 # - parameter_assignments # we do this commonly
138 - prefer_adjacent_string_concatenation
Greg Spencer70de3f62018-06-15 11:14:21 -0700139 - prefer_asserts_in_initializer_lists
Michael Goderbauera164beb2021-03-11 13:40:43 -0800140 # - prefer_asserts_with_message # not required by flutter style
Yegor Jbanov2894fd82017-08-01 14:58:30 -0700141 - prefer_collection_literals
Greg Spencer70de3f62018-06-15 11:14:21 -0700142 - prefer_conditional_assignment
Yegor Jbanov2894fd82017-08-01 14:58:30 -0700143 - prefer_const_constructors
Greg Spencer70de3f62018-06-15 11:14:21 -0700144 - prefer_const_constructors_in_immutables
145 - prefer_const_declarations
146 - prefer_const_literals_to_create_immutables
Michael Goderbauera164beb2021-03-11 13:40:43 -0800147 # - prefer_constructors_over_static_methods # far too many false positives
Yegor Jbanov2894fd82017-08-01 14:58:30 -0700148 - prefer_contains
Michael Goderbauer053ed442019-08-28 10:52:29 -0700149 # - prefer_double_quotes # opposite of prefer_single_quotes
stuartmorgan5cc71d02024-05-26 08:47:23 -0400150 # - prefer_expression_function_bodies # conflicts with https://github.com/flutter/flutter/blob/master/docs/contributing/Style-guide-for-Flutter-repo.md#consider-using--for-short-functions-and-methods
Greg Spencer70de3f62018-06-15 11:14:21 -0700151 - prefer_final_fields
Michael Goderbauera164beb2021-03-11 13:40:43 -0800152 - prefer_final_in_for_each
Yegor Jbanov2894fd82017-08-01 14:58:30 -0700153 - prefer_final_locals
Michael Goderbauerbb97da82024-01-03 15:16:49 -0800154 # - prefer_final_parameters # adds too much verbosity
Michael Goderbauera164beb2021-03-11 13:40:43 -0800155 - prefer_for_elements_to_map_fromIterable
Greg Spencer70de3f62018-06-15 11:14:21 -0700156 - prefer_foreach
Michael Goderbauera164beb2021-03-11 13:40:43 -0800157 - prefer_function_declarations_over_variables
Greg Spencer70de3f62018-06-15 11:14:21 -0700158 - prefer_generic_function_type_aliases
Michael Goderbauera164beb2021-03-11 13:40:43 -0800159 - prefer_if_elements_to_conditional_expressions
Michael Goderbauer053ed442019-08-28 10:52:29 -0700160 - prefer_if_null_operators
Yegor Jbanov2894fd82017-08-01 14:58:30 -0700161 - prefer_initializing_formals
Michael Goderbauer053ed442019-08-28 10:52:29 -0700162 - prefer_inlined_adds
stuartmorgan5cc71d02024-05-26 08:47:23 -0400163 # - prefer_int_literals # conflicts with https://github.com/flutter/flutter/blob/master/docs/contributing/Style-guide-for-Flutter-repo.md#use-double-literals-for-double-constants
Michael Goderbauer88585ef2022-08-25 09:57:05 -0700164 - prefer_interpolation_to_compose_strings
Yegor Jbanov2894fd82017-08-01 14:58:30 -0700165 - prefer_is_empty
166 - prefer_is_not_empty
Michael Goderbauera164beb2021-03-11 13:40:43 -0800167 - prefer_is_not_operator
Michael Goderbauer053ed442019-08-28 10:52:29 -0700168 - prefer_iterable_whereType
stuartmorgan09205ca2024-01-08 17:15:14 -0800169 - prefer_mixin
Michael Goderbauer88585ef2022-08-25 09:57:05 -0700170 # - prefer_null_aware_method_calls # "call()" is confusing to people new to the language since it's not documented anywhere
Michael Goderbauera164beb2021-03-11 13:40:43 -0800171 - prefer_null_aware_operators
Michael Goderbauer88585ef2022-08-25 09:57:05 -0700172 - prefer_relative_imports
Greg Spencer70de3f62018-06-15 11:14:21 -0700173 - prefer_single_quotes
Michael Goderbauer053ed442019-08-28 10:52:29 -0700174 - prefer_spread_collections
Greg Spencer70de3f62018-06-15 11:14:21 -0700175 - prefer_typing_uninitialized_variables
Michael Goderbauer053ed442019-08-28 10:52:29 -0700176 - prefer_void_to_null
Michael Goderbauera164beb2021-03-11 13:40:43 -0800177 - provide_deprecation_message
Michael Goderbauer88585ef2022-08-25 09:57:05 -0700178 - public_member_api_docs # DIFFERENT FROM FLUTTER/FLUTTER
Greg Spencer70de3f62018-06-15 11:14:21 -0700179 - recursive_getters
Michael Goderbauerbb97da82024-01-03 15:16:49 -0800180 # - require_trailing_commas # would be nice, but requires a lot of manual work: 10,000+ code locations would need to be reformatted by hand after bulk fix is applied
Michael Goderbauer88585ef2022-08-25 09:57:05 -0700181 - secure_pubspec_urls
Michael Goderbauera164beb2021-03-11 13:40:43 -0800182 - sized_box_for_whitespace
Michael Goderbauerbb97da82024-01-03 15:16:49 -0800183 - sized_box_shrink_expand
Yegor Jbanov2894fd82017-08-01 14:58:30 -0700184 - slash_for_doc_comments
Michael Goderbauer88585ef2022-08-25 09:57:05 -0700185 - sort_child_properties_last
Yegor Jbanov2894fd82017-08-01 14:58:30 -0700186 - sort_constructors_first
Michael Goderbauer88585ef2022-08-25 09:57:05 -0700187 - sort_pub_dependencies # DIFFERENT FROM FLUTTER/FLUTTER: Flutter's use case for not sorting does not apply to this repository.
Yegor Jbanov2894fd82017-08-01 14:58:30 -0700188 - sort_unnamed_constructors_first
Greg Spencer70de3f62018-06-15 11:14:21 -0700189 - test_types_in_equals
190 - throw_in_finally
Michael Goderbauera164beb2021-03-11 13:40:43 -0800191 - tighten_type_of_initializing_formals
Yegor Jbanov2894fd82017-08-01 14:58:30 -0700192 # - type_annotate_public_apis # subset of always_specify_types
193 - type_init_formals
Michael Goderbauerbb97da82024-01-03 15:16:49 -0800194 - type_literal_in_constant_pattern
stuartmorgan97e3ba62023-05-24 08:39:26 -0700195 - unawaited_futures # DIFFERENT FROM FLUTTER/FLUTTER: It's disabled there for "too many false positives"; that's not an issue here, and missing awaits have caused production issues in plugins.
Michael Goderbauera164beb2021-03-11 13:40:43 -0800196 - unnecessary_await_in_return
Yegor Jbanov2894fd82017-08-01 14:58:30 -0700197 - unnecessary_brace_in_string_interps
Michael Goderbauerbb97da82024-01-03 15:16:49 -0800198 - unnecessary_breaks
Alexandre Ardhuin14ff2672018-10-05 22:52:16 +0200199 - unnecessary_const
Michael Goderbauer88585ef2022-08-25 09:57:05 -0700200 - unnecessary_constructor_name
Michael Goderbauera164beb2021-03-11 13:40:43 -0800201 # - unnecessary_final # conflicts with prefer_final_locals
Yegor Jbanov2894fd82017-08-01 14:58:30 -0700202 - unnecessary_getters_setters
Michael Goderbauer053ed442019-08-28 10:52:29 -0700203 # - unnecessary_lambdas # has false positives: https://github.com/dart-lang/linter/issues/498
Michael Goderbauer88585ef2022-08-25 09:57:05 -0700204 - unnecessary_late
Michael Goderbauerbb97da82024-01-03 15:16:49 -0800205 - unnecessary_library_directive
Alexandre Ardhuin14ff2672018-10-05 22:52:16 +0200206 - unnecessary_new
Yegor Jbanov2894fd82017-08-01 14:58:30 -0700207 - unnecessary_null_aware_assignments
Michael Goderbauer88585ef2022-08-25 09:57:05 -0700208 - unnecessary_null_aware_operator_on_extension_on_nullable
209 - unnecessary_null_checks
Yegor Jbanov2894fd82017-08-01 14:58:30 -0700210 - unnecessary_null_in_if_null_operators
Michael Goderbauera164beb2021-03-11 13:40:43 -0800211 - unnecessary_nullable_for_final_variable_declarations
Greg Spencer70de3f62018-06-15 11:14:21 -0700212 - unnecessary_overrides
213 - unnecessary_parenthesis
Michael Goderbauer88585ef2022-08-25 09:57:05 -0700214 # - unnecessary_raw_strings # what's "necessary" is a matter of opinion; consistency across strings can help readability more than this lint
Michael Goderbauer053ed442019-08-28 10:52:29 -0700215 - unnecessary_statements
Michael Goderbauera164beb2021-03-11 13:40:43 -0800216 - unnecessary_string_escapes
217 - unnecessary_string_interpolations
Yegor Jbanov2894fd82017-08-01 14:58:30 -0700218 - unnecessary_this
Michael Goderbauer88585ef2022-08-25 09:57:05 -0700219 - unnecessary_to_list_in_spreads
Michael Goderbauerbb97da82024-01-03 15:16:49 -0800220 - unreachable_from_main
Greg Spencer70de3f62018-06-15 11:14:21 -0700221 - unrelated_type_equality_checks
Michael Goderbauer88585ef2022-08-25 09:57:05 -0700222 - unsafe_html
223 - use_build_context_synchronously
Michael Goderbauerbb97da82024-01-03 15:16:49 -0800224 - use_colored_box
225 # - use_decorated_box # leads to bugs: DecoratedBox and Container are not equivalent (Container inserts extra padding)
226 - use_enums
Michael Goderbauer053ed442019-08-28 10:52:29 -0700227 - use_full_hex_values_for_flutter_colors
Michael Goderbauera164beb2021-03-11 13:40:43 -0800228 - use_function_type_syntax_for_parameters
Michael Goderbauer88585ef2022-08-25 09:57:05 -0700229 - use_if_null_to_convert_nulls_to_bools
Michael Goderbauera164beb2021-03-11 13:40:43 -0800230 - use_is_even_rather_than_modulo
231 - use_key_in_widget_constructors
232 - use_late_for_private_fields_and_variables
Michael Goderbauer88585ef2022-08-25 09:57:05 -0700233 - use_named_constants
Michael Goderbauera164beb2021-03-11 13:40:43 -0800234 - use_raw_strings
Yegor Jbanov2894fd82017-08-01 14:58:30 -0700235 - use_rethrow_when_possible
Michael Goderbauer88585ef2022-08-25 09:57:05 -0700236 - use_setters_to_change_properties
Michael Goderbauer053ed442019-08-28 10:52:29 -0700237 # - use_string_buffers # has false positives: https://github.com/dart-lang/sdk/issues/34182
Michael Goderbauerbb97da82024-01-03 15:16:49 -0800238 - use_string_in_part_of_directives
Michael Goderbauer88585ef2022-08-25 09:57:05 -0700239 - use_super_parameters
240 - use_test_throws_matchers
Yegor Jbanov2894fd82017-08-01 14:58:30 -0700241 # - use_to_and_as_if_applicable # has false positives, so we prefer to catch this by code-review
Greg Spencer70de3f62018-06-15 11:14:21 -0700242 - valid_regexps
Michael Goderbauera164beb2021-03-11 13:40:43 -0800243 - void_checks