From 2ce4a6b2a2b4a381550756d8c2742c7d1e477bae Mon Sep 17 00:00:00 2001 From: "swiftlintbot@jpsim.com" Date: Wed, 23 Mar 2022 21:05:09 +0000 Subject: [PATCH] Automated deployment to GitHub Pages: 83a86870bb7d9d8dc29dbfe3b200812597b187c1 --- Classes.html | 434 --- Classes/LinterCache.html | 447 --- Classes/RuleStorage.html | 409 -- Classes/SwiftLintFile.html | 770 ---- Enums.html | 563 --- Enums/AccessControlLevel.html | 564 --- Enums/ConfigurationError.html | 470 --- Enums/RuleIdentifier.html | 568 --- Enums/RuleKind.html | 500 --- Enums/RuleListError.html | 380 -- Enums/SwiftExpressionKind.html | 560 --- Enums/ViolationSeverity.html | 452 --- Extensions.html | 394 -- Extensions/FileManager.html | 404 -- Extensions/String.html | 463 --- Functions.html | 523 --- Global Variables.html | 370 -- Guides.html | 2212 ----------- Protocols.html | 848 ---- Protocols/ASTRule.html | 614 --- Protocols/AnalyzerRule.html | 383 -- Protocols/CollectingCorrectableRule.html | 621 --- Protocols/CollectingRule.html | 798 ---- Protocols/ConfigurationProviderRule.html | 519 --- Protocols/CorrectableRule.html | 565 --- Protocols/LintableFileManager.html | 471 --- Protocols/Reporter.html | 464 --- Protocols/Rule.html | 854 ---- Protocols/RuleConfiguration.html | 487 --- Protocols/SubstitutionCorrectableASTRule.html | 460 --- Protocols/SubstitutionCorrectableRule.html | 501 --- Reporters.html | 588 --- Rules.html | 348 -- Structs.html | 1075 ------ Structs/CSVReporter.html | 475 --- Structs/CheckstyleReporter.html | 476 --- Structs/CodeClimateReporter.html | 475 --- Structs/CollectedLinter.html | 603 --- Structs/Command.html | 597 --- Structs/Command/Action.html | 410 -- Structs/Command/Modifier.html | 440 --- Structs/Configuration.html | 1507 -------- Structs/Configuration/IndentationStyle.html | 440 --- Structs/Configuration/RulesMode.html | 442 --- Structs/Correction.html | 440 --- Structs/EmojiReporter.html | 475 --- Structs/Example.html | 854 ---- Structs/GitHubActionsLoggingReporter.html | 475 --- Structs/GitLabJUnitReporter.html | 475 --- Structs/HTMLReporter.html | 475 --- Structs/JSONReporter.html | 475 --- Structs/JUnitReporter.html | 475 --- Structs/Linter.html | 549 --- Structs/Location.html | 739 ---- Structs/MarkdownReporter.html | 475 --- Structs/Region.html | 728 ---- Structs/RuleDescription.html | 935 ----- Structs/RuleList.html | 521 --- Structs/RuleListDocumentation.html | 453 --- Structs/RuleParameter.html | 471 --- Structs/SonarQubeReporter.html | 475 --- Structs/SourceKittenDictionary.html | 531 --- Structs/StyleViolation.html | 746 ---- Structs/SwiftLintSyntaxMap.html | 459 --- Structs/SwiftLintSyntaxToken.html | 549 --- Structs/SwiftVersion.html | 711 ---- Structs/Version.html | 410 -- Structs/XcodeReporter.html | 475 --- Structs/YamlParser.html | 421 -- anonymous_argument_in_multiline_closure.html | 361 -- anyobject_protocol.html | 366 -- array_init.html | 410 -- attributes.html | 567 --- badge.svg | 28 - balanced_xctest_lifecycle.html | 421 -- block_based_kvo.html | 361 -- capture_variable.html | 466 --- class_delegate_protocol.html | 388 -- closing_brace.html | 355 -- closure_body_length.html | 835 ---- closure_end_indentation.html | 415 -- closure_parameter_position.html | 439 --- closure_spacing.html | 361 -- collection_alignment.html | 421 -- colon.html | 603 --- comma.html | 381 -- comment_spacing.html | 401 -- compiler_protocol_init.html | 357 -- computed_accessors_order.html | 542 --- conditional_returns_on_newline.html | 379 -- contains_over_filter_count.html | 408 -- contains_over_filter_is_empty.html | 384 -- contains_over_first_not_nil.html | 429 --- contains_over_range_nil_comparison.html | 357 -- control_statement.html | 460 --- convenience_type.html | 418 -- css/highlight.css | 200 - css/jazzy.css | 395 -- custom_rules.html | 343 -- cyclomatic_complexity.html | 396 -- deployment_target.html | 395 -- discarded_notification_center_observer.html | 387 -- discouraged_assert.html | 363 -- discouraged_direct_init.html | 377 -- discouraged_none_name.html | 473 --- discouraged_object_literal.html | 361 -- discouraged_optional_boolean.html | 727 ---- discouraged_optional_collection.html | 909 ----- .../Contents/Info.plist | 22 - .../Contents/Resources/Documents/Classes.html | 434 --- .../Documents/Classes/LinterCache.html | 447 --- .../Documents/Classes/RuleStorage.html | 409 -- .../Documents/Classes/SwiftLintFile.html | 770 ---- .../Contents/Resources/Documents/Enums.html | 563 --- .../Documents/Enums/AccessControlLevel.html | 564 --- .../Documents/Enums/ConfigurationError.html | 470 --- .../Documents/Enums/RuleIdentifier.html | 568 --- .../Resources/Documents/Enums/RuleKind.html | 500 --- .../Documents/Enums/RuleListError.html | 380 -- .../Documents/Enums/SwiftExpressionKind.html | 560 --- .../Documents/Enums/ViolationSeverity.html | 452 --- .../Resources/Documents/Extensions.html | 394 -- .../Documents/Extensions/FileManager.html | 404 -- .../Documents/Extensions/String.html | 463 --- .../Resources/Documents/Functions.html | 523 --- .../Resources/Documents/Global Variables.html | 370 -- .../Contents/Resources/Documents/Guides.html | 2212 ----------- .../Resources/Documents/Protocols.html | 848 ---- .../Documents/Protocols/ASTRule.html | 614 --- .../Documents/Protocols/AnalyzerRule.html | 383 -- .../Protocols/CollectingCorrectableRule.html | 621 --- .../Documents/Protocols/CollectingRule.html | 798 ---- .../Protocols/ConfigurationProviderRule.html | 519 --- .../Documents/Protocols/CorrectableRule.html | 565 --- .../Protocols/LintableFileManager.html | 471 --- .../Documents/Protocols/Reporter.html | 464 --- .../Resources/Documents/Protocols/Rule.html | 854 ---- .../Protocols/RuleConfiguration.html | 487 --- .../SubstitutionCorrectableASTRule.html | 460 --- .../SubstitutionCorrectableRule.html | 501 --- .../Resources/Documents/Reporters.html | 588 --- .../Contents/Resources/Documents/Rules.html | 348 -- .../Contents/Resources/Documents/Structs.html | 1075 ------ .../Documents/Structs/CSVReporter.html | 475 --- .../Documents/Structs/CheckstyleReporter.html | 476 --- .../Structs/CodeClimateReporter.html | 475 --- .../Documents/Structs/CollectedLinter.html | 603 --- .../Resources/Documents/Structs/Command.html | 597 --- .../Documents/Structs/Command/Action.html | 410 -- .../Documents/Structs/Command/Modifier.html | 440 --- .../Documents/Structs/Configuration.html | 1507 -------- .../Configuration/IndentationStyle.html | 440 --- .../Structs/Configuration/RulesMode.html | 442 --- .../Documents/Structs/Correction.html | 440 --- .../Documents/Structs/EmojiReporter.html | 475 --- .../Resources/Documents/Structs/Example.html | 854 ---- .../Structs/GitHubActionsLoggingReporter.html | 475 --- .../Structs/GitLabJUnitReporter.html | 475 --- .../Documents/Structs/HTMLReporter.html | 475 --- .../Documents/Structs/JSONReporter.html | 475 --- .../Documents/Structs/JUnitReporter.html | 475 --- .../Resources/Documents/Structs/Linter.html | 549 --- .../Resources/Documents/Structs/Location.html | 739 ---- .../Documents/Structs/MarkdownReporter.html | 475 --- .../Resources/Documents/Structs/Region.html | 728 ---- .../Documents/Structs/RuleDescription.html | 935 ----- .../Resources/Documents/Structs/RuleList.html | 521 --- .../Structs/RuleListDocumentation.html | 453 --- .../Documents/Structs/RuleParameter.html | 471 --- .../Documents/Structs/SonarQubeReporter.html | 475 --- .../Structs/SourceKittenDictionary.html | 531 --- .../Documents/Structs/StyleViolation.html | 746 ---- .../Documents/Structs/SwiftLintSyntaxMap.html | 459 --- .../Structs/SwiftLintSyntaxToken.html | 549 --- .../Documents/Structs/SwiftVersion.html | 711 ---- .../Resources/Documents/Structs/Version.html | 410 -- .../Documents/Structs/XcodeReporter.html | 475 --- .../Documents/Structs/YamlParser.html | 421 -- ...onymous_argument_in_multiline_closure.html | 361 -- .../Documents/anyobject_protocol.html | 366 -- .../Resources/Documents/array_init.html | 410 -- .../Resources/Documents/attributes.html | 567 --- .../Documents/balanced_xctest_lifecycle.html | 421 -- .../Resources/Documents/block_based_kvo.html | 361 -- .../Resources/Documents/capture_variable.html | 466 --- .../Documents/class_delegate_protocol.html | 388 -- .../Resources/Documents/closing_brace.html | 355 -- .../Documents/closure_body_length.html | 835 ---- .../Documents/closure_end_indentation.html | 415 -- .../Documents/closure_parameter_position.html | 439 --- .../Resources/Documents/closure_spacing.html | 361 -- .../Documents/collection_alignment.html | 421 -- .../Contents/Resources/Documents/colon.html | 603 --- .../Contents/Resources/Documents/comma.html | 381 -- .../Resources/Documents/comment_spacing.html | 401 -- .../Documents/compiler_protocol_init.html | 357 -- .../Documents/computed_accessors_order.html | 542 --- .../conditional_returns_on_newline.html | 379 -- .../Documents/contains_over_filter_count.html | 408 -- .../contains_over_filter_is_empty.html | 384 -- .../contains_over_first_not_nil.html | 429 --- .../contains_over_range_nil_comparison.html | 357 -- .../Documents/control_statement.html | 460 --- .../Resources/Documents/convenience_type.html | 418 -- .../Resources/Documents/css/highlight.css | 200 - .../Resources/Documents/css/jazzy.css | 395 -- .../Resources/Documents/custom_rules.html | 343 -- .../Documents/cyclomatic_complexity.html | 396 -- .../Documents/deployment_target.html | 395 -- ...iscarded_notification_center_observer.html | 387 -- .../Documents/discouraged_assert.html | 363 -- .../Documents/discouraged_direct_init.html | 377 -- .../Documents/discouraged_none_name.html | 473 --- .../Documents/discouraged_object_literal.html | 361 -- .../discouraged_optional_boolean.html | 727 ---- .../discouraged_optional_collection.html | 909 ----- .../Documents/duplicate_enum_cases.html | 363 -- .../Documents/duplicate_imports.html | 473 --- .../duplicated_key_in_dictionary_literal.html | 389 -- .../Resources/Documents/dynamic_inline.html | 377 -- .../Documents/empty_collection_literal.html | 369 -- .../Resources/Documents/empty_count.html | 396 -- .../Documents/empty_enum_arguments.html | 434 --- .../Resources/Documents/empty_parameters.html | 375 -- ...pty_parentheses_with_trailing_closure.html | 388 -- .../Resources/Documents/empty_string.html | 357 -- .../Documents/empty_xctest_method.html | 468 --- .../enum_case_associated_values_count.html | 363 -- .../Resources/Documents/expiring_todo.html | 384 -- .../Resources/Documents/explicit_acl.html | 437 --- .../Documents/explicit_enum_raw_value.html | 391 -- .../Resources/Documents/explicit_init.html | 377 -- .../Resources/Documents/explicit_self.html | 416 -- .../Documents/explicit_top_level_acl.html | 386 -- .../Documents/explicit_type_interface.html | 385 -- .../Documents/extension_access_modifier.html | 408 -- .../Resources/Documents/fallthrough.html | 357 -- .../Documents/fatal_error_message.html | 361 -- .../Resources/Documents/file_header.html | 366 -- .../Resources/Documents/file_length.html | 1957 ---------- .../Resources/Documents/file_name.html | 343 -- .../Documents/file_name_no_space.html | 343 -- .../Resources/Documents/file_types_order.html | 521 --- .../Resources/Documents/first_where.html | 385 -- .../Documents/flatmap_over_map_reduce.html | 351 -- .../Resources/Documents/for_where.html | 393 -- .../Resources/Documents/force_cast.html | 351 -- .../Resources/Documents/force_try.html | 353 -- .../Resources/Documents/force_unwrapping.html | 411 -- .../Documents/function_body_length.html | 343 -- .../function_default_parameter_at_end.html | 371 -- .../Documents/function_parameter_count.html | 376 -- .../Documents/generic_type_name.html | 453 --- .../Documents/ibinspectable_in_extension.html | 353 -- .../Documents/identical_operands.html | 749 ---- .../Resources/Documents/identifier_name.html | 395 -- .../Resources/Documents/img/carat.png | Bin 274 -> 0 bytes .../Contents/Resources/Documents/img/dash.png | Bin 1338 -> 0 bytes .../Contents/Resources/Documents/img/gh.png | Bin 1571 -> 0 bytes .../Resources/Documents/img/spinner.gif | Bin 1849 -> 0 bytes .../Resources/Documents/implicit_getter.html | 555 --- .../Resources/Documents/implicit_return.html | 429 --- .../implicitly_unwrapped_optional.html | 379 -- .../Documents/inclusive_language.html | 379 -- .../Documents/indentation_width.html | 383 -- .../Contents/Resources/Documents/index.html | 929 ----- .../Resources/Documents/inert_defer.html | 374 -- .../Resources/Documents/is_disjoint.html | 357 -- .../Documents/joined_default_parameter.html | 360 -- .../Contents/Resources/Documents/js/jazzy.js | 70 - .../Resources/Documents/js/jazzy.search.js | 70 - .../Resources/Documents/js/jquery.min.js | 2 - .../Resources/Documents/js/lunr.min.js | 6 - .../Documents/js/typeahead.jquery.js | 1694 -------- .../Resources/Documents/large_tuple.html | 492 --- .../Resources/Documents/last_where.html | 381 -- .../Documents/leading_whitespace.html | 355 -- .../legacy_cggeometry_functions.html | 425 -- .../Resources/Documents/legacy_constant.html | 385 -- .../Documents/legacy_constructor.html | 439 --- .../Resources/Documents/legacy_hashing.html | 398 -- .../Resources/Documents/legacy_multiple.html | 374 -- .../legacy_nsgeometry_functions.html | 421 -- .../Resources/Documents/legacy_objc_type.html | 358 -- .../Resources/Documents/legacy_random.html | 363 -- .../Documents/let_var_whitespace.html | 457 --- .../Resources/Documents/line_length.html | 363 -- .../literal_expression_end_indentation.html | 390 -- .../Documents/lower_acl_than_parent.html | 377 -- .../Contents/Resources/Documents/mark.html | 420 -- .../Resources/Documents/missing_docs.html | 387 -- .../Resources/Documents/modifier_order.html | 532 --- .../Documents/multiline_arguments.html | 406 -- .../multiline_arguments_brackets.html | 417 -- .../Documents/multiline_function_chains.html | 412 -- .../Documents/multiline_literal_brackets.html | 414 -- .../Documents/multiline_parameters.html | 692 ---- .../multiline_parameters_brackets.html | 407 -- ...ltiple_closures_with_trailing_closure.html | 379 -- .../Contents/Resources/Documents/nesting.html | 1034 ----- .../Resources/Documents/nimble_operator.html | 417 -- .../no_extension_access_modifier.html | 362 -- .../Documents/no_fallthrough_only.html | 481 --- .../Documents/no_grouping_extension.html | 373 -- .../Documents/no_space_in_method_call.html | 379 -- .../notification_center_detachment.html | 363 -- .../Documents/nslocalizedstring_key.html | 366 -- .../nslocalizedstring_require_bundle.html | 364 -- .../Documents/nsobject_prefer_isequal.html | 417 -- .../Resources/Documents/number_separator.html | 495 --- .../Resources/Documents/object_literal.html | 393 -- .../Resources/Documents/opening_brace.html | 485 --- .../Documents/operator_usage_whitespace.html | 482 --- .../Documents/operator_whitespace.html | 372 -- .../optional_enum_case_matching.html | 397 -- .../Documents/orphaned_doc_comment.html | 369 -- .../Documents/overridden_super_call.html | 397 -- .../Documents/override_in_extension.html | 382 -- .../Documents/pattern_matching_keywords.html | 413 -- .../Resources/Documents/prefer_nimble.html | 361 -- .../prefer_self_in_static_references.html | 391 -- .../prefer_self_type_over_type_of_self.html | 387 -- .../prefer_zero_over_explicit_init.html | 365 -- .../Documents/prefixed_toplevel_constant.html | 401 -- .../Resources/Documents/private_action.html | 430 --- .../Resources/Documents/private_outlet.html | 380 -- .../Documents/private_over_fileprivate.html | 381 -- .../Resources/Documents/private_subject.html | 495 --- .../Documents/private_unit_test.html | 413 -- .../prohibited_interface_builder.html | 361 -- .../Documents/prohibited_super_call.html | 394 -- .../protocol_property_accessors_order.html | 361 -- .../Documents/quick_discouraged_call.html | 595 --- .../quick_discouraged_focused_test.html | 408 -- .../quick_discouraged_pending_test.html | 414 -- ...aw_value_for_camel_cased_codable_enum.html | 410 -- .../Resources/Documents/reduce_boolean.html | 365 -- .../Resources/Documents/reduce_into.html | 406 -- .../Documents/redundant_discardable_let.html | 365 -- .../Documents/redundant_nil_coalescing.html | 354 -- .../Documents/redundant_objc_attribute.html | 481 --- .../redundant_optional_initialization.html | 406 -- .../redundant_set_access_control.html | 377 -- .../redundant_string_enum_value.html | 382 -- .../Documents/redundant_type_annotation.html | 392 -- .../Documents/redundant_void_return.html | 400 -- .../Resources/Documents/required_deinit.html | 390 -- .../Documents/required_enum_case.html | 388 -- .../Documents/return_arrow_whitespace.html | 389 -- .../Resources/Documents/rule-directory.html | 547 --- .../Contents/Resources/Documents/search.json | 1 - .../self_in_property_initialization.html | 393 -- .../Documents/shorthand_operator.html | 480 --- .../Documents/single_test_class.html | 375 -- .../Documents/sorted_first_last.html | 415 -- .../Resources/Documents/sorted_imports.html | 407 -- .../Documents/statement_position.html | 373 -- .../Resources/Documents/static_operator.html | 399 -- .../Documents/strict_fileprivate.html | 383 -- .../Resources/Documents/strong_iboutlet.html | 365 -- .../superfluous_disable_command.html | 343 -- .../Documents/switch_case_alignment.html | 421 -- .../Documents/switch_case_on_newline.html | 459 --- .../Resources/Documents/syntactic_sugar.html | 424 -- .../Documents/test_case_accessibility.html | 431 --- .../Contents/Resources/Documents/todo.html | 375 -- .../Resources/Documents/toggle_bool.html | 369 -- .../Resources/Documents/trailing_closure.html | 381 -- .../Resources/Documents/trailing_comma.html | 407 -- .../Resources/Documents/trailing_newline.html | 354 -- .../Documents/trailing_semicolon.html | 357 -- .../Documents/trailing_whitespace.html | 366 -- .../Resources/Documents/type_body_length.html | 3420 ----------------- .../Documents/type_contents_order.html | 559 --- .../Resources/Documents/type_name.html | 459 --- .../Documents/unavailable_function.html | 394 -- .../Documents/unneeded_break_in_switch.html | 406 -- ...eeded_parentheses_in_closure_argument.html | 392 -- .../Documents/unowned_variable_capture.html | 363 -- .../Documents/untyped_error_in_catch.html | 392 -- .../Documents/unused_capture_list.html | 435 --- .../Documents/unused_closure_parameter.html | 474 --- .../Documents/unused_control_flow_label.html | 388 -- .../Documents/unused_declaration.html | 577 --- .../Documents/unused_enumerated.html | 384 -- .../Resources/Documents/unused_import.html | 392 -- .../Documents/unused_optional_binding.html | 402 -- .../Documents/unused_setter_value.html | 434 --- .../Documents/valid_ibinspectable.html | 421 -- .../vertical_parameter_alignment.html | 396 -- .../vertical_parameter_alignment_on_call.html | 414 -- .../Documents/vertical_whitespace.html | 378 -- .../vertical_whitespace_between_cases.html | 432 --- .../vertical_whitespace_closing_braces.html | 423 -- .../vertical_whitespace_opening_braces.html | 459 --- .../Resources/Documents/void_return.html | 387 -- .../Resources/Documents/weak_delegate.html | 407 -- .../Documents/xct_specific_matcher.html | 489 --- .../Resources/Documents/xctfail_message.html | 361 -- .../Resources/Documents/yoda_condition.html | 385 -- .../Contents/Resources/docSet.dsidx | Bin 135168 -> 0 bytes docsets/SwiftLintFramework.tgz | Bin 430816 -> 0 bytes docsets/SwiftLintFramework.xml | 1 - duplicate_enum_cases.html | 363 -- duplicate_imports.html | 473 --- duplicated_key_in_dictionary_literal.html | 389 -- dynamic_inline.html | 377 -- empty_collection_literal.html | 369 -- empty_count.html | 396 -- empty_enum_arguments.html | 434 --- empty_parameters.html | 375 -- empty_parentheses_with_trailing_closure.html | 388 -- empty_string.html | 357 -- empty_xctest_method.html | 468 --- enum_case_associated_values_count.html | 363 -- expiring_todo.html | 384 -- explicit_acl.html | 437 --- explicit_enum_raw_value.html | 391 -- explicit_init.html | 377 -- explicit_self.html | 416 -- explicit_top_level_acl.html | 386 -- explicit_type_interface.html | 385 -- extension_access_modifier.html | 408 -- fallthrough.html | 357 -- fatal_error_message.html | 361 -- file_header.html | 366 -- file_length.html | 1957 ---------- file_name.html | 343 -- file_name_no_space.html | 343 -- file_types_order.html | 521 --- first_where.html | 385 -- flatmap_over_map_reduce.html | 351 -- for_where.html | 393 -- force_cast.html | 351 -- force_try.html | 353 -- force_unwrapping.html | 411 -- function_body_length.html | 343 -- function_default_parameter_at_end.html | 371 -- function_parameter_count.html | 376 -- generic_type_name.html | 453 --- ibinspectable_in_extension.html | 353 -- identical_operands.html | 749 ---- identifier_name.html | 395 -- img/carat.png | Bin 274 -> 0 bytes img/dash.png | Bin 1338 -> 0 bytes img/gh.png | Bin 1571 -> 0 bytes img/spinner.gif | Bin 1849 -> 0 bytes implicit_getter.html | 555 --- implicit_return.html | 429 --- implicitly_unwrapped_optional.html | 379 -- inclusive_language.html | 379 -- indentation_width.html | 383 -- index.html | 929 ----- inert_defer.html | 374 -- is_disjoint.html | 357 -- joined_default_parameter.html | 360 -- js/jazzy.js | 70 - js/jazzy.search.js | 70 - js/jquery.min.js | 2 - js/lunr.min.js | 6 - js/typeahead.jquery.js | 1694 -------- large_tuple.html | 492 --- last_where.html | 381 -- leading_whitespace.html | 355 -- legacy_cggeometry_functions.html | 425 -- legacy_constant.html | 385 -- legacy_constructor.html | 439 --- legacy_hashing.html | 398 -- legacy_multiple.html | 374 -- legacy_nsgeometry_functions.html | 421 -- legacy_objc_type.html | 358 -- legacy_random.html | 363 -- let_var_whitespace.html | 457 --- line_length.html | 363 -- literal_expression_end_indentation.html | 390 -- lower_acl_than_parent.html | 377 -- mark.html | 420 -- missing_docs.html | 387 -- modifier_order.html | 532 --- multiline_arguments.html | 406 -- multiline_arguments_brackets.html | 417 -- multiline_function_chains.html | 412 -- multiline_literal_brackets.html | 414 -- multiline_parameters.html | 692 ---- multiline_parameters_brackets.html | 407 -- multiple_closures_with_trailing_closure.html | 379 -- nesting.html | 1034 ----- nimble_operator.html | 417 -- no_extension_access_modifier.html | 362 -- no_fallthrough_only.html | 481 --- no_grouping_extension.html | 373 -- no_space_in_method_call.html | 379 -- notification_center_detachment.html | 363 -- nslocalizedstring_key.html | 366 -- nslocalizedstring_require_bundle.html | 364 -- nsobject_prefer_isequal.html | 417 -- number_separator.html | 495 --- object_literal.html | 393 -- opening_brace.html | 485 --- operator_usage_whitespace.html | 482 --- operator_whitespace.html | 372 -- optional_enum_case_matching.html | 397 -- orphaned_doc_comment.html | 369 -- overridden_super_call.html | 397 -- override_in_extension.html | 382 -- pattern_matching_keywords.html | 413 -- prefer_nimble.html | 361 -- prefer_self_in_static_references.html | 391 -- prefer_self_type_over_type_of_self.html | 387 -- prefer_zero_over_explicit_init.html | 365 -- prefixed_toplevel_constant.html | 401 -- private_action.html | 430 --- private_outlet.html | 380 -- private_over_fileprivate.html | 381 -- private_subject.html | 495 --- private_unit_test.html | 413 -- prohibited_interface_builder.html | 361 -- prohibited_super_call.html | 394 -- protocol_property_accessors_order.html | 361 -- quick_discouraged_call.html | 595 --- quick_discouraged_focused_test.html | 408 -- quick_discouraged_pending_test.html | 414 -- raw_value_for_camel_cased_codable_enum.html | 410 -- reduce_boolean.html | 365 -- reduce_into.html | 406 -- redundant_discardable_let.html | 365 -- redundant_nil_coalescing.html | 354 -- redundant_objc_attribute.html | 481 --- redundant_optional_initialization.html | 406 -- redundant_set_access_control.html | 377 -- redundant_string_enum_value.html | 382 -- redundant_type_annotation.html | 392 -- redundant_void_return.html | 400 -- required_deinit.html | 390 -- required_enum_case.html | 388 -- return_arrow_whitespace.html | 389 -- rule-directory.html | 547 --- search.json | 1 - self_in_property_initialization.html | 393 -- shorthand_operator.html | 480 --- single_test_class.html | 375 -- sorted_first_last.html | 415 -- sorted_imports.html | 407 -- statement_position.html | 373 -- static_operator.html | 399 -- strict_fileprivate.html | 383 -- strong_iboutlet.html | 365 -- superfluous_disable_command.html | 343 -- switch_case_alignment.html | 421 -- switch_case_on_newline.html | 459 --- syntactic_sugar.html | 424 -- test_case_accessibility.html | 431 --- todo.html | 375 -- toggle_bool.html | 369 -- trailing_closure.html | 381 -- trailing_comma.html | 407 -- trailing_newline.html | 354 -- trailing_semicolon.html | 357 -- trailing_whitespace.html | 366 -- type_body_length.html | 3420 ----------------- type_contents_order.html | 559 --- type_name.html | 459 --- unavailable_function.html | 394 -- undocumented.json | 6 - unneeded_break_in_switch.html | 406 -- unneeded_parentheses_in_closure_argument.html | 392 -- unowned_variable_capture.html | 363 -- untyped_error_in_catch.html | 392 -- unused_capture_list.html | 435 --- unused_closure_parameter.html | 474 --- unused_control_flow_label.html | 388 -- unused_declaration.html | 577 --- unused_enumerated.html | 384 -- unused_import.html | 392 -- unused_optional_binding.html | 402 -- unused_setter_value.html | 434 --- valid_ibinspectable.html | 421 -- vertical_parameter_alignment.html | 396 -- vertical_parameter_alignment_on_call.html | 414 -- vertical_whitespace.html | 378 -- vertical_whitespace_between_cases.html | 432 --- vertical_whitespace_closing_braces.html | 423 -- vertical_whitespace_opening_braces.html | 459 --- void_return.html | 387 -- weak_delegate.html | 407 -- xct_specific_matcher.html | 489 --- xctfail_message.html | 361 -- yoda_condition.html | 385 -- 588 files changed, 269411 deletions(-) delete mode 100644 Classes.html delete mode 100644 Classes/LinterCache.html delete mode 100644 Classes/RuleStorage.html delete mode 100644 Classes/SwiftLintFile.html delete mode 100644 Enums.html delete mode 100644 Enums/AccessControlLevel.html delete mode 100644 Enums/ConfigurationError.html delete mode 100644 Enums/RuleIdentifier.html delete mode 100644 Enums/RuleKind.html delete mode 100644 Enums/RuleListError.html delete mode 100644 Enums/SwiftExpressionKind.html delete mode 100644 Enums/ViolationSeverity.html delete mode 100644 Extensions.html delete mode 100644 Extensions/FileManager.html delete mode 100644 Extensions/String.html delete mode 100644 Functions.html delete mode 100644 Global Variables.html delete mode 100644 Guides.html delete mode 100644 Protocols.html delete mode 100644 Protocols/ASTRule.html delete mode 100644 Protocols/AnalyzerRule.html delete mode 100644 Protocols/CollectingCorrectableRule.html delete mode 100644 Protocols/CollectingRule.html delete mode 100644 Protocols/ConfigurationProviderRule.html delete mode 100644 Protocols/CorrectableRule.html delete mode 100644 Protocols/LintableFileManager.html delete mode 100644 Protocols/Reporter.html delete mode 100644 Protocols/Rule.html delete mode 100644 Protocols/RuleConfiguration.html delete mode 100644 Protocols/SubstitutionCorrectableASTRule.html delete mode 100644 Protocols/SubstitutionCorrectableRule.html delete mode 100644 Reporters.html delete mode 100644 Rules.html delete mode 100644 Structs.html delete mode 100644 Structs/CSVReporter.html delete mode 100644 Structs/CheckstyleReporter.html delete mode 100644 Structs/CodeClimateReporter.html delete mode 100644 Structs/CollectedLinter.html delete mode 100644 Structs/Command.html delete mode 100644 Structs/Command/Action.html delete mode 100644 Structs/Command/Modifier.html delete mode 100644 Structs/Configuration.html delete mode 100644 Structs/Configuration/IndentationStyle.html delete mode 100644 Structs/Configuration/RulesMode.html delete mode 100644 Structs/Correction.html delete mode 100644 Structs/EmojiReporter.html delete mode 100644 Structs/Example.html delete mode 100644 Structs/GitHubActionsLoggingReporter.html delete mode 100644 Structs/GitLabJUnitReporter.html delete mode 100644 Structs/HTMLReporter.html delete mode 100644 Structs/JSONReporter.html delete mode 100644 Structs/JUnitReporter.html delete mode 100644 Structs/Linter.html delete mode 100644 Structs/Location.html delete mode 100644 Structs/MarkdownReporter.html delete mode 100644 Structs/Region.html delete mode 100644 Structs/RuleDescription.html delete mode 100644 Structs/RuleList.html delete mode 100644 Structs/RuleListDocumentation.html delete mode 100644 Structs/RuleParameter.html delete mode 100644 Structs/SonarQubeReporter.html delete mode 100644 Structs/SourceKittenDictionary.html delete mode 100644 Structs/StyleViolation.html delete mode 100644 Structs/SwiftLintSyntaxMap.html delete mode 100644 Structs/SwiftLintSyntaxToken.html delete mode 100644 Structs/SwiftVersion.html delete mode 100644 Structs/Version.html delete mode 100644 Structs/XcodeReporter.html delete mode 100644 Structs/YamlParser.html delete mode 100644 anonymous_argument_in_multiline_closure.html delete mode 100644 anyobject_protocol.html delete mode 100644 array_init.html delete mode 100644 attributes.html delete mode 100644 badge.svg delete mode 100644 balanced_xctest_lifecycle.html delete mode 100644 block_based_kvo.html delete mode 100644 capture_variable.html delete mode 100644 class_delegate_protocol.html delete mode 100644 closing_brace.html delete mode 100644 closure_body_length.html delete mode 100644 closure_end_indentation.html delete mode 100644 closure_parameter_position.html delete mode 100644 closure_spacing.html delete mode 100644 collection_alignment.html delete mode 100644 colon.html delete mode 100644 comma.html delete mode 100644 comment_spacing.html delete mode 100644 compiler_protocol_init.html delete mode 100644 computed_accessors_order.html delete mode 100644 conditional_returns_on_newline.html delete mode 100644 contains_over_filter_count.html delete mode 100644 contains_over_filter_is_empty.html delete mode 100644 contains_over_first_not_nil.html delete mode 100644 contains_over_range_nil_comparison.html delete mode 100644 control_statement.html delete mode 100644 convenience_type.html delete mode 100644 css/highlight.css delete mode 100644 css/jazzy.css delete mode 100644 custom_rules.html delete mode 100644 cyclomatic_complexity.html delete mode 100644 deployment_target.html delete mode 100644 discarded_notification_center_observer.html delete mode 100644 discouraged_assert.html delete mode 100644 discouraged_direct_init.html delete mode 100644 discouraged_none_name.html delete mode 100644 discouraged_object_literal.html delete mode 100644 discouraged_optional_boolean.html delete mode 100644 discouraged_optional_collection.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Info.plist delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Classes.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Classes/LinterCache.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Classes/RuleStorage.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Classes/SwiftLintFile.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Enums.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Enums/AccessControlLevel.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Enums/ConfigurationError.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Enums/RuleIdentifier.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Enums/RuleKind.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Enums/RuleListError.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Enums/SwiftExpressionKind.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Enums/ViolationSeverity.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Extensions.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Extensions/FileManager.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Extensions/String.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Functions.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Global Variables.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Guides.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/ASTRule.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/AnalyzerRule.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/CollectingCorrectableRule.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/CollectingRule.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/ConfigurationProviderRule.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/CorrectableRule.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/LintableFileManager.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/Reporter.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/Rule.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/RuleConfiguration.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/SubstitutionCorrectableASTRule.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/SubstitutionCorrectableRule.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Reporters.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Rules.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/CSVReporter.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/CheckstyleReporter.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/CodeClimateReporter.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/CollectedLinter.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Command.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Command/Action.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Command/Modifier.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Configuration.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Configuration/IndentationStyle.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Configuration/RulesMode.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Correction.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/EmojiReporter.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Example.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/GitHubActionsLoggingReporter.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/GitLabJUnitReporter.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/HTMLReporter.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/JSONReporter.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/JUnitReporter.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Linter.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Location.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/MarkdownReporter.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Region.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/RuleDescription.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/RuleList.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/RuleListDocumentation.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/RuleParameter.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/SonarQubeReporter.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/SourceKittenDictionary.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/StyleViolation.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/SwiftLintSyntaxMap.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/SwiftLintSyntaxToken.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/SwiftVersion.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Version.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/XcodeReporter.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/YamlParser.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/anonymous_argument_in_multiline_closure.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/anyobject_protocol.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/array_init.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/attributes.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/balanced_xctest_lifecycle.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/block_based_kvo.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/capture_variable.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/class_delegate_protocol.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/closing_brace.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/closure_body_length.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/closure_end_indentation.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/closure_parameter_position.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/closure_spacing.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/collection_alignment.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/colon.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/comma.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/comment_spacing.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/compiler_protocol_init.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/computed_accessors_order.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/conditional_returns_on_newline.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/contains_over_filter_count.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/contains_over_filter_is_empty.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/contains_over_first_not_nil.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/contains_over_range_nil_comparison.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/control_statement.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/convenience_type.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/css/highlight.css delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/css/jazzy.css delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/custom_rules.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/cyclomatic_complexity.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/deployment_target.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/discarded_notification_center_observer.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/discouraged_assert.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/discouraged_direct_init.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/discouraged_none_name.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/discouraged_object_literal.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/discouraged_optional_boolean.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/discouraged_optional_collection.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/duplicate_enum_cases.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/duplicate_imports.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/duplicated_key_in_dictionary_literal.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/dynamic_inline.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/empty_collection_literal.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/empty_count.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/empty_enum_arguments.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/empty_parameters.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/empty_parentheses_with_trailing_closure.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/empty_string.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/empty_xctest_method.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/enum_case_associated_values_count.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/expiring_todo.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/explicit_acl.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/explicit_enum_raw_value.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/explicit_init.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/explicit_self.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/explicit_top_level_acl.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/explicit_type_interface.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/extension_access_modifier.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/fallthrough.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/fatal_error_message.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/file_header.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/file_length.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/file_name.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/file_name_no_space.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/file_types_order.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/first_where.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/flatmap_over_map_reduce.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/for_where.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/force_cast.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/force_try.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/force_unwrapping.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/function_body_length.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/function_default_parameter_at_end.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/function_parameter_count.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/generic_type_name.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/ibinspectable_in_extension.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/identical_operands.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/identifier_name.html delete mode 100755 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/img/carat.png delete mode 100755 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/img/dash.png delete mode 100755 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/img/gh.png delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/img/spinner.gif delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/implicit_getter.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/implicit_return.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/implicitly_unwrapped_optional.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/inclusive_language.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/indentation_width.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/index.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/inert_defer.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/is_disjoint.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/joined_default_parameter.html delete mode 100755 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/js/jazzy.js delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/js/jazzy.search.js delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/js/jquery.min.js delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/js/lunr.min.js delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/js/typeahead.jquery.js delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/large_tuple.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/last_where.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/leading_whitespace.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_cggeometry_functions.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_constant.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_constructor.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_hashing.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_multiple.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_nsgeometry_functions.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_objc_type.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_random.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/let_var_whitespace.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/line_length.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/literal_expression_end_indentation.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/lower_acl_than_parent.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/mark.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/missing_docs.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/modifier_order.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_arguments.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_arguments_brackets.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_function_chains.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_literal_brackets.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_parameters.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_parameters_brackets.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiple_closures_with_trailing_closure.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/nesting.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/nimble_operator.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/no_extension_access_modifier.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/no_fallthrough_only.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/no_grouping_extension.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/no_space_in_method_call.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/notification_center_detachment.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/nslocalizedstring_key.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/nslocalizedstring_require_bundle.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/nsobject_prefer_isequal.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/number_separator.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/object_literal.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/opening_brace.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/operator_usage_whitespace.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/operator_whitespace.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/optional_enum_case_matching.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/orphaned_doc_comment.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/overridden_super_call.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/override_in_extension.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/pattern_matching_keywords.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prefer_nimble.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prefer_self_in_static_references.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prefer_self_type_over_type_of_self.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prefer_zero_over_explicit_init.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prefixed_toplevel_constant.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/private_action.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/private_outlet.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/private_over_fileprivate.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/private_subject.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/private_unit_test.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prohibited_interface_builder.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prohibited_super_call.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/protocol_property_accessors_order.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/quick_discouraged_call.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/quick_discouraged_focused_test.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/quick_discouraged_pending_test.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/raw_value_for_camel_cased_codable_enum.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/reduce_boolean.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/reduce_into.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_discardable_let.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_nil_coalescing.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_objc_attribute.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_optional_initialization.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_set_access_control.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_string_enum_value.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_type_annotation.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_void_return.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/required_deinit.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/required_enum_case.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/return_arrow_whitespace.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/rule-directory.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/search.json delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/self_in_property_initialization.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/shorthand_operator.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/single_test_class.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/sorted_first_last.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/sorted_imports.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/statement_position.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/static_operator.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/strict_fileprivate.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/strong_iboutlet.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/superfluous_disable_command.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/switch_case_alignment.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/switch_case_on_newline.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/syntactic_sugar.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/test_case_accessibility.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/todo.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/toggle_bool.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/trailing_closure.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/trailing_comma.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/trailing_newline.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/trailing_semicolon.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/trailing_whitespace.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/type_body_length.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/type_contents_order.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/type_name.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unavailable_function.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unneeded_break_in_switch.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unneeded_parentheses_in_closure_argument.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unowned_variable_capture.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/untyped_error_in_catch.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_capture_list.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_closure_parameter.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_control_flow_label.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_declaration.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_enumerated.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_import.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_optional_binding.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_setter_value.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/valid_ibinspectable.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_parameter_alignment.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_parameter_alignment_on_call.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_whitespace.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_whitespace_between_cases.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_whitespace_closing_braces.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_whitespace_opening_braces.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/void_return.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/weak_delegate.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/xct_specific_matcher.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/xctfail_message.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/Documents/yoda_condition.html delete mode 100644 docsets/SwiftLintFramework.docset/Contents/Resources/docSet.dsidx delete mode 100644 docsets/SwiftLintFramework.tgz delete mode 100644 docsets/SwiftLintFramework.xml delete mode 100644 duplicate_enum_cases.html delete mode 100644 duplicate_imports.html delete mode 100644 duplicated_key_in_dictionary_literal.html delete mode 100644 dynamic_inline.html delete mode 100644 empty_collection_literal.html delete mode 100644 empty_count.html delete mode 100644 empty_enum_arguments.html delete mode 100644 empty_parameters.html delete mode 100644 empty_parentheses_with_trailing_closure.html delete mode 100644 empty_string.html delete mode 100644 empty_xctest_method.html delete mode 100644 enum_case_associated_values_count.html delete mode 100644 expiring_todo.html delete mode 100644 explicit_acl.html delete mode 100644 explicit_enum_raw_value.html delete mode 100644 explicit_init.html delete mode 100644 explicit_self.html delete mode 100644 explicit_top_level_acl.html delete mode 100644 explicit_type_interface.html delete mode 100644 extension_access_modifier.html delete mode 100644 fallthrough.html delete mode 100644 fatal_error_message.html delete mode 100644 file_header.html delete mode 100644 file_length.html delete mode 100644 file_name.html delete mode 100644 file_name_no_space.html delete mode 100644 file_types_order.html delete mode 100644 first_where.html delete mode 100644 flatmap_over_map_reduce.html delete mode 100644 for_where.html delete mode 100644 force_cast.html delete mode 100644 force_try.html delete mode 100644 force_unwrapping.html delete mode 100644 function_body_length.html delete mode 100644 function_default_parameter_at_end.html delete mode 100644 function_parameter_count.html delete mode 100644 generic_type_name.html delete mode 100644 ibinspectable_in_extension.html delete mode 100644 identical_operands.html delete mode 100644 identifier_name.html delete mode 100755 img/carat.png delete mode 100755 img/dash.png delete mode 100755 img/gh.png delete mode 100644 img/spinner.gif delete mode 100644 implicit_getter.html delete mode 100644 implicit_return.html delete mode 100644 implicitly_unwrapped_optional.html delete mode 100644 inclusive_language.html delete mode 100644 indentation_width.html delete mode 100644 index.html delete mode 100644 inert_defer.html delete mode 100644 is_disjoint.html delete mode 100644 joined_default_parameter.html delete mode 100755 js/jazzy.js delete mode 100644 js/jazzy.search.js delete mode 100644 js/jquery.min.js delete mode 100644 js/lunr.min.js delete mode 100644 js/typeahead.jquery.js delete mode 100644 large_tuple.html delete mode 100644 last_where.html delete mode 100644 leading_whitespace.html delete mode 100644 legacy_cggeometry_functions.html delete mode 100644 legacy_constant.html delete mode 100644 legacy_constructor.html delete mode 100644 legacy_hashing.html delete mode 100644 legacy_multiple.html delete mode 100644 legacy_nsgeometry_functions.html delete mode 100644 legacy_objc_type.html delete mode 100644 legacy_random.html delete mode 100644 let_var_whitespace.html delete mode 100644 line_length.html delete mode 100644 literal_expression_end_indentation.html delete mode 100644 lower_acl_than_parent.html delete mode 100644 mark.html delete mode 100644 missing_docs.html delete mode 100644 modifier_order.html delete mode 100644 multiline_arguments.html delete mode 100644 multiline_arguments_brackets.html delete mode 100644 multiline_function_chains.html delete mode 100644 multiline_literal_brackets.html delete mode 100644 multiline_parameters.html delete mode 100644 multiline_parameters_brackets.html delete mode 100644 multiple_closures_with_trailing_closure.html delete mode 100644 nesting.html delete mode 100644 nimble_operator.html delete mode 100644 no_extension_access_modifier.html delete mode 100644 no_fallthrough_only.html delete mode 100644 no_grouping_extension.html delete mode 100644 no_space_in_method_call.html delete mode 100644 notification_center_detachment.html delete mode 100644 nslocalizedstring_key.html delete mode 100644 nslocalizedstring_require_bundle.html delete mode 100644 nsobject_prefer_isequal.html delete mode 100644 number_separator.html delete mode 100644 object_literal.html delete mode 100644 opening_brace.html delete mode 100644 operator_usage_whitespace.html delete mode 100644 operator_whitespace.html delete mode 100644 optional_enum_case_matching.html delete mode 100644 orphaned_doc_comment.html delete mode 100644 overridden_super_call.html delete mode 100644 override_in_extension.html delete mode 100644 pattern_matching_keywords.html delete mode 100644 prefer_nimble.html delete mode 100644 prefer_self_in_static_references.html delete mode 100644 prefer_self_type_over_type_of_self.html delete mode 100644 prefer_zero_over_explicit_init.html delete mode 100644 prefixed_toplevel_constant.html delete mode 100644 private_action.html delete mode 100644 private_outlet.html delete mode 100644 private_over_fileprivate.html delete mode 100644 private_subject.html delete mode 100644 private_unit_test.html delete mode 100644 prohibited_interface_builder.html delete mode 100644 prohibited_super_call.html delete mode 100644 protocol_property_accessors_order.html delete mode 100644 quick_discouraged_call.html delete mode 100644 quick_discouraged_focused_test.html delete mode 100644 quick_discouraged_pending_test.html delete mode 100644 raw_value_for_camel_cased_codable_enum.html delete mode 100644 reduce_boolean.html delete mode 100644 reduce_into.html delete mode 100644 redundant_discardable_let.html delete mode 100644 redundant_nil_coalescing.html delete mode 100644 redundant_objc_attribute.html delete mode 100644 redundant_optional_initialization.html delete mode 100644 redundant_set_access_control.html delete mode 100644 redundant_string_enum_value.html delete mode 100644 redundant_type_annotation.html delete mode 100644 redundant_void_return.html delete mode 100644 required_deinit.html delete mode 100644 required_enum_case.html delete mode 100644 return_arrow_whitespace.html delete mode 100644 rule-directory.html delete mode 100644 search.json delete mode 100644 self_in_property_initialization.html delete mode 100644 shorthand_operator.html delete mode 100644 single_test_class.html delete mode 100644 sorted_first_last.html delete mode 100644 sorted_imports.html delete mode 100644 statement_position.html delete mode 100644 static_operator.html delete mode 100644 strict_fileprivate.html delete mode 100644 strong_iboutlet.html delete mode 100644 superfluous_disable_command.html delete mode 100644 switch_case_alignment.html delete mode 100644 switch_case_on_newline.html delete mode 100644 syntactic_sugar.html delete mode 100644 test_case_accessibility.html delete mode 100644 todo.html delete mode 100644 toggle_bool.html delete mode 100644 trailing_closure.html delete mode 100644 trailing_comma.html delete mode 100644 trailing_newline.html delete mode 100644 trailing_semicolon.html delete mode 100644 trailing_whitespace.html delete mode 100644 type_body_length.html delete mode 100644 type_contents_order.html delete mode 100644 type_name.html delete mode 100644 unavailable_function.html delete mode 100644 undocumented.json delete mode 100644 unneeded_break_in_switch.html delete mode 100644 unneeded_parentheses_in_closure_argument.html delete mode 100644 unowned_variable_capture.html delete mode 100644 untyped_error_in_catch.html delete mode 100644 unused_capture_list.html delete mode 100644 unused_closure_parameter.html delete mode 100644 unused_control_flow_label.html delete mode 100644 unused_declaration.html delete mode 100644 unused_enumerated.html delete mode 100644 unused_import.html delete mode 100644 unused_optional_binding.html delete mode 100644 unused_setter_value.html delete mode 100644 valid_ibinspectable.html delete mode 100644 vertical_parameter_alignment.html delete mode 100644 vertical_parameter_alignment_on_call.html delete mode 100644 vertical_whitespace.html delete mode 100644 vertical_whitespace_between_cases.html delete mode 100644 vertical_whitespace_closing_braces.html delete mode 100644 vertical_whitespace_opening_braces.html delete mode 100644 void_return.html delete mode 100644 weak_delegate.html delete mode 100644 xct_specific_matcher.html delete mode 100644 xctfail_message.html delete mode 100644 yoda_condition.html diff --git a/Classes.html b/Classes.html deleted file mode 100644 index 1f3c6a2cc..000000000 --- a/Classes.html +++ /dev/null @@ -1,434 +0,0 @@ - - - - Classes Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Classes

-

The following classes are available globally.

- -
-
- -
-
-
-
    -
  • -
    - - - - SwiftLintFile - -
    -
    -
    -
    -
    -
    -

    A unit of Swift source code, either on disk or in memory.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public final class SwiftLintFile
    -
    extension SwiftLintFile: Hashable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - LinterCache - -
    -
    -
    -
    -
    -
    -

    A persisted cache for storing and retrieving linter results.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public final class LinterCache
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - RuleStorage - -
    -
    -
    -
    -
    -
    -

    A storage mechanism for aggregating the results of CollectingRules.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public class RuleStorage : CustomStringConvertible
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Classes/LinterCache.html b/Classes/LinterCache.html deleted file mode 100644 index 21b179d08..000000000 --- a/Classes/LinterCache.html +++ /dev/null @@ -1,447 +0,0 @@ - - - - LinterCache Class Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

LinterCache

-
-
- -
public final class LinterCache
- -
-
-

A persisted cache for storing and retrieving linter results.

- - -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Creates a LinterCache by specifying a SwiftLint configuration and a file manager.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(configuration: Configuration, fileManager: LintableFileManager = FileManager.default)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - configuration - - -
    -

    The SwiftLint configuration for which this cache will be used.

    -
    -
    - - fileManager - - -
    -

    The file manager to use to read lintable file information.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - save() - -
    -
    -
    -
    -
    -
    -

    Persists the cache to disk.

    -
    -

    Throws

    - Throws if the linter cache doesn’t have a location value, if the cache couldn’t be serialized, or if - the contents couldn’t be written to disk. - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func save() throws
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Classes/RuleStorage.html b/Classes/RuleStorage.html deleted file mode 100644 index b9c62b570..000000000 --- a/Classes/RuleStorage.html +++ /dev/null @@ -1,409 +0,0 @@ - - - - RuleStorage Class Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleStorage

-
-
- -
public class RuleStorage : CustomStringConvertible
- -
-
-

A storage mechanism for aggregating the results of CollectingRules.

- - -
-
- -
-
-
-
    -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init() - -
    -
    -
    -
    -
    -
    -

    Creates a RuleStorage with no initial stored data.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init()
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Classes/SwiftLintFile.html b/Classes/SwiftLintFile.html deleted file mode 100644 index 6b63e3665..000000000 --- a/Classes/SwiftLintFile.html +++ /dev/null @@ -1,770 +0,0 @@ - - - - SwiftLintFile Class Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

SwiftLintFile

-
-
- -
public final class SwiftLintFile
-
extension SwiftLintFile: Hashable
- -
-
-

A unit of Swift source code, either on disk or in memory.

- - -
-
- -
-
-
-
    -
  • -
    - - - - init(file:) - -
    -
    -
    -
    -
    -
    -

    Creates a SwiftLintFile with a SourceKitten File.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(file: File)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - file - - -
    -

    A file from SourceKitten.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(path:) - -
    -
    -
    -
    -
    -
    -

    Creates a SwiftLintFile by specifying its path on disk. -Fails if the file does not exist.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public convenience init?(path: String)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - path - - -
    -

    The path to a file on disk. Relative and absolute paths supported.

    -
    -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a SwiftLintFile by specifying its path on disk. Unlike the SwiftLintFile(path:) initializer, this -one does not read its contents immediately, but rather traps at runtime when attempting to access its contents.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public convenience init(pathDeferringReading path: String)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - path - - -
    -

    The path to a file on disk. Relative and absolute paths supported.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(contents:) - -
    -
    -
    -
    -
    -
    -

    Creates a SwiftLintFile that is not backed by a file on disk by specifying its contents.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public convenience init(contents: String)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - contents - - -
    -

    The contents of the file.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - path - -
    -
    -
    -
    -
    -
    -

    The path on disk for this file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var path: String? { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - contents - -
    -
    -
    -
    -
    -
    -

    The file’s contents.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var contents: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - stringView - -
    -
    -
    -
    -
    -
    -

    A string view into the contents of this file optimized for string manipulation operations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var stringView: StringView { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - lines - -
    -
    -
    -
    -
    -
    -

    The parsed lines for this file’s contents.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var lines: [Line] { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - invalidateCache() - -
    -
    -
    -
    -
    -
    -

    Invalidates all cached data for this file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func invalidateCache()
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Hashable Conformance

-

-
-
-
    -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func == (lhs: SwiftLintFile, rhs: SwiftLintFile) -> Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - hash(into:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func hash(into hasher: inout Hasher)
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Enums.html b/Enums.html deleted file mode 100644 index bc1f6314e..000000000 --- a/Enums.html +++ /dev/null @@ -1,563 +0,0 @@ - - - - Enumerations Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Enumerations

-

The following enumerations are available globally.

- -
-
- -
-
-
- -
-
-
- -
-
- - - - diff --git a/Enums/AccessControlLevel.html b/Enums/AccessControlLevel.html deleted file mode 100644 index 08da1e4be..000000000 --- a/Enums/AccessControlLevel.html +++ /dev/null @@ -1,564 +0,0 @@ - - - - AccessControlLevel Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

AccessControlLevel

-
-
- -
public enum AccessControlLevel : String, CustomStringConvertible
-
extension AccessControlLevel: Comparable
- -
-
-

The accessibility of a Swift source declaration.

- - - -
-
- -
-
-
-
    -
  • -
    - - - - private - -
    -
    -
    -
    -
    -
    -

    Accessible by the declaration’s immediate lexical scope.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case `private` = "source.lang.swift.accessibility.private"
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - fileprivate - -
    -
    -
    -
    -
    -
    -

    Accessible by the declaration’s same file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case `fileprivate` = "source.lang.swift.accessibility.fileprivate"
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - internal - -
    -
    -
    -
    -
    -
    -

    Accessible by the declaration’s same module, or modules importing it with the @testable attribute.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case `internal` = "source.lang.swift.accessibility.internal"
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - public - -
    -
    -
    -
    -
    -
    -

    Accessible by the declaration’s same program.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case `public` = "source.lang.swift.accessibility.public"
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - open - -
    -
    -
    -
    -
    -
    -

    Accessible and customizable (via subclassing or overrides) by the declaration’s same program.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case open = "source.lang.swift.accessibility.open"
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - <(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func < (lhs: AccessControlLevel, rhs: AccessControlLevel) -> Bool
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Enums/ConfigurationError.html b/Enums/ConfigurationError.html deleted file mode 100644 index 4bea8f534..000000000 --- a/Enums/ConfigurationError.html +++ /dev/null @@ -1,470 +0,0 @@ - - - - ConfigurationError Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

ConfigurationError

-
-
- -
public enum ConfigurationError : Error, Equatable
- -
-
-

All possible configuration errors.

- - -
-
- -
-
-
-
    -
  • -
    - - - - unknownConfiguration - -
    -
    -
    -
    -
    -
    -

    The configuration didn’t match internal expectations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case unknownConfiguration
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    The configuration had both match_kind and excluded_match_kind parameters.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case ambiguousMatchKindParameters
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - generic(_:) - -
    -
    -
    -
    -
    -
    -

    A generic configuration error specified by a string.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case generic(String)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    The initial configuration file was not found.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case initialFileNotFound(path: String)
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Enums/RuleIdentifier.html b/Enums/RuleIdentifier.html deleted file mode 100644 index 0add28e35..000000000 --- a/Enums/RuleIdentifier.html +++ /dev/null @@ -1,568 +0,0 @@ - - - - RuleIdentifier Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleIdentifier

-
-
- -
public enum RuleIdentifier : Hashable, ExpressibleByStringLiteral
- -
-
-

An identifier representing a SwiftLint rule, or all rules.

- - -
-
- -
-
-
-
- - -
- -

Values

-

-
-
-
    -
  • -
    - - - - all - -
    -
    -
    -
    -
    -
    -

    Special identifier that should be treated as referring to ‘all’ SwiftLint rules. One helpful usecase is in -disabling all SwiftLint rules in a given file by adding a // swiftlint:disable all comment at the top of the -file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case all
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - single(identifier:) - -
    -
    -
    -
    -
    -
    -

    Represents a single SwiftLint rule with the specified identifier.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case single(identifier: String)
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Properties

-

-
-
-
    -
  • -
    - - - - stringRepresentation - -
    -
    -
    -
    -
    -
    -

    The spelling of the string for this idenfitier.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var stringRepresentation: String { get }
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Initializers

-

-
-
-
    -
  • -
    - - - - init(_:) - -
    -
    -
    -
    -
    -
    -

    Creates a RuleIdentifier by its string representation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(_ value: String)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - value - - -
    -

    The string representation.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

ExpressibleByStringLiteral Conformance

-

-
-
- -
-
-
- -
-
- - - - diff --git a/Enums/RuleKind.html b/Enums/RuleKind.html deleted file mode 100644 index d245efc3f..000000000 --- a/Enums/RuleKind.html +++ /dev/null @@ -1,500 +0,0 @@ - - - - RuleKind Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleKind

-
-
- -
public enum RuleKind : String, Codable
- -
-
-

All the possible rule kinds (categories).

- - -
-
- -
-
-
-
    -
  • -
    - - - - lint - -
    -
    -
    -
    -
    -
    -

    Describes rules that validate Swift source conventions.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case lint
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - idiomatic - -
    -
    -
    -
    -
    -
    -

    Describes rules that validate common practices in the Swift community.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case idiomatic
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - style - -
    -
    -
    -
    -
    -
    -

    Describes rules that validate stylistic choices.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case style
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - metrics - -
    -
    -
    -
    -
    -
    -

    Describes rules that validate magnitudes or measurements of Swift source.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case metrics
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - performance - -
    -
    -
    -
    -
    -
    -

    Describes rules that validate that code patterns with poor performance are avoided.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case performance
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Enums/RuleListError.html b/Enums/RuleListError.html deleted file mode 100644 index 2c2d92c63..000000000 --- a/Enums/RuleListError.html +++ /dev/null @@ -1,380 +0,0 @@ - - - - RuleListError Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleListError

-
-
- -
public enum RuleListError : Error
- -
-
-

All possible rule list configuration errors.

- - -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    The rule list contains more than one configuration for the specified rule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case duplicatedConfigurations(rule: Rule.Type)
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Enums/SwiftExpressionKind.html b/Enums/SwiftExpressionKind.html deleted file mode 100644 index 998da75be..000000000 --- a/Enums/SwiftExpressionKind.html +++ /dev/null @@ -1,560 +0,0 @@ - - - - SwiftExpressionKind Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

SwiftExpressionKind

-
-
- -
public enum SwiftExpressionKind : String
- -
-
-

The kind of expression for a contiguous set of Swift source tokens.

- - -
-
- -
-
-
- -
-
-
- -
-
- - - - diff --git a/Enums/ViolationSeverity.html b/Enums/ViolationSeverity.html deleted file mode 100644 index f765382b2..000000000 --- a/Enums/ViolationSeverity.html +++ /dev/null @@ -1,452 +0,0 @@ - - - - ViolationSeverity Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

ViolationSeverity

-
-
- -
public enum ViolationSeverity : String, Comparable, Codable
- -
-
-

The magnitude of a StyleViolation.

- - -
-
- -
-
-
-
    -
  • -
    - - - - warning - -
    -
    -
    -
    -
    -
    -

    Non-fatal. If using SwiftLint as an Xcode build phase, Xcode will mark the build as having succeeded.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case warning
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - error - -
    -
    -
    -
    -
    -
    -

    Fatal. If using SwiftLint as an Xcode build phase, Xcode will mark the build as having failed.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case error
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Comparable

-

-
-
-
    -
  • -
    - - - - <(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func < (lhs: ViolationSeverity, rhs: ViolationSeverity) -> Bool
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Extensions.html b/Extensions.html deleted file mode 100644 index ade5a4c19..000000000 --- a/Extensions.html +++ /dev/null @@ -1,394 +0,0 @@ - - - - Extensions Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Extensions

-

The following extensions are available globally.

- -
-
- -
-
-
- -
-
-
- -
-
- - - - diff --git a/Extensions/FileManager.html b/Extensions/FileManager.html deleted file mode 100644 index 06264b1eb..000000000 --- a/Extensions/FileManager.html +++ /dev/null @@ -1,404 +0,0 @@ - - - - FileManager Extension Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

FileManager

-
-
- -
extension FileManager: LintableFileManager
- -
-
- -
-
- -
-
-
- -
-
-
- -
-
- - - - diff --git a/Extensions/String.html b/Extensions/String.html deleted file mode 100644 index 996c423e3..000000000 --- a/Extensions/String.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - String Extension Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

String

-
-
- -
extension String
- -
-
- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Returns a new string, converting the path to a canonical absolute path.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func absolutePathStandardized() -> String
    - -
    -
    -
    -

    Return Value

    -

    A new String.

    -
    - -
    -
    -
  • -
  • -
    - - - - countOccurrences(of:) - -
    -
    -
    -
    -
    -
    -

    Count the number of occurrences of the given character in self

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func countOccurrences(of character: Character) -> Int
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - character - - -
    -

    Character to count

    -
    -
    -
    -
    -

    Return Value

    -

    Number of times character occurs in self

    -
    - -
    -
    -
  • -
  • -
    - - - - path(relativeTo:) - -
    -
    -
    -
    -
    -
    -

    If self is a path, this method can be used to get a path expression relative to a root directory

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func path(relativeTo rootDirectory: String) -> String
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Functions.html b/Functions.html deleted file mode 100644 index 6e21f5ba4..000000000 --- a/Functions.html +++ /dev/null @@ -1,523 +0,0 @@ - - - - Functions Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Functions

-

The following functions are available globally.

- -
-
- -
-
-
-
    -
  • -
    - - - - queuedPrint(_:) - -
    -
    -
    -
    -
    -
    -

    A thread-safe version of Swift’s standard print().

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func queuedPrint<T>(_ object: T)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - object - - -
    -

    Object to print.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - queuedPrintError(_:) - -
    -
    -
    -
    -
    -
    -

    A thread-safe, newline-terminated version of fputs(..., stderr).

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func queuedPrintError(_ string: String)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - string - - -
    -

    String to print.

    -
    -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A thread-safe, newline-terminated version of fatalError(...) that doesn’t leak -the source path from the compiled binary.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func queuedFatalError(_ string: String, file: StaticString = #file, line: UInt = #line) -> Never
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Returns the reporter with the specified identifier. Traps if the specified identifier doesn’t correspond to any -known reporters.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func reporterFrom(identifier: String) -> Reporter.Type
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - identifier - - -
    -

    The identifier corresponding to the reporter.

    -
    -
    -
    -
    -

    Return Value

    -

    The reporter type.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Global Variables.html b/Global Variables.html deleted file mode 100644 index dd959e7ed..000000000 --- a/Global Variables.html +++ /dev/null @@ -1,370 +0,0 @@ - - - - Global Variables Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Global Variables

-

The following global variables are available globally.

- -
-
- -
-
-
-
    -
  • -
    - - - - primaryRuleList - -
    -
    -
    -
    -
    -
    -

    The rule list containing all available rules built into SwiftLint.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let primaryRuleList: RuleList
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Guides.html b/Guides.html deleted file mode 100644 index 4d9cfb254..000000000 --- a/Guides.html +++ /dev/null @@ -1,2212 +0,0 @@ - - - - Guides Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Guides

-

The following guides are available globally.

- -
-
- -
-
-
- -
-
-
- -
-
- - - - diff --git a/Protocols.html b/Protocols.html deleted file mode 100644 index 25a235e94..000000000 --- a/Protocols.html +++ /dev/null @@ -1,848 +0,0 @@ - - - - Protocols Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Protocols

-

The following protocols are available globally.

- -
-
- -
-
-
-
    -
  • -
    - - - - LintableFileManager - -
    -
    -
    -
    -
    -
    -

    An interface for enumerating files that can be linted by SwiftLint.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol LintableFileManager
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - ASTRule - -
    -
    -
    -
    -
    -
    -

    A rule that leverages the Swift source’s pre-typechecked Abstract Syntax Tree to recurse into the source’s -structure, validating the rule recursively in nested source bodies.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol ASTRule : Rule
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Reporter - -
    -
    -
    -
    -
    -
    -

    An interface for reporting violations as strings.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol Reporter : CustomStringConvertible
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Rule - -
    -
    -
    -
    -
    -
    -

    An executable value that can identify issues (violations) in Swift source code.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol Rule
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - OptInRule - -
    -
    -
    -
    -
    -
    -

    A rule that is not enabled by default. Rules conforming to this need to be explicitly enabled by users.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol OptInRule : Rule
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - AutomaticTestableRule - -
    -
    -
    -
    -
    -
    -

    A rule that has unit tests automatically generated using Sourcery.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol AutomaticTestableRule : Rule
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A rule that is user-configurable.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol ConfigurationProviderRule : Rule
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - CorrectableRule - -
    -
    -
    -
    -
    -
    -

    A rule that can correct violations.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol CorrectableRule : Rule
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A correctable rule that can apply its corrections by replacing the content of ranges in the offending file with -updated content.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol SubstitutionCorrectableRule : CorrectableRule
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A SubstitutionCorrectableRule that is also an ASTRule.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol SubstitutionCorrectableASTRule : ASTRule, SubstitutionCorrectableRule
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - SourceKitFreeRule - -
    -
    -
    -
    -
    -
    -

    A rule that does not need SourceKit to operate and can still operate even after SourceKit has crashed.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol SourceKitFreeRule : Rule
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - AnalyzerRule - -
    -
    -
    -
    -
    -
    -

    A rule that can operate on the post-typechecked AST using compiler arguments. Performs rules that are more like -static analysis than syntactic checks.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol AnalyzerRule : OptInRule
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Collecting rules

-

-
-
- -
-
-
- -
-
- - - - diff --git a/Protocols/ASTRule.html b/Protocols/ASTRule.html deleted file mode 100644 index b3a2a7c35..000000000 --- a/Protocols/ASTRule.html +++ /dev/null @@ -1,614 +0,0 @@ - - - - ASTRule Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

ASTRule

-
-
- -
public protocol ASTRule : Rule
- -
-
-

A rule that leverages the Swift source’s pre-typechecked Abstract Syntax Tree to recurse into the source’s -structure, validating the rule recursively in nested source bodies.

- - -
-
- -
-
-
-
    -
  • -
    - - - - KindType - -
    -
    -
    -
    -
    -
    -

    The kind of token being recursed over.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    associatedtype KindType : RawRepresentable
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Executes the rule on a file and a subset of its AST structure, returnng any violations to the rule’s -expectations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func validate(file: SwiftLintFile, kind: KindType, dictionary: SourceKittenDictionary) -> [StyleViolation]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to execute the rule.

    -
    -
    - - kind - - -
    -

    The kind of token being recursed over.

    -
    -
    - - dictionary - - -
    -

    The dicttionary for an AST subset to validate.

    -
    -
    -
    -
    -

    Return Value

    -

    All style violations to the rule’s expectations.

    -
    - -
    -
    -
  • -
  • -
    - - - - kind(from:) - -
    -
    -
    -
    -
    -
    -

    Get the kind from the specified dictionary.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func kind(from dictionary: SourceKittenDictionary) -> KindType?
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - dictionary - - -
    -

    The SourceKittenDictionary representing the source structure from which to extract the - kind.

    -
    -
    -
    -
    -

    Return Value

    -

    The kind from the specified dictionary, if one was found.

    -
    - -
    -
    -
  • -
  • -
    - - - - validate(file:) - - - Extension method - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func validate(file: SwiftLintFile) -> [StyleViolation]
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - validate(file:dictionary:) - - - Extension method - -
    -
    -
    -
    -
    -
    -

    Executes the rule on a file and a subset of its AST structure, returnng any violations to the rule’s -expectations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func validate(file: SwiftLintFile, dictionary: SourceKittenDictionary) -> [StyleViolation]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to execute the rule.

    -
    -
    - - dictionary - - -
    -

    The dicttionary for an AST subset to validate.

    -
    -
    -
    -
    -

    Return Value

    -

    All style violations to the rule’s expectations.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Protocols/AnalyzerRule.html b/Protocols/AnalyzerRule.html deleted file mode 100644 index fff10d9ac..000000000 --- a/Protocols/AnalyzerRule.html +++ /dev/null @@ -1,383 +0,0 @@ - - - - AnalyzerRule Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

AnalyzerRule

-
-
- -
public protocol AnalyzerRule : OptInRule
- -
-
-

A rule that can operate on the post-typechecked AST using compiler arguments. Performs rules that are more like -static analysis than syntactic checks.

- - -
-
- -
-
-
- -
-
-
- -
-
- - - - diff --git a/Protocols/CollectingCorrectableRule.html b/Protocols/CollectingCorrectableRule.html deleted file mode 100644 index 5bfe187d7..000000000 --- a/Protocols/CollectingCorrectableRule.html +++ /dev/null @@ -1,621 +0,0 @@ - - - - CollectingCorrectableRule Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

CollectingCorrectableRule

-
-
- -
public protocol CollectingCorrectableRule : CollectingRule, CorrectableRule
- -
-
-

A CollectingRule that is also a CorrectableRule.

- - -
-
- -
-
-
-
    -
  • -
    - - - - correct(file:collectedInfo:compilerArguments:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Attempts to correct the violations to this rule in the specified file after collecting file info for all files -and returns all corrections that were applied.

    -
    -

    Note

    -

    This function is called by the linter and is always implemented in extensions.

    - -
    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func correct(file: SwiftLintFile, collectedInfo: [SwiftLintFile: FileInfo],
    -             compilerArguments: [String]) -> [Correction]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to execute the rule.

    -
    -
    - - collectedInfo - - -
    -

    All collected info.

    -
    -
    - - compilerArguments - - -
    -

    The compiler arguments needed to compile this file.

    -
    -
    -
    -
    -

    Return Value

    -

    All corrections that were applied.

    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Attempts to correct the violations to this rule in the specified file after collecting file info for all files -and returns all corrections that were applied.

    -
    -

    Note

    -

    This function is called by the linter and is always implemented in extensions.

    - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func correct(file: SwiftLintFile, collectedInfo: [SwiftLintFile : FileInfo]) -> [Correction]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to execute the rule.

    -
    -
    - - collectedInfo - - -
    -

    All collected info.

    -
    -
    -
    -
    -

    Return Value

    -

    All corrections that were applied.

    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Collecting rules

-

-
-
- -
-
-
- -
-
- - - - diff --git a/Protocols/CollectingRule.html b/Protocols/CollectingRule.html deleted file mode 100644 index f2e1607a1..000000000 --- a/Protocols/CollectingRule.html +++ /dev/null @@ -1,798 +0,0 @@ - - - - CollectingRule Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

CollectingRule

-
-
- -
public protocol CollectingRule : AnyCollectingRule
- -
-
-

A rule that requires knowledge of all other files being linted.

- - -
-
- -
-
-
-
    -
  • -
    - - - - FileInfo - -
    -
    -
    -
    -
    -
    -

    The kind of information to collect for each file being linted for this rule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    associatedtype FileInfo
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - collectInfo(for:compilerArguments:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Collects information for the specified file, to be analyzed by a CollectedLinter.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func collectInfo(for file: SwiftLintFile, compilerArguments: [String]) -> FileInfo
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to collect info.

    -
    -
    - - compilerArguments - - -
    -

    The compiler arguments needed to compile this file.

    -
    -
    -
    -
    -

    Return Value

    -

    The collected file information.

    -
    - -
    -
    -
  • -
  • -
    - - - - collectInfo(for:) - -
    -
    -
    -
    -
    -
    -

    Collects information for the specified file, to be analyzed by a CollectedLinter.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func collectInfo(for file: SwiftLintFile) -> FileInfo
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - file - - -
    -

    The file for which to collect info.

    -
    -
    -
    -
    -

    Return Value

    -

    The collected file information.

    -
    - -
    -
    -
  • -
  • -
    - - - - validate(file:collectedInfo:compilerArguments:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Executes the rule on a file after collecting file info for all files and returns any violations to the rule’s -expectations.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func validate(file: SwiftLintFile, collectedInfo: [SwiftLintFile: FileInfo],
    -              compilerArguments: [String]) -> [StyleViolation]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to execute the rule.

    -
    -
    - - collectedInfo - - -
    -

    All collected info for all files.

    -
    -
    - - compilerArguments - - -
    -

    The compiler arguments needed to compile this file.

    -
    -
    -
    -
    -

    Return Value

    -

    All style violations to the rule’s expectations.

    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Executes the rule on a file after collecting file info for all files and returns any violations to the rule’s -expectations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func validate(file: SwiftLintFile, collectedInfo: [SwiftLintFile : FileInfo]) -> [StyleViolation]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to execute the rule.

    -
    -
    - - collectedInfo - - -
    -

    All collected info for all files.

    -
    -
    -
    -
    -

    Return Value

    -

    All style violations to the rule’s expectations.

    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Collecting rules

-

-
-
- -
-
-
- -
-
- - - - diff --git a/Protocols/ConfigurationProviderRule.html b/Protocols/ConfigurationProviderRule.html deleted file mode 100644 index 159e83992..000000000 --- a/Protocols/ConfigurationProviderRule.html +++ /dev/null @@ -1,519 +0,0 @@ - - - - ConfigurationProviderRule Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

ConfigurationProviderRule

-
-
- -
public protocol ConfigurationProviderRule : Rule
- -
-
-

A rule that is user-configurable.

- - -
-
- -
-
-
- -
-
-
- - -
- -

Collecting rules

-

-
-
-
    -
  • -
    - - - - init(configuration:) - - - Extension method - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    init(configuration: Any) throws
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isEqualTo(_:) - - - Extension method - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func isEqualTo(_ rule: Rule) -> Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - configurationDescription - - - Extension method - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    var configurationDescription: String { get }
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Protocols/CorrectableRule.html b/Protocols/CorrectableRule.html deleted file mode 100644 index 8b415f73c..000000000 --- a/Protocols/CorrectableRule.html +++ /dev/null @@ -1,565 +0,0 @@ - - - - CorrectableRule Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

CorrectableRule

-
-
- -
public protocol CorrectableRule : Rule
- -
-
-

A rule that can correct violations.

- - -
-
- -
-
-
-
    -
  • -
    - - - - correct(file:compilerArguments:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Attempts to correct the violations to this rule in the specified file.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func correct(file: SwiftLintFile, compilerArguments: [String]) -> [Correction]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to correct violations.

    -
    -
    - - compilerArguments - - -
    -

    The compiler arguments needed to compile this file.

    -
    -
    -
    -
    -

    Return Value

    -

    All corrections that were applied.

    -
    - -
    -
    -
  • -
  • -
    - - - - correct(file:) - -
    -
    -
    -
    -
    -
    -

    Attempts to correct the violations to this rule in the specified file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func correct(file: SwiftLintFile) -> [Correction]
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - file - - -
    -

    The file for which to correct violations.

    -
    -
    -
    -
    -

    Return Value

    -

    All corrections that were applied.

    -
    - -
    -
    -
  • -
  • -
    - - - - correct(file:using:compilerArguments:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Attempts to correct the violations to this rule in the specified file after collecting file info for all files -and returns all corrections that were applied.

    -
    -

    Note

    -

    This function is called by the linter and is always implemented in extensions.

    - -
    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func correct(file: SwiftLintFile, using storage: RuleStorage, compilerArguments: [String]) -> [Correction]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to execute the rule.

    -
    -
    - - storage - - -
    -

    The storage object containing all collected info.

    -
    -
    - - compilerArguments - - -
    -

    The compiler arguments needed to compile this file.

    -
    -
    -
    -
    -

    Return Value

    -

    All corrections that were applied.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Protocols/LintableFileManager.html b/Protocols/LintableFileManager.html deleted file mode 100644 index 32559cc9a..000000000 --- a/Protocols/LintableFileManager.html +++ /dev/null @@ -1,471 +0,0 @@ - - - - LintableFileManager Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

LintableFileManager

-
-
- -
public protocol LintableFileManager
- -
-
-

An interface for enumerating files that can be linted by SwiftLint.

- - -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Returns all files that can be linted in the specified path. If the path is relative, it will be appended to the -specified root path, or currentt working directory if no root directory is specified.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func filesToLint(inPath path: String, rootDirectory: String?) -> [String]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - path - - -
    -

    The path in which lintable files should be found.

    -
    -
    - - rootDirectory - - -
    -

    The parent directory for the specified path. If none is provided, the current working - directory will be used.

    -
    -
    -
    -
    -

    Return Value

    -

    Files to lint.

    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Returns the date when the file at the specified path was last modified. Returns nil if the file cannot be -found or its last modification date cannot be determined.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func modificationDate(forFileAtPath path: String) -> Date?
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - path - - -
    -

    The file whose modification date should be determined.

    -
    -
    -
    -
    -

    Return Value

    -

    A date, if one was determined.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Protocols/Reporter.html b/Protocols/Reporter.html deleted file mode 100644 index b6ae76418..000000000 --- a/Protocols/Reporter.html +++ /dev/null @@ -1,464 +0,0 @@ - - - - Reporter Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Reporter

-
-
- -
public protocol Reporter : CustomStringConvertible
- -
-
-

An interface for reporting violations as strings.

- - -
-
- -
-
-
-
    -
  • -
    - - - - identifier - -
    -
    -
    -
    -
    -
    -

    The unique identifier for this reporter.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    static var identifier: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isRealtime - -
    -
    -
    -
    -
    -
    -

    Whether or not this reporter can output incrementally as violations are found or if all violations must be -collected before generating the report.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    static var isRealtime: Bool { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - generateReport(_:) - -
    -
    -
    -
    -
    -
    -

    Return a string with the report for the specified violations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    static func generateReport(_ violations: [StyleViolation]) -> String
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - violations - - -
    -

    The violations to report.

    -
    -
    -
    -
    -

    Return Value

    -

    The report.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Protocols/Rule.html b/Protocols/Rule.html deleted file mode 100644 index d9dabf974..000000000 --- a/Protocols/Rule.html +++ /dev/null @@ -1,854 +0,0 @@ - - - - Rule Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Rule

-
-
- -
public protocol Rule
- -
-
-

An executable value that can identify issues (violations) in Swift source code.

- - -
-
- -
-
-
-
    -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    -

    A verbose description of many of this rule’s properties.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    static var description: RuleDescription { get }
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A description of how this rule has been configured to run.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    var configurationDescription: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init() - -
    -
    -
    -
    -
    -
    -

    A default initializer for rules. All rules need to be trivially initializable.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    init()
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(configuration:) - -
    -
    -
    -
    -
    -
    -

    Creates a rule by applying its configuration.

    -
    -

    Throws

    -

    Throws if the configuration didn’t match the expected format.

    - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    init(configuration: Any) throws
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - configuration - - -
    -

    The untyped configuration value to apply.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - validate(file:compilerArguments:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Executes the rule on a file and returns any violations to the rule’s expectations.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func validate(file: SwiftLintFile, compilerArguments: [String]) -> [StyleViolation]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to execute the rule.

    -
    -
    - - compilerArguments - - -
    -

    The compiler arguments needed to compile this file.

    -
    -
    -
    -
    -

    Return Value

    -

    All style violations to the rule’s expectations.

    -
    - -
    -
    -
  • -
  • -
    - - - - validate(file:) - -
    -
    -
    -
    -
    -
    -

    Executes the rule on a file and returns any violations to the rule’s expectations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func validate(file: SwiftLintFile) -> [StyleViolation]
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - file - - -
    -

    The file for which to execute the rule.

    -
    -
    -
    -
    -

    Return Value

    -

    All style violations to the rule’s expectations.

    -
    - -
    -
    -
  • -
  • -
    - - - - isEqualTo(_:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Whether or not the specified rule is equivalent to the current rule.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func isEqualTo(_ rule: Rule) -> Bool
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - rule - - -
    -

    The rule value to compare against.

    -
    -
    -
    -
    -

    Return Value

    -

    Whether or not the specified rule is equivalent to the current rule.

    -
    - -
    -
    -
  • -
  • -
    - - - - collectInfo(for:into:compilerArguments:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Collects information for the specified file in a storage object, to be analyzed by a CollectedLinter.

    -
    -

    Note

    -

    This function is called by the linter and is always implemented in extensions.

    - -
    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func collectInfo(for file: SwiftLintFile, into storage: RuleStorage, compilerArguments: [String])
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to collect info.

    -
    -
    - - storage - - -
    -

    The storage object where collected info should be saved.

    -
    -
    - - compilerArguments - - -
    -

    The compiler arguments needed to compile this file.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - validate(file:using:compilerArguments:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Executes the rule on a file after collecting file info for all files and returns any violations to the rule’s -expectations.

    -
    -

    Note

    -

    This function is called by the linter and is always implemented in extensions.

    - -
    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func validate(file: SwiftLintFile, using storage: RuleStorage, compilerArguments: [String]) -> [StyleViolation]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to execute the rule.

    -
    -
    - - storage - - -
    -

    The storage object containing all collected info.

    -
    -
    - - compilerArguments - - -
    -

    The compiler arguments needed to compile this file.

    -
    -
    -
    -
    -

    Return Value

    -

    All style violations to the rule’s expectations.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Protocols/RuleConfiguration.html b/Protocols/RuleConfiguration.html deleted file mode 100644 index b224901bd..000000000 --- a/Protocols/RuleConfiguration.html +++ /dev/null @@ -1,487 +0,0 @@ - - - - RuleConfiguration Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleConfiguration

-
-
- -
public protocol RuleConfiguration
- -
-
-

A configuration value for a rule to allow users to modify its behavior.

- - -
-
- -
-
-
-
    -
  • -
    - - - - consoleDescription - -
    -
    -
    -
    -
    -
    -

    A human-readable description for this configuration and its applied values.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    var consoleDescription: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - apply(configuration:) - -
    -
    -
    -
    -
    -
    -

    Apply an untyped configuration to the current value.

    -
    -

    Throws

    -

    Throws if the configuration is not in the expected format.

    - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    mutating func apply(configuration: Any) throws
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - configuration - - -
    -

    The untyped configuration value to apply.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - isEqualTo(_:) - -
    -
    -
    -
    -
    -
    -

    Whether the specified configuration is equivalent to the current value.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func isEqualTo(_ ruleConfiguration: RuleConfiguration) -> Bool
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - ruleConfiguration - - -
    -

    The rule configuration to compare against.

    -
    -
    -
    -
    -

    Return Value

    -

    Whether the specified configuration is equivalent to the current value.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Protocols/SubstitutionCorrectableASTRule.html b/Protocols/SubstitutionCorrectableASTRule.html deleted file mode 100644 index 4427f81c6..000000000 --- a/Protocols/SubstitutionCorrectableASTRule.html +++ /dev/null @@ -1,460 +0,0 @@ - - - - SubstitutionCorrectableASTRule Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

SubstitutionCorrectableASTRule

-
-
- -
public protocol SubstitutionCorrectableASTRule : ASTRule, SubstitutionCorrectableRule
- -
-
-

A SubstitutionCorrectableRule that is also an ASTRule.

- - -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Returns the NSString-based NSRanges to be replaced in the specified file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func violationRanges(in file: SwiftLintFile, kind: KindType,
    -                     dictionary: SourceKittenDictionary) -> [NSRange]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - file - - -
    -

    The file in which to find ranges of violations for this rule.

    -
    -
    - - kind - - -
    -

    The kind of token being recursed over.

    -
    -
    - - dictionary - - -
    -

    The dicttionary for an AST subset to validate.

    -
    -
    -
    -
    -

    Return Value

    -

    The NSString-based NSRanges to be replaced in the specified file.

    -
    - -
    -
    -
  • -
  • -
    - - - - violationRanges(in:) - - - Extension method - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func violationRanges(in file: SwiftLintFile) -> [NSRange]
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Protocols/SubstitutionCorrectableRule.html b/Protocols/SubstitutionCorrectableRule.html deleted file mode 100644 index c6b33830d..000000000 --- a/Protocols/SubstitutionCorrectableRule.html +++ /dev/null @@ -1,501 +0,0 @@ - - - - SubstitutionCorrectableRule Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

SubstitutionCorrectableRule

-
-
- -
public protocol SubstitutionCorrectableRule : CorrectableRule
- -
-
-

A correctable rule that can apply its corrections by replacing the content of ranges in the offending file with -updated content.

- - -
-
- -
-
-
-
    -
  • -
    - - - - violationRanges(in:) - -
    -
    -
    -
    -
    -
    -

    Returns the NSString-based NSRanges to be replaced in the specified file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func violationRanges(in file: SwiftLintFile) -> [NSRange]
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - file - - -
    -

    The file in which to find ranges of violations for this rule.

    -
    -
    -
    -
    -

    Return Value

    -

    The NSString-based NSRanges to be replaced in the specified file.

    -
    - -
    -
    -
  • -
  • -
    - - - - substitution(for:in:) - -
    -
    -
    -
    -
    -
    -

    Returns the substitution to apply for the given range.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func substitution(for violationRange: NSRange, in file: SwiftLintFile) -> (NSRange, String)?
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - violationRange - - -
    -

    The NSString-based NSRange of the violation that should be replaced.

    -
    -
    - - file - - -
    -

    The file in which the violation should be replaced.

    -
    -
    -
    -
    -

    Return Value

    -

    The range of the correction and its contents, if one could be computed.

    -
    - -
    -
    -
  • -
  • -
    - - - - correct(file:) - - - Extension method - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func correct(file: SwiftLintFile) -> [Correction]
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Reporters.html b/Reporters.html deleted file mode 100644 index df2e6daf1..000000000 --- a/Reporters.html +++ /dev/null @@ -1,588 +0,0 @@ - - - - Reporters Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Reporters

- -
-
- -
-
-
- -
-
-
- -
-
- - - - diff --git a/Rules.html b/Rules.html deleted file mode 100644 index b2a976075..000000000 --- a/Rules.html +++ /dev/null @@ -1,348 +0,0 @@ - - - - Rules Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Rules

- -
-
- -
-
-
- -
-
-
- -
-
- - - - diff --git a/Structs.html b/Structs.html deleted file mode 100644 index 43545a337..000000000 --- a/Structs.html +++ /dev/null @@ -1,1075 +0,0 @@ - - - - Structures Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Structures

-

The following structures are available globally.

- -
-
- -
-
-
-
    -
  • -
    - - - - RuleListDocumentation - -
    -
    -
    -
    -
    -
    -

    User-facing documentation for a SwiftLint RuleList.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct RuleListDocumentation
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Configuration - -
    -
    -
    -
    -
    -
    -

    The configuration struct for SwiftLint. User-defined in the .swiftlint.yml file, drives the behavior of SwiftLint.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Configuration
    -
    extension Configuration: Hashable
    -
    extension Configuration: CustomStringConvertible
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A collection of keys and values as parsed out of SourceKit, with many conveniences for accessing SwiftLint-specific -values.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct SourceKittenDictionary
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Command - -
    -
    -
    -
    -
    -
    -

    A SwiftLint-interpretable command to modify SwiftLint’s behavior embedded as comments in source code.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Command : Equatable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Correction - -
    -
    -
    -
    -
    -
    -

    A value describing a SwiftLint violation that was corrected.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Correction : Equatable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Example - -
    -
    -
    -
    -
    -
    -

    Captures code and context information for an example of a triggering or -non-triggering style

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Example
    -
    extension Example: Hashable
    -
    extension Example: Comparable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Linter - -
    -
    -
    -
    -
    -
    -

    Represents a file that can be linted for style violations and corrections after being collected.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Linter
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - CollectedLinter - -
    -
    -
    -
    -
    -
    -

    Represents a file that can compute style violations and corrections for a list of rules.

    - -

    A CollectedLinter is only created after a Linter has run its collection steps in Linter.collect(into:).

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct CollectedLinter
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Location - -
    -
    -
    -
    -
    -
    -

    The placement of a segment of Swift in a collection of source files.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Location : CustomStringConvertible, Comparable, Codable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Region - -
    -
    -
    -
    -
    -
    -

    A contiguous region of Swift source code.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Region : Equatable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - RuleDescription - -
    -
    -
    -
    -
    -
    -

    A detailed description for a SwiftLint rule. Used for both documentation and testing purposes.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct RuleDescription : Equatable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - RuleList - -
    -
    -
    -
    -
    -
    -

    A list of available SwiftLint rules.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct RuleList
    -
    extension RuleList: Equatable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - RuleParameter - -
    -
    -
    -
    -
    -
    -

    A configuration parameter for rules.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct RuleParameter<T> : Equatable where T : Equatable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - StyleViolation - -
    -
    -
    -
    -
    -
    -

    A value describing an instance of Swift source code that is considered invalid by a SwiftLint rule.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct StyleViolation : CustomStringConvertible, Equatable, Codable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - SwiftLintSyntaxMap - -
    -
    -
    -
    -
    -
    -

    Represents a Swift file’s syntax information.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct SwiftLintSyntaxMap
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - SwiftLintSyntaxToken - -
    -
    -
    -
    -
    -
    -

    A SwiftLint-aware Swift syntax token.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct SwiftLintSyntaxToken
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - SwiftVersion - -
    -
    -
    -
    -
    -
    -

    A value describing the version of the Swift compiler.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct SwiftVersion : RawRepresentable, Codable, Comparable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Version - -
    -
    -
    -
    -
    -
    -

    A type describing the SwiftLint version.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Version
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

YamlParser

-

-
-
- -
-
-
- -
-
- - - - diff --git a/Structs/CSVReporter.html b/Structs/CSVReporter.html deleted file mode 100644 index 031803a50..000000000 --- a/Structs/CSVReporter.html +++ /dev/null @@ -1,475 +0,0 @@ - - - - CSVReporter Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

CSVReporter

-
-
- -
public struct CSVReporter : Reporter
- -
-
-

Reports violations as a newline-separated string of comma-separated values (CSV).

- - -
-
- -
-
-
-
- - -
- -

Reporter Conformance

-

-
-
-
    -
  • -
    - - - - identifier - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let identifier: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isRealtime - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let isRealtime: Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - generateReport(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func generateReport(_ violations: [StyleViolation]) -> String
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Structs/CheckstyleReporter.html b/Structs/CheckstyleReporter.html deleted file mode 100644 index 6af7528d9..000000000 --- a/Structs/CheckstyleReporter.html +++ /dev/null @@ -1,476 +0,0 @@ - - - - CheckstyleReporter Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

CheckstyleReporter

-
-
- -
public struct CheckstyleReporter : Reporter
- -
-
-

Reports violations as XML conforming to the Checkstyle specification, as defined here: -https://www.jetbrains.com/help/teamcity/xml-report-processing.html

- - -
-
- -
-
-
-
- - -
- -

Reporter Conformance

-

-
-
-
    -
  • -
    - - - - identifier - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let identifier: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isRealtime - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let isRealtime: Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - generateReport(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func generateReport(_ violations: [StyleViolation]) -> String
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Structs/CodeClimateReporter.html b/Structs/CodeClimateReporter.html deleted file mode 100644 index a99a58923..000000000 --- a/Structs/CodeClimateReporter.html +++ /dev/null @@ -1,475 +0,0 @@ - - - - CodeClimateReporter Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

CodeClimateReporter

-
-
- -
public struct CodeClimateReporter : Reporter
- -
-
-

Reports violations as a JSON array in Code Climate format.

- - -
-
- -
-
-
-
- - -
- -

Reporter Conformance

-

-
-
-
    -
  • -
    - - - - identifier - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let identifier: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isRealtime - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let isRealtime: Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - generateReport(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func generateReport(_ violations: [StyleViolation]) -> String
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Structs/CollectedLinter.html b/Structs/CollectedLinter.html deleted file mode 100644 index 47a813b4b..000000000 --- a/Structs/CollectedLinter.html +++ /dev/null @@ -1,603 +0,0 @@ - - - - CollectedLinter Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

CollectedLinter

-
-
- -
public struct CollectedLinter
- -
-
-

Represents a file that can compute style violations and corrections for a list of rules.

- -

A CollectedLinter is only created after a Linter has run its collection steps in Linter.collect(into:).

- - -
-
- -
-
-
-
    -
  • -
    - - - - file - -
    -
    -
    -
    -
    -
    -

    The file to lint with this linter.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let file: SwiftLintFile
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Computes or retrieves style violations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func styleViolations(using storage: RuleStorage) -> [StyleViolation]
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - storage - - -
    -

    The storage object containing all collected info.

    -
    -
    -
    -
    -

    Return Value

    -

    All style violations found by this linter.

    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Computes or retrieves style violations and the time spent executing each rule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func styleViolationsAndRuleTimes(using storage: RuleStorage)
    -    -> ([StyleViolation], [(id: String, time: Double)])
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - storage - - -
    -

    The storage object containing all collected info.

    -
    -
    -
    -
    -

    Return Value

    -

    All style violations found by this linter, and the time spent executing each rule.

    -
    - -
    -
    -
  • -
  • -
    - - - - correct(using:) - -
    -
    -
    -
    -
    -
    -

    Applies corrections for all rules to this file, returning performed corrections.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func correct(using storage: RuleStorage) -> [Correction]
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - storage - - -
    -

    The storage object containing all collected info.

    -
    -
    -
    -
    -

    Return Value

    -

    All corrections that were applied.

    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Formats the file associated with this linter.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func format(useTabs: Bool, indentWidth: Int)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - useTabs - - -
    -

    Should the file be formatted using tabs?

    -
    -
    - - indentWidth - - -
    -

    How many spaces should be used per indentation level.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Structs/Command.html b/Structs/Command.html deleted file mode 100644 index fb03d3d4a..000000000 --- a/Structs/Command.html +++ /dev/null @@ -1,597 +0,0 @@ - - - - Command Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Command

-
-
- -
public struct Command : Equatable
- -
-
-

A SwiftLint-interpretable command to modify SwiftLint’s behavior embedded as comments in source code.

- - -
-
- -
-
-
-
    -
  • -
    - - - - Action - -
    -
    -
    -
    -
    -
    -

    The action (verb) that SwiftLint should perform when interpreting this command.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public enum Action : String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Modifier - -
    -
    -
    -
    -
    -
    -

    The modifier for a command, used to modify its scope.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public enum Modifier : String
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a command based on the specified parameters.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(action: Action, ruleIdentifiers: Set<RuleIdentifier>, line: Int = 0,
    -            character: Int? = nil, modifier: Modifier? = nil, trailingComment: String? = nil)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - action - - -
    -

    This command’s action.

    -
    -
    - - ruleIdentifiers - - -
    -

    The identifiers for the rules associated with this command.

    -
    -
    - - line - - -
    -

    The line in the source file where this command is defined.

    -
    -
    - - character - - -
    -

    The character offset within the line in the source file where this command is - defined.

    -
    -
    - - modifier - - -
    -

    This command’s modifier, if any.

    -
    -
    - - trailingComment - - -
    -

    The comment following this command’s - delimiter, if any.

    -
    -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a command based on the specified parameters.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init?(actionString: String, line: Int, character: Int)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - actionString - - -
    -

    The string in the command’s definition describing its action.

    -
    -
    - - line - - -
    -

    The line in the source file where this command is defined.

    -
    -
    - - character - - -
    -

    The character offset within the line in the source file where this command is - defined.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Structs/Command/Action.html b/Structs/Command/Action.html deleted file mode 100644 index dfe1684ae..000000000 --- a/Structs/Command/Action.html +++ /dev/null @@ -1,410 +0,0 @@ - - - - Action Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Action

-
-
- -
public enum Action : String
- -
-
-

The action (verb) that SwiftLint should perform when interpreting this command.

- - -
-
- -
-
-
-
    -
  • -
    - - - - enable - -
    -
    -
    -
    -
    -
    -

    The rule(s) associated with this command should be enabled by the SwiftLint engine.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case enable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - disable - -
    -
    -
    -
    -
    -
    -

    The rule(s) associated with this command should be disabled by the SwiftLint engine.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case disable
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Structs/Command/Modifier.html b/Structs/Command/Modifier.html deleted file mode 100644 index b93076a2a..000000000 --- a/Structs/Command/Modifier.html +++ /dev/null @@ -1,440 +0,0 @@ - - - - Modifier Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Modifier

-
-
- -
public enum Modifier : String
- -
-
-

The modifier for a command, used to modify its scope.

- - -
-
- -
-
-
-
    -
  • -
    - - - - previous - -
    -
    -
    -
    -
    -
    -

    The command should only apply to the line preceding its definition.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case previous
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - this - -
    -
    -
    -
    -
    -
    -

    The command should only apply to the same line as its definition.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case this
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - next - -
    -
    -
    -
    -
    -
    -

    The command should only apply to the line following its definition.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case next
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Structs/Configuration.html b/Structs/Configuration.html deleted file mode 100644 index 2fd869824..000000000 --- a/Structs/Configuration.html +++ /dev/null @@ -1,1507 +0,0 @@ - - - - Configuration Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Configuration

-
-
- -
public struct Configuration
-
extension Configuration: Hashable
-
extension Configuration: CustomStringConvertible
- -
-
-

The configuration struct for SwiftLint. User-defined in the .swiftlint.yml file, drives the behavior of SwiftLint.

- - -
-
- -
-
-
-
- - -
- -

Properties: Static

-

-
-
-
    -
  • -
    - - - - default - -
    -
    -
    -
    -
    -
    -

    The default Configuration resulting from an empty configuration file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static var `default`: Configuration { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - defaultFileName - -
    -
    -
    -
    -
    -
    -

    The default file name to look for user-defined configurations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let defaultFileName: String
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Public Instance

-

-
-
-
    -
  • -
    - - - - includedPaths - -
    -
    -
    -
    -
    -
    -

    The paths that should be included when linting

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var includedPaths: [String] { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - excludedPaths - -
    -
    -
    -
    -
    -
    -

    The paths that should be excluded when linting

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var excludedPaths: [String] { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - indentation - -
    -
    -
    -
    -
    -
    -

    The style to use when indenting Swift source code.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let indentation: IndentationStyle
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - warningThreshold - -
    -
    -
    -
    -
    -
    -

    The threshold for the number of warnings to tolerate before treating the lint as having failed.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let warningThreshold: Int?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - reporter - -
    -
    -
    -
    -
    -
    -

    The identifier for the Reporter to use to report style violations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let reporter: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - cachePath - -
    -
    -
    -
    -
    -
    -

    The location of the persisted cache to use with this configuration.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let cachePath: String?
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Allow or disallow SwiftLint to exit successfully when passed only ignored or unlintable files.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let allowZeroLintableFiles: Bool
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    This value is true iff the --config parameter was used to specify (a) configuration file(s) -In particular, this means that the value is also true if the --config parameter -was used to explicitly specify the default .swiftlint.yml as the configuration file

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var basedOnCustomConfigurationFiles: Bool { get }
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Public Computed

-

-
-
-
    -
  • -
    - - - - rules - -
    -
    -
    -
    -
    -
    -

    All rules enabled in this configuration

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var rules: [Rule] { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - rootDirectory - -
    -
    -
    -
    -
    -
    -

    The root directory is the directory that included & excluded paths relate to. -By default, the root directory is the current working directory, -but during some merging algorithms it may be used differently. -The rootDirectory also serves as the stopping point when searching for nested configs along the file hierarchy.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var rootDirectory: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - rulesMode - -
    -
    -
    -
    -
    -
    -

    The rules mode used for this configuration.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var rulesMode: RulesMode { get }
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Public

-

-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Creates a Configuration with convenience parameters.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(
    -    configurationFiles: [String], // No default value here to avoid ambiguous Configuration() initializer
    -    enableAllRules: Bool = false,
    -    cachePath: String? = nil,
    -    ignoreParentAndChildConfigs: Bool = false,
    -    mockedNetworkResults: [String: String] = [:],
    -    useDefaultConfigOnFailure: Bool? = nil
    -)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - configurationFiles - - -
    -

    The path on disk to one or multiple configuration files. If this array - is empty, the default .swiftlint.yml file will be used.

    -
    -
    - - enableAllRules - - -
    -

    Enable all available rules.

    -
    -
    - - cachePath - - -
    -

    The location of the persisted cache to use whith this configuration.

    -
    -
    - - ignoreParentAndChildConfigs - - -
    -

    If true, child and parent config references will be ignored.

    -
    -
    - - mockedNetworkResults - - -
    -

    For testing purposes only. Instead of loading the specified urls, - the mocked value will be used. Example: [“http://mock.com”: “content”]

    -
    -
    - - useDefaultConfigOnFailure - - -
    -

    If this value is specified, it will override the normal behavior. - This is only intended for tests checking whether invalid configs fail.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Caching Configurations By Identifier (In-Memory)

-

-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Returns a copy of the current Configuration with its computedCacheDescription property set to the value of -cacheDescription, which is expensive to compute.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func withPrecomputedCacheDescription() -> Configuration
    - -
    -
    -
    -

    Return Value

    -

    A new Configuration value.

    -
    - -
    -
    -
  • -
  • -
    - - - - IndentationStyle - -
    -
    -
    -
    -
    -
    -

    The style of indentation used in a Swift project.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    enum IndentationStyle : Hashable
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Lintable Paths

-

-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Returns the files that can be linted by SwiftLint in the specified parent path.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func lintableFiles(inPath path: String, forceExclude: Bool,
    -                          excludeByPrefix: Bool = false) -> [SwiftLintFile]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - path - - -
    -

    The parent path in which to search for lintable files. Can be a directory or a - file.

    -
    -
    - - forceExclude - - -
    -

    Whether or not excludes defined in this configuration should be applied even if - path is an exact match.

    -
    -
    - - excludeByPrefix - - -
    -

    Whether or not uses excluding by prefix algorithm.

    -
    -
    -
    -
    -

    Return Value

    -

    Files to lint.

    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Returns an array of file paths after removing the excluded paths as defined by this configuration.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func filterExcludedPaths(
    -    fileManager: LintableFileManager = FileManager.default,
    -    in paths: [String]...
    -) -> [String]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - fileManager - - -
    -

    The lintable file manager to use to expand the excluded paths into all matching paths.

    -
    -
    - - paths - - -
    -

    The input paths to filter.

    -
    -
    -
    -
    -

    Return Value

    -

    The input paths after removing the excluded paths.

    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Returns the file paths that are excluded by this configuration using filtering by absolute path prefix.

    - -

    For cases when excluded directories contain many lintable files (e. g. Pods) it works faster than default -algorithm filterExcludedPaths.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func filterExcludedPathsByPrefix(in paths: [String]...) -> [String]
    - -
    -
    -
    -

    Return Value

    -

    The input paths after removing the excluded paths.

    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Accessing File Configurations

-

-
-
-
    -
  • -
    - - - - configuration(for:) - -
    -
    -
    -
    -
    -
    -

    Returns a new configuration that applies to the specified file by merging the current configuration with any -nested configurations in the directory inheritance graph present until the level of the specified file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func configuration(for file: SwiftLintFile) -> Configuration
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - file - - -
    -

    The file for which to obtain a configuration value.

    -
    -
    -
    -
    -

    Return Value

    -

    A new configuration.

    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Initializers

-

-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Creates a Configuration value based on the specified parameters.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(
    -    dict: [String: Any],
    -    ruleList: RuleList = primaryRuleList,
    -    enableAllRules: Bool = false,
    -    cachePath: String? = nil
    -) throws
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - - - - - -
    - - dict - - -
    -

    The untyped dictionary to serve as the input for this typed configuration. - Typically generated from a YAML-formatted file.

    -
    -
    - - ruleList - - -
    -

    The list of rules to be available to this configuration.

    -
    -
    - - enableAllRules - - -
    -

    Whether all rules from ruleList should be enabled, regardless of the - settings in dict.

    -
    -
    - - cachePath - - -
    -

    The location of the persisted cache on disk.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - RulesMode - -
    -
    -
    -
    -
    -
    -

    Represents how a Configuration object can be configured with regards to rules.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    enum RulesMode
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Hashable

-

-
-
-
    -
  • -
    - - - - hash(into:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func hash(into hasher: inout Hasher)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func == (lhs: Configuration, rhs: Configuration) -> Bool
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

CustomStringConvertible

-

-
-
-
    -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Structs/Configuration/IndentationStyle.html b/Structs/Configuration/IndentationStyle.html deleted file mode 100644 index 0f805acb4..000000000 --- a/Structs/Configuration/IndentationStyle.html +++ /dev/null @@ -1,440 +0,0 @@ - - - - IndentationStyle Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

IndentationStyle

-
-
- -
enum IndentationStyle : Hashable
- -
-
-

The style of indentation used in a Swift project.

- - -
-
- -
-
-
-
    -
  • -
    - - - - tabs - -
    -
    -
    -
    -
    -
    -

    Swift source code should be indented using tabs.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case tabs
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - spaces(count:) - -
    -
    -
    -
    -
    -
    -

    Swift source code should be indented using spaces with count spaces per indentation level.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case spaces(count: Int)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - default - -
    -
    -
    -
    -
    -
    -

    The default indentation style if none is explicitly provided.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static var `default`: Configuration.IndentationStyle
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Structs/Configuration/RulesMode.html b/Structs/Configuration/RulesMode.html deleted file mode 100644 index 865748605..000000000 --- a/Structs/Configuration/RulesMode.html +++ /dev/null @@ -1,442 +0,0 @@ - - - - RulesMode Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

RulesMode

-
-
- -
enum RulesMode
- -
-
-

Represents how a Configuration object can be configured with regards to rules.

- - -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    The default rules mode, which will enable all rules that aren’t defined as being opt-in -(conforming to the OptInRule protocol), minus the rules listed in disabled, plus the rules lised in -optIn.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case `default`(disabled: Set<String>, optIn: Set<String>)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - only(_:) - -
    -
    -
    -
    -
    -
    -

    Only enable the rules explicitly listed.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case only(Set<String>)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - allEnabled - -
    -
    -
    -
    -
    -
    -

    Enable all available rules.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case allEnabled
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Structs/Correction.html b/Structs/Correction.html deleted file mode 100644 index 0886f891b..000000000 --- a/Structs/Correction.html +++ /dev/null @@ -1,440 +0,0 @@ - - - - Correction Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Correction

-
-
- -
public struct Correction : Equatable
- -
-
-

A value describing a SwiftLint violation that was corrected.

- - -
-
- -
-
-
-
    -
  • -
    - - - - ruleDescription - -
    -
    -
    -
    -
    -
    -

    The description of the rule for which this correction was applied.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let ruleDescription: RuleDescription
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - location - -
    -
    -
    -
    -
    -
    -

    The location of the original violation that was corrected.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let location: Location
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - consoleDescription - -
    -
    -
    -
    -
    -
    -

    The console-printable description for this correction.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var consoleDescription: String { get }
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Structs/EmojiReporter.html b/Structs/EmojiReporter.html deleted file mode 100644 index f69ebf63f..000000000 --- a/Structs/EmojiReporter.html +++ /dev/null @@ -1,475 +0,0 @@ - - - - EmojiReporter Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

EmojiReporter

-
-
- -
public struct EmojiReporter : Reporter
- -
-
-

Reports violations in the format that’s both fun and easy to read.

- - -
-
- -
-
-
-
- - -
- -

Reporter Conformance

-

-
-
-
    -
  • -
    - - - - identifier - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let identifier: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isRealtime - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let isRealtime: Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - generateReport(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func generateReport(_ violations: [StyleViolation]) -> String
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Structs/Example.html b/Structs/Example.html deleted file mode 100644 index 6aab61a00..000000000 --- a/Structs/Example.html +++ /dev/null @@ -1,854 +0,0 @@ - - - - Example Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Example

-
-
- -
public struct Example
-
extension Example: Hashable
-
extension Example: Comparable
- -
-
-

Captures code and context information for an example of a triggering or -non-triggering style

- - -
-
- -
-
-
-
    -
  • -
    - - - - code - -
    -
    -
    -
    -
    -
    -

    The contents of the example

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var code: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - configuration - -
    -
    -
    -
    -
    -
    -

    The untyped configuration to apply to the rule, if deviating from the default configuration. -The structure should match what is expected as a configuration value for the rule being tested.

    - -

    For example, if the following YAML would be used to configure the rule:

    -
    severity: warning
    -
    - -

    Then the equivalent configuration value would be ["severity": "warning"].

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var configuration: Any? { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - testMultiByteOffsets - -
    -
    -
    -
    -
    -
    -

    Whether the example should be tested by prepending multibyte grapheme clusters

    -
    -

    See also

    - addEmoji(_:) - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var testMultiByteOffsets: Bool { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - testOnLinux - -
    -
    -
    -
    -
    -
    -

    Whether the example should be tested on Linux

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var testOnLinux: Bool { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - file - -
    -
    -
    -
    -
    -
    -

    The path to the file where the example was created

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var file: StaticString { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - line - -
    -
    -
    -
    -
    -
    -

    The line in the file where the example was created

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var line: UInt
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Create a new Example with the specified code, file, and line.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    init(_ code: String, configuration: Any? = nil, testMultiByteOffsets: Bool = true, testOnLinux: Bool = true,
    -     file: StaticString = #file, line: UInt = #line, excludeFromDocumentation: Bool = false)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - code - - -
    -

    The contents of the example.

    -
    -
    - - configuration - - -
    -

    The untyped configuration to apply to the rule, if deviating from the default - configuration.

    -
    -
    - - testMultibyteOffsets - - -
    -

    Whether the example should be tested by prepending multibyte grapheme clusters.

    -
    -
    - - testOnLinux - - -
    -

    Whether the example should be tested on Linux.

    -
    -
    - - file - - -
    -

    The path to the file where the example is located. - Defaults to the file where this initializer is called.

    -
    -
    - - line - - -
    -

    The line in the file where the example is located. - Defaults to the line where this initializer is called.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - with(code:) - -
    -
    -
    -
    -
    -
    -

    Returns the same example, but with the code that is passed in

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func with(code: String) -> Example
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - code - - -
    -

    the new code to use in the modified example

    -
    -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Returns a copy of the Example with all instances of the “↓” character removed.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func removingViolationMarkers() -> Example
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - focused() - -
    -
    -
    -
    -
    -
    -

    Makes the current example focused.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func focused() -> Example
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func == (lhs: Example, rhs: Example) -> Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - hash(into:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func hash(into hasher: inout Hasher)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - <(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func < (lhs: Example, rhs: Example) -> Bool
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Structs/GitHubActionsLoggingReporter.html b/Structs/GitHubActionsLoggingReporter.html deleted file mode 100644 index 8a7a84db6..000000000 --- a/Structs/GitHubActionsLoggingReporter.html +++ /dev/null @@ -1,475 +0,0 @@ - - - - GitHubActionsLoggingReporter Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

GitHubActionsLoggingReporter

-
-
- -
public struct GitHubActionsLoggingReporter : Reporter
- -
-
-

Reports violations in the format GitHub-hosted virtual machine for Actions can recognize as messages.

- - -
-
- -
-
-
-
- - -
- -

Reporter Conformance

-

-
-
-
    -
  • -
    - - - - identifier - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let identifier: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isRealtime - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let isRealtime: Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - generateReport(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func generateReport(_ violations: [StyleViolation]) -> String
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Structs/GitLabJUnitReporter.html b/Structs/GitLabJUnitReporter.html deleted file mode 100644 index 1ee9b4c65..000000000 --- a/Structs/GitLabJUnitReporter.html +++ /dev/null @@ -1,475 +0,0 @@ - - - - GitLabJUnitReporter Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

GitLabJUnitReporter

-
-
- -
public struct GitLabJUnitReporter : Reporter
- -
-
-

Reports violations as JUnit XML supported by GitLab.

- - -
-
- -
-
-
-
- - -
- -

Reporter Conformance

-

-
-
-
    -
  • -
    - - - - identifier - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let identifier: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isRealtime - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let isRealtime: Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - generateReport(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func generateReport(_ violations: [StyleViolation]) -> String
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Structs/HTMLReporter.html b/Structs/HTMLReporter.html deleted file mode 100644 index 941cd2e5e..000000000 --- a/Structs/HTMLReporter.html +++ /dev/null @@ -1,475 +0,0 @@ - - - - HTMLReporter Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

HTMLReporter

-
-
- -
public struct HTMLReporter : Reporter
- -
-
-

Reports violations as HTML.

- - -
-
- -
-
-
-
- - -
- -

Reporter Conformance

-

-
-
-
    -
  • -
    - - - - identifier - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let identifier: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isRealtime - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let isRealtime: Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - generateReport(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func generateReport(_ violations: [StyleViolation]) -> String
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Structs/JSONReporter.html b/Structs/JSONReporter.html deleted file mode 100644 index 89e920d99..000000000 --- a/Structs/JSONReporter.html +++ /dev/null @@ -1,475 +0,0 @@ - - - - JSONReporter Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

JSONReporter

-
-
- -
public struct JSONReporter : Reporter
- -
-
-

Reports violations as a JSON array.

- - -
-
- -
-
-
-
- - -
- -

Reporter Conformance

-

-
-
-
    -
  • -
    - - - - identifier - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let identifier: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isRealtime - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let isRealtime: Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - generateReport(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func generateReport(_ violations: [StyleViolation]) -> String
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Structs/JUnitReporter.html b/Structs/JUnitReporter.html deleted file mode 100644 index aeaabecfd..000000000 --- a/Structs/JUnitReporter.html +++ /dev/null @@ -1,475 +0,0 @@ - - - - JUnitReporter Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

JUnitReporter

-
-
- -
public struct JUnitReporter : Reporter
- -
-
-

Reports violations as JUnit XML.

- - -
-
- -
-
-
-
- - -
- -

Reporter Conformance

-

-
-
-
    -
  • -
    - - - - identifier - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let identifier: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isRealtime - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let isRealtime: Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - generateReport(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func generateReport(_ violations: [StyleViolation]) -> String
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Structs/Linter.html b/Structs/Linter.html deleted file mode 100644 index 21d1038dd..000000000 --- a/Structs/Linter.html +++ /dev/null @@ -1,549 +0,0 @@ - - - - Linter Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Linter

-
-
- -
public struct Linter
- -
-
-

Represents a file that can be linted for style violations and corrections after being collected.

- - -
-
- -
-
-
-
    -
  • -
    - - - - file - -
    -
    -
    -
    -
    -
    -

    The file to lint with this linter.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let file: SwiftLintFile
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isCollecting - -
    -
    -
    -
    -
    -
    -

    Whether or not this linter will be used to collect information from several files.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var isCollecting: Bool
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a Linter by specifying its properties directly.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(file: SwiftLintFile, configuration: Configuration = Configuration.default, cache: LinterCache? = nil,
    -            compilerArguments: [String] = [])
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - - - - - -
    - - file - - -
    -

    The file to lint with this linter.

    -
    -
    - - configuration - - -
    -

    The SwiftLint configuration to apply to this linter.

    -
    -
    - - cache - - -
    -

    The persisted cache to use for this linter.

    -
    -
    - - compilerArguments - - -
    -

    The compiler arguments to use for this linter if it is to execute analyzer rules.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - collect(into:) - -
    -
    -
    -
    -
    -
    -

    Returns a linter capable of checking for violations after running each rule’s collection step.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func collect(into storage: RuleStorage) -> CollectedLinter
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - storage - - -
    -

    The storage object where collected info should be saved.

    -
    -
    -
    -
    -

    Return Value

    -

    A linter capable of checking for violations after running each rule’s collection step.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Structs/Location.html b/Structs/Location.html deleted file mode 100644 index d8ed175d9..000000000 --- a/Structs/Location.html +++ /dev/null @@ -1,739 +0,0 @@ - - - - Location Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Location

-
-
- -
public struct Location : CustomStringConvertible, Comparable, Codable
- -
-
-

The placement of a segment of Swift in a collection of source files.

- - -
-
- -
-
-
-
    -
  • -
    - - - - file - -
    -
    -
    -
    -
    -
    -

    The file path on disk for this location.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let file: String?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - line - -
    -
    -
    -
    -
    -
    -

    The line offset in the file for this location. 1-indexed.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let line: Int?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - character - -
    -
    -
    -
    -
    -
    -

    The character offset in the file for this location. 1-indexed.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let character: Int?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    -

    A lossless printable description of this location.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - relativeFile - -
    -
    -
    -
    -
    -
    -

    The file path for this location relative to the current working directory.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var relativeFile: String? { get }
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a Location by specifying its properties directly.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(file: String?, line: Int? = nil, character: Int? = nil)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - file - - -
    -

    The file path on disk for this location.

    -
    -
    - - line - - -
    -

    The line offset in the file for this location. 1-indexed.

    -
    -
    - - character - - -
    -

    The character offset in the file for this location. 1-indexed.

    -
    -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a Location based on a SwiftLintFile and a byte-offset into the file. -Fails if the specified offset was not a valid location in the file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(file: SwiftLintFile, byteOffset offset: ByteCount)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - file - - -
    -

    The file for this location.

    -
    -
    - - offset - - -
    -

    The offset in bytes into the file for this location.

    -
    -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a Location based on a SwiftLintFile and a UTF8 character-offset into the file. -Fails if tthe specified offset was not a valid location in the file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(file: SwiftLintFile, characterOffset offset: Int)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - file - - -
    -

    The file for this location.

    -
    -
    - - offset - - -
    -

    The offset in UTF8 fragments into the file for this location.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Comparable

-

-
-
-
    -
  • -
    - - - - <(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func < (lhs: Location, rhs: Location) -> Bool
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Structs/MarkdownReporter.html b/Structs/MarkdownReporter.html deleted file mode 100644 index 99d4b1a44..000000000 --- a/Structs/MarkdownReporter.html +++ /dev/null @@ -1,475 +0,0 @@ - - - - MarkdownReporter Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

MarkdownReporter

-
-
- -
public struct MarkdownReporter : Reporter
- -
-
-

Reports violations as markdown formated (with tables).

- - -
-
- -
-
-
-
- - -
- -

Reporter Conformance

-

-
-
-
    -
  • -
    - - - - identifier - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let identifier: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isRealtime - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let isRealtime: Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - generateReport(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func generateReport(_ violations: [StyleViolation]) -> String
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Structs/Region.html b/Structs/Region.html deleted file mode 100644 index 8c16c8dcd..000000000 --- a/Structs/Region.html +++ /dev/null @@ -1,728 +0,0 @@ - - - - Region Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Region

-
-
- -
public struct Region : Equatable
- -
-
-

A contiguous region of Swift source code.

- - -
-
- -
-
-
-
    -
  • -
    - - - - start - -
    -
    -
    -
    -
    -
    -

    The location describing the start of the region. All locations that are less than this value -(earlier in the source file) are not contained in this region.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let start: Location
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - end - -
    -
    -
    -
    -
    -
    -

    The location describing the end of the region. All locations that are greater than this value -(later in the source file) are not contained in this region.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let end: Location
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    All SwiftLint rule identifiers that are disabled in this region.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let disabledRuleIdentifiers: Set<RuleIdentifier>
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a Region by setting explicit values for all its properties.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(start: Location, end: Location, disabledRuleIdentifiers: Set<RuleIdentifier>)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - start - - -
    -

    The region’s starting location.

    -
    -
    - - end - - -
    -

    The region’s ending location.

    -
    -
    - - disabledRuleIdentifiers - - -
    -

    All SwiftLint rule identifiers that are disabled in this region.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - contains(_:) - -
    -
    -
    -
    -
    -
    -

    Whether the specific location is contained in this region.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func contains(_ location: Location) -> Bool
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - location - - -
    -

    The location to check for containment.

    -
    -
    -
    -
    -

    Return Value

    -

    True if the specific location is contained in this region.

    -
    - -
    -
    -
  • -
  • -
    - - - - isRuleEnabled(_:) - -
    -
    -
    -
    -
    -
    -

    Whether the specified rule is enabled in this region.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func isRuleEnabled(_ rule: Rule) -> Bool
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - rule - - -
    -

    The rule whose status should be determined.

    -
    -
    -
    -
    -

    Return Value

    -

    True if the specified rule is enabled in this region.

    -
    - -
    -
    -
  • -
  • -
    - - - - isRuleDisabled(_:) - -
    -
    -
    -
    -
    -
    -

    Whether the specified rule is disabled in this region.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func isRuleDisabled(_ rule: Rule) -> Bool
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - rule - - -
    -

    The rule whose status should be determined.

    -
    -
    -
    -
    -

    Return Value

    -

    True if the specified rule is disabled in this region.

    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Returns the deprecated rule aliases that are disabling the specified rule in this region. -Returns the empty set if the rule isn’t disabled in this region.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func deprecatedAliasesDisabling(rule: Rule) -> Set<String>
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - rule - - -
    -

    The rule to check.

    -
    -
    -
    -
    -

    Return Value

    -

    Deprecated rule aliases.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Structs/RuleDescription.html b/Structs/RuleDescription.html deleted file mode 100644 index 860b1525e..000000000 --- a/Structs/RuleDescription.html +++ /dev/null @@ -1,935 +0,0 @@ - - - - RuleDescription Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleDescription

-
-
- -
public struct RuleDescription : Equatable
- -
-
-

A detailed description for a SwiftLint rule. Used for both documentation and testing purposes.

- - -
-
- -
-
-
-
    -
  • -
    - - - - identifier - -
    -
    -
    -
    -
    -
    -

    The rule’s unique identifier, to be used in configuration files and SwiftLint commands. -Should be short and only comprised of lowercase latin alphabet letters and underscores formatted in snake case.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let identifier: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - name - -
    -
    -
    -
    -
    -
    -

    The rule’s human-readable name. Should be short, descriptive and formatted in Title Case. May contain spaces.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let name: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    -

    The rule’s verbose description. Should read as a sentence or short paragraph. Good things to include are an -explanation of the rule’s purpose and rationale.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let description: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - kind - -
    -
    -
    -
    -
    -
    -

    The RuleKind that best categorizes this rule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let kind: RuleKind
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - nonTriggeringExamples - -
    -
    -
    -
    -
    -
    -

    Swift source examples that do not trigger a violation for this rule. Used for documentation purposes to inform -users of various samples of code that are considered valid by this rule. Should be valid Swift syntax but is not -required to compile.

    - -

    These examples are also used for testing purposes if the rule conforms to AutomaticTestableRule. Tests will -validate that the rule does not trigger any violations for these examples.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let nonTriggeringExamples: [Example]
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - triggeringExamples - -
    -
    -
    -
    -
    -
    -

    Swift source examples that do trigger one or more violations for this rule. Used for documentation purposes to -inform users of various samples of code that are considered invalid by this rule. Should be valid Swift syntax -but is not required to compile.

    - -

    Violations should occur where ↓ markers are located.

    - -

    These examples are also used for testing purposes if the rule conforms to AutomaticTestableRule. Tests will -validate that the rule triggers violations for these examples wherever ↓ markers are located.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let triggeringExamples: [Example]
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - corrections - -
    -
    -
    -
    -
    -
    -

    Pairs of Swift source examples, where keys are examples that trigger violations for this rule, and the values -are the expected value after applying corrections with the rule.

    - -

    Rules that aren’t correctable (conforming to the CorrectableRule protocol) should leave property empty.

    - -

    These examples are used for testing purposes if the rule conforms to AutomaticTestableRule. Tests will -validate that the rule corrects all keys to their corresponding values.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let corrections: [Example : Example]
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - deprecatedAliases - -
    -
    -
    -
    -
    -
    -

    Any previous iteration of the rule’s identifier that was previously shipped with SwiftLint.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let deprecatedAliases: Set<String>
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - minSwiftVersion - -
    -
    -
    -
    -
    -
    -

    The oldest version of the Swift compiler supported by this rule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let minSwiftVersion: SwiftVersion
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - requiresFileOnDisk - -
    -
    -
    -
    -
    -
    -

    Whether or not this rule can only be executed on a file physically on-disk. Typically necessary for rules -conforming to AnalyzerRule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let requiresFileOnDisk: Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - consoleDescription - -
    -
    -
    -
    -
    -
    -

    The console-printable string for this description.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var consoleDescription: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - allIdentifiers - -
    -
    -
    -
    -
    -
    -

    All identifiers that have been used to uniquely identify this rule in past and current SwiftLint versions.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var allIdentifiers: [String] { get }
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a RuleDescription by specifying all its properties directly.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(identifier: String, name: String, description: String, kind: RuleKind,
    -            minSwiftVersion: SwiftVersion = .five,
    -            nonTriggeringExamples: [Example] = [], triggeringExamples: [Example] = [],
    -            corrections: [Example: Example] = [:],
    -            deprecatedAliases: Set<String> = [],
    -            requiresFileOnDisk: Bool = false)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - identifier - - -
    -

    Sets the description’s identifier property.

    -
    -
    - - name - - -
    -

    Sets the description’s name property.

    -
    -
    - - description - - -
    -

    Sets the description’s description property.

    -
    -
    - - kind - - -
    -

    Sets the description’s kind property.

    -
    -
    - - minSwiftVersion - - -
    -

    Sets the description’s minSwiftVersion property.

    -
    -
    - - nonTriggeringExamples - - -
    -

    Sets the description’s nonTriggeringExamples property.

    -
    -
    - - triggeringExamples - - -
    -

    Sets the description’s triggeringExamples property.

    -
    -
    - - corrections - - -
    -

    Sets the description’s corrections property.

    -
    -
    - - deprecatedAliases - - -
    -

    Sets the description’s deprecatedAliases property.

    -
    -
    - - requiresFileOnDisk - - -
    -

    Sets the description’s requiresFileOnDisk property.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Equatable

-

-
-
-
    -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func == (lhs: RuleDescription, rhs: RuleDescription) -> Bool
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Structs/RuleList.html b/Structs/RuleList.html deleted file mode 100644 index ca4f839f8..000000000 --- a/Structs/RuleList.html +++ /dev/null @@ -1,521 +0,0 @@ - - - - RuleList Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleList

-
-
- -
public struct RuleList
-
extension RuleList: Equatable
- -
-
-

A list of available SwiftLint rules.

- - -
-
- -
-
-
-
    -
  • -
    - - - - list - -
    -
    -
    -
    -
    -
    -

    The rules contained in this list.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let list: [String : Rule.Type]
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Initializers

-

-
-
-
    -
  • -
    - - - - init(rules:) - -
    -
    -
    -
    -
    -
    -

    Creates a RuleList by specifying all its rules.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(rules: Rule.Type...)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - rules - - -
    -

    The rules to be contained in this list.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(rules:) - -
    -
    -
    -
    -
    -
    -

    Creates a RuleList by specifying all its rules.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(rules: [Rule.Type])
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - rules - - -
    -

    The rules to be contained in this list.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func == (lhs: RuleList, rhs: RuleList) -> Bool
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Structs/RuleListDocumentation.html b/Structs/RuleListDocumentation.html deleted file mode 100644 index 9676d5260..000000000 --- a/Structs/RuleListDocumentation.html +++ /dev/null @@ -1,453 +0,0 @@ - - - - RuleListDocumentation Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleListDocumentation

-
-
- -
public struct RuleListDocumentation
- -
-
-

User-facing documentation for a SwiftLint RuleList.

- - -
-
- -
-
-
-
    -
  • -
    - - - - init(_:) - -
    -
    -
    -
    -
    -
    -

    Creates a RuleListDocumentation instance from a RuleList.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(_ list: RuleList)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - list - - -
    -

    A RuleList to document.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - write(to:) - -
    -
    -
    -
    -
    -
    -

    Write the rule list documentation as markdown files to the specified directory.

    -
    -

    Throws

    -

    Throws if the files could not be written to.

    - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func write(to url: URL) throws
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - url - - -
    -

    Local URL for directory where the markdown files for this documentation should be saved.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Structs/RuleParameter.html b/Structs/RuleParameter.html deleted file mode 100644 index 8af84e5ef..000000000 --- a/Structs/RuleParameter.html +++ /dev/null @@ -1,471 +0,0 @@ - - - - RuleParameter Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleParameter

-
-
- -
public struct RuleParameter<T> : Equatable where T : Equatable
- -
-
-

A configuration parameter for rules.

- - -
-
- -
-
-
-
    -
  • -
    - - - - severity - -
    -
    -
    -
    -
    -
    -

    The severity that should be assigned to the violation of this parameter’s value is met.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let severity: ViolationSeverity
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - value - -
    -
    -
    -
    -
    -
    -

    The value to configure the rule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let value: T
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(severity:value:) - -
    -
    -
    -
    -
    -
    -

    Creates a RuleParameter by specifying its properties directly.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(severity: ViolationSeverity, value: T)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - severity - - -
    -

    The severity that should be assigned to the violation of this parameter’s value is met.

    -
    -
    - - value - - -
    -

    The value to configure the rule.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Structs/SonarQubeReporter.html b/Structs/SonarQubeReporter.html deleted file mode 100644 index 9e349c9ba..000000000 --- a/Structs/SonarQubeReporter.html +++ /dev/null @@ -1,475 +0,0 @@ - - - - SonarQubeReporter Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

SonarQubeReporter

-
-
- -
public struct SonarQubeReporter : Reporter
- -
-
-

Reports violations in SonarQube import format.

- - -
-
- -
-
-
-
- - -
- -

Reporter Conformance

-

-
-
-
    -
  • -
    - - - - identifier - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let identifier: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isRealtime - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let isRealtime: Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - generateReport(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func generateReport(_ violations: [StyleViolation]) -> String
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Structs/SourceKittenDictionary.html b/Structs/SourceKittenDictionary.html deleted file mode 100644 index 458163b6d..000000000 --- a/Structs/SourceKittenDictionary.html +++ /dev/null @@ -1,531 +0,0 @@ - - - - SourceKittenDictionary Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

SourceKittenDictionary

-
-
- -
public struct SourceKittenDictionary
- -
-
-

A collection of keys and values as parsed out of SourceKit, with many conveniences for accessing SwiftLint-specific -values.

- - -
-
- -
-
-
-
    -
  • -
    - - - - value - -
    -
    -
    -
    -
    -
    -

    The underlying SourceKitten dictionary.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let value: [String : SourceKitRepresentable]
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - substructure - -
    -
    -
    -
    -
    -
    -

    The cached substructure for this dictionary. Empty if there is no substructure.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let substructure: [SourceKittenDictionary]
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - expressionKind - -
    -
    -
    -
    -
    -
    -

    The kind of Swift expression represented by this dictionary, if it is an expression.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let expressionKind: SwiftExpressionKind?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - declarationKind - -
    -
    -
    -
    -
    -
    -

    The kind of Swift declaration represented by this dictionary, if it is a declaration.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let declarationKind: SwiftDeclarationKind?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - statementKind - -
    -
    -
    -
    -
    -
    -

    The kind of Swift statement represented by this dictionary, if it is a statement.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let statementKind: StatementKind?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - accessibility - -
    -
    -
    -
    -
    -
    -

    The accessibility level for this dictionary, if it is a declaration.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let accessibility: AccessControlLevel?
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Structs/StyleViolation.html b/Structs/StyleViolation.html deleted file mode 100644 index 0f09e5a9e..000000000 --- a/Structs/StyleViolation.html +++ /dev/null @@ -1,746 +0,0 @@ - - - - StyleViolation Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

StyleViolation

-
-
- -
public struct StyleViolation : CustomStringConvertible, Equatable, Codable
- -
-
-

A value describing an instance of Swift source code that is considered invalid by a SwiftLint rule.

- - -
-
- -
-
-
-
    -
  • -
    - - - - ruleIdentifier - -
    -
    -
    -
    -
    -
    -

    The identifier of the rule that generated this violation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let ruleIdentifier: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - ruleDescription - -
    -
    -
    -
    -
    -
    -

    The description of the rule that generated this violation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let ruleDescription: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - ruleName - -
    -
    -
    -
    -
    -
    -

    The name of the rule that generated this violation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let ruleName: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - severity - -
    -
    -
    -
    -
    -
    -

    The severity of this violation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var severity: ViolationSeverity { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - location - -
    -
    -
    -
    -
    -
    -

    The location of this violation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var location: Location { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - reason - -
    -
    -
    -
    -
    -
    -

    The justification for this violation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let reason: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    -

    A printable description for this violation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a StyleViolation by specifying its properties directly.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(ruleDescription: RuleDescription,
    -            severity: ViolationSeverity = .warning,
    -            location: Location,
    -            reason: String? = nil)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - - - - - -
    - - ruleDescription - - -
    -

    The description of the rule that generated this violation.

    -
    -
    - - severity - - -
    -

    The severity of this violation.

    -
    -
    - - location - - -
    -

    The location of this violation.

    -
    -
    - - reason - - -
    -

    The justification for this violation.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - with(severity:) - -
    -
    -
    -
    -
    -
    -

    Returns the same violation, but with the severity that is passed in

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func with(severity: ViolationSeverity) -> StyleViolation
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - severity - - -
    -

    the new severity to use in the modified violation

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - with(location:) - -
    -
    -
    -
    -
    -
    -

    Returns the same violation, but with the location that is passed in

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func with(location: Location) -> StyleViolation
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - location - - -
    -

    the new location to use in the modified violation

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Structs/SwiftLintSyntaxMap.html b/Structs/SwiftLintSyntaxMap.html deleted file mode 100644 index 774055fd5..000000000 --- a/Structs/SwiftLintSyntaxMap.html +++ /dev/null @@ -1,459 +0,0 @@ - - - - SwiftLintSyntaxMap Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

SwiftLintSyntaxMap

-
-
- -
public struct SwiftLintSyntaxMap
- -
-
-

Represents a Swift file’s syntax information.

- - -
-
- -
-
-
-
    -
  • -
    - - - - value - -
    -
    -
    -
    -
    -
    -

    The raw SyntaxMap obtained by SourceKitten.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let value: SyntaxMap
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - tokens - -
    -
    -
    -
    -
    -
    -

    The SwiftLint-specific syntax tokens for this syntax map.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let tokens: [SwiftLintSyntaxToken]
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(value:) - -
    -
    -
    -
    -
    -
    -

    Creates a SwiftLintSyntaxMap from the raw SyntaxMap obtained by SourceKitten.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(value: SyntaxMap)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - value - - -
    -

    The raw SyntaxMap obtained by SourceKitten.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Structs/SwiftLintSyntaxToken.html b/Structs/SwiftLintSyntaxToken.html deleted file mode 100644 index d24eb7a19..000000000 --- a/Structs/SwiftLintSyntaxToken.html +++ /dev/null @@ -1,549 +0,0 @@ - - - - SwiftLintSyntaxToken Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

SwiftLintSyntaxToken

-
-
- -
public struct SwiftLintSyntaxToken
- -
-
-

A SwiftLint-aware Swift syntax token.

- - -
-
- -
-
-
-
    -
  • -
    - - - - value - -
    -
    -
    -
    -
    -
    -

    The raw SyntaxToken obtained by SourceKitten.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let value: SyntaxToken
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - kind - -
    -
    -
    -
    -
    -
    -

    The syntax kind associated with is token.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let kind: SyntaxKind?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(value:) - -
    -
    -
    -
    -
    -
    -

    Creates a SwiftLintSyntaxToken from the raw SyntaxToken obtained by SourceKitten.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(value: SyntaxToken)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - value - - -
    -

    The raw SyntaxToken obtained by SourceKitten.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - range - -
    -
    -
    -
    -
    -
    -

    The byte range in a source file for this token.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var range: ByteRange { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - offset - -
    -
    -
    -
    -
    -
    -

    The starting byte offset in a source file for this token.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var offset: ByteCount { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - length - -
    -
    -
    -
    -
    -
    -

    The length in bytes for this token.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var length: ByteCount { get }
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Structs/SwiftVersion.html b/Structs/SwiftVersion.html deleted file mode 100644 index 44f7a7d2e..000000000 --- a/Structs/SwiftVersion.html +++ /dev/null @@ -1,711 +0,0 @@ - - - - SwiftVersion Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

SwiftVersion

-
-
- -
public struct SwiftVersion : RawRepresentable, Codable, Comparable
- -
-
-

A value describing the version of the Swift compiler.

- - -
-
- -
-
-
- -
-
-
- -
-
- - - - diff --git a/Structs/Version.html b/Structs/Version.html deleted file mode 100644 index f14f7adcc..000000000 --- a/Structs/Version.html +++ /dev/null @@ -1,410 +0,0 @@ - - - - Version Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Version

-
-
- -
public struct Version
- -
-
-

A type describing the SwiftLint version.

- - -
-
- -
-
-
-
    -
  • -
    - - - - value - -
    -
    -
    -
    -
    -
    -

    The string value for this version.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let value: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - current - -
    -
    -
    -
    -
    -
    -

    The current SwiftLint version.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let current: Version
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Structs/XcodeReporter.html b/Structs/XcodeReporter.html deleted file mode 100644 index 85b7dd9c6..000000000 --- a/Structs/XcodeReporter.html +++ /dev/null @@ -1,475 +0,0 @@ - - - - XcodeReporter Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

XcodeReporter

-
-
- -
public struct XcodeReporter : Reporter
- -
-
-

Reports violations in the format Xcode uses to display in the IDE. (default)

- - -
-
- -
-
-
-
- - -
- -

Reporter Conformance

-

-
-
-
    -
  • -
    - - - - identifier - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let identifier: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isRealtime - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let isRealtime: Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - generateReport(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func generateReport(_ violations: [StyleViolation]) -> String
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/Structs/YamlParser.html b/Structs/YamlParser.html deleted file mode 100644 index 14020208a..000000000 --- a/Structs/YamlParser.html +++ /dev/null @@ -1,421 +0,0 @@ - - - - YamlParser Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

YamlParser

-
-
- -
public struct YamlParser
- -
-
-

An interface for parsing YAML.

- - -
-
- -
-
-
-
    -
  • -
    - - - - parse(_:env:) - -
    -
    -
    -
    -
    -
    -

    Parses the input YAML string as an untyped dictionary.

    -
    -

    Throws

    -

    Throws if the yaml string provided could not be parsed.

    - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func parse(_ yaml: String,
    -                         env: [String: String] = ProcessInfo.processInfo.environment) throws -> [String: Any]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - yaml - - -
    -

    YAML-formatted string.

    -
    -
    - - env - - -
    -

    The environment to use to expand variables in the YAML.

    -
    -
    -
    -
    -

    Return Value

    -

    The parsed YAML as an untyped dictionary.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/anonymous_argument_in_multiline_closure.html b/anonymous_argument_in_multiline_closure.html deleted file mode 100644 index 2739a015f..000000000 --- a/anonymous_argument_in_multiline_closure.html +++ /dev/null @@ -1,361 +0,0 @@ - - - - anonymous_argument_in_multiline_closure Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Anonymous Argument in Multiline Closure

- -

Use named arguments in multiline closures

- -
    -
  • Identifier: anonymous_argument_in_multiline_closure
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
closure { $0 }
-
-
closure { print($0) }
-
-
closure { arg in
-    print(arg)
-}
-
-
closure { arg in
-    nestedClosure { $0 + arg }
-}
-
-

Triggering Examples

-
closure {
-    print(↓$0)
-}
-
- -
-
- - -
-
- - - - diff --git a/anyobject_protocol.html b/anyobject_protocol.html deleted file mode 100644 index 4e76f9759..000000000 --- a/anyobject_protocol.html +++ /dev/null @@ -1,366 +0,0 @@ - - - - anyobject_protocol Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

AnyObject Protocol

- -

Prefer using AnyObject over class for class-only protocols.

- -
    -
  • Identifier: anyobject_protocol
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
protocol SomeProtocol {}
-
-
-
protocol SomeClassOnlyProtocol: AnyObject {}
-
-
-
protocol SomeClassOnlyProtocol: AnyObject, SomeInheritedProtocol {}
-
-
-
@objc protocol SomeClassOnlyProtocol: AnyObject, SomeInheritedProtocol {}
-
-
-

Triggering Examples

-
protocol SomeClassOnlyProtocol: ↓class {}
-
-
-
protocol SomeClassOnlyProtocol: ↓class, SomeInheritedProtocol {}
-
-
-
@objc protocol SomeClassOnlyProtocol: ↓class, SomeInheritedProtocol {}
-
-
- -
-
- - -
-
- - - - diff --git a/array_init.html b/array_init.html deleted file mode 100644 index 71b574371..000000000 --- a/array_init.html +++ /dev/null @@ -1,410 +0,0 @@ - - - - array_init Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Array Init

- -

Prefer using Array(seq) over seq.map { $0 } to convert a sequence into an Array.

- -
    -
  • Identifier: array_init
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
Array(foo)
-
-
-
foo.map { $0.0 }
-
-
-
foo.map { $1 }
-
-
-
foo.map { $0() }
-
-
-
foo.map { ((), $0) }
-
-
-
foo.map { $0! }
-
-
-
foo.map { $0! /* force unwrap */ }
-
-
-
foo.something { RouteMapper.map($0) }
-
-
-
foo.map { !$0 }
-
-
-
foo.map { /* a comment */ !$0 }
-
-
-

Triggering Examples

-
↓foo.map({ $0 })
-
-
-
↓foo.map { $0 }
-
-
-
↓foo.map { return $0 }
-
-
-
↓foo.map { elem in
-   elem
-}
-
-
-
↓foo.map { elem in
-   return elem
-}
-
-
-
↓foo.map { (elem: String) in
-   elem
-}
-
-
-
↓foo.map { elem -> String in
-   elem
-}
-
-
-
↓foo.map { $0 /* a comment */ }
-
-
-
↓foo.map { /* a comment */ $0 }
-
-
- -
-
- - -
-
- - - - diff --git a/attributes.html b/attributes.html deleted file mode 100644 index 53682b1c7..000000000 --- a/attributes.html +++ /dev/null @@ -1,567 +0,0 @@ - - - - attributes Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Attributes

- -

Attributes should be on their own lines in functions and types, but on the same line as variables and imports.

- -
    -
  • Identifier: attributes
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, always_on_same_line: [“@IBAction”, “@NSManaged”], always_on_line_above: []
  • -
-

Non Triggering Examples

-
@objc var x: String
-
-
@objc private var x: String
-
-
@nonobjc var x: String
-
-
@IBOutlet private var label: UILabel
-
-
@IBOutlet @objc private var label: UILabel
-
-
@NSCopying var name: NSString
-
-
@NSManaged var name: String?
-
-
@IBInspectable var cornerRadius: CGFloat
-
-
@available(iOS 9.0, *)
- let stackView: UIStackView
-
-
@NSManaged func addSomeObject(book: SomeObject)
-
-
@IBAction func buttonPressed(button: UIButton)
-
-
@objc
- @IBAction func buttonPressed(button: UIButton)
-
-
@available(iOS 9.0, *)
- func animate(view: UIStackView)
-
-
@available(*, deprecated, message: "A message")
- func animate(view: UIStackView)
-
-
@nonobjc
- final class X {}
-
-
@available(iOS 9.0, *)
- class UIStackView {}
-
-
@NSApplicationMain
- class AppDelegate: NSObject, NSApplicationDelegate {}
-
-
@UIApplicationMain
- class AppDelegate: NSObject, UIApplicationDelegate {}
-
-
@IBDesignable
- class MyCustomView: UIView {}
-
-
@testable import SourceKittenFramework
-
-
@objc(foo_x)
- var x: String
-
-
@available(iOS 9.0, *)
-@objc(abc_stackView)
- let stackView: UIStackView
-
-
@objc(abc_addSomeObject:)
- @NSManaged func addSomeObject(book: SomeObject)
-
-
@objc(ABCThing)
- @available(iOS 9.0, *)
- class Thing {}
-
-
class Foo: NSObject {
- override var description: String { return "" }
-}
-
-
class Foo: NSObject {
-
- override func setUp() {}
-}
-
-
@objc
-class ⽺ {}
-
-
-
extension Property {
-
- @available(*, unavailable, renamed: "isOptional")
-public var optional: Bool { fatalError() }
-}
-
-
@GKInspectable var maxSpeed: Float
-
-
@discardableResult
- func a() -> Int
-
-
@objc
- @discardableResult
- func a() -> Int
-
-
func increase(f: @autoclosure () -> Int) -> Int
-
-
func foo(completionHandler: @escaping () -> Void)
-
-
private struct DefaultError: Error {}
-
-
@testable import foo
-
-private let bar = 1
-
-
import XCTest
-@testable import DeleteMe
-
-@available (iOS 11.0, *)
-class DeleteMeTests: XCTestCase {
-}
-
-
@objc
-internal func foo(identifier: String, completion: @escaping (() -> Void)) {}
-
-
@objc
-internal func foo(identifier: String, completion: @autoclosure (() -> Bool)) {}
-
-
func printBoolOrTrue(_ expression: @autoclosure () throws -> Bool?) rethrows {
-  try print(expression() ?? true)
-}
-
-
import Foundation
-
-class MyClass: NSObject {
-  @objc(
-    first:
-  )
-  static func foo(first: String) {}
-}
-
-

Triggering Examples

-
@objc
- ↓var x: String
-
-
@objc
-
- ↓var x: String
-
-
@objc
- private ↓var x: String
-
-
@nonobjc
- ↓var x: String
-
-
@IBOutlet
- private ↓var label: UILabel
-
-
@IBOutlet
-
- private ↓var label: UILabel
-
-
@NSCopying
- ↓var name: NSString
-
-
@NSManaged
- ↓var name: String?
-
-
@IBInspectable
- ↓var cornerRadius: CGFloat
-
-
@available(iOS 9.0, *) ↓let stackView: UIStackView
-
-
@NSManaged
- ↓func addSomeObject(book: SomeObject)
-
-
@IBAction
- ↓func buttonPressed(button: UIButton)
-
-
@IBAction
- @objc
- ↓func buttonPressed(button: UIButton)
-
-
@available(iOS 9.0, *) ↓func animate(view: UIStackView)
-
-
@nonobjc final ↓class X {}
-
-
@available(iOS 9.0, *) ↓class UIStackView {}
-
-
@available(iOS 9.0, *)
- @objc ↓class UIStackView {}
-
-
@available(iOS 9.0, *) @objc
- ↓class UIStackView {}
-
-
@available(iOS 9.0, *)
-
- ↓class UIStackView {}
-
-
@UIApplicationMain ↓class AppDelegate: NSObject, UIApplicationDelegate {}
-
-
@IBDesignable ↓class MyCustomView: UIView {}
-
-
@testable
-↓import SourceKittenFramework
-
-
@testable
-
-
-↓import SourceKittenFramework
-
-
@available(iOS 9.0, *) @objc(abc_stackView)
- ↓let stackView: UIStackView
-
-
@objc(abc_addSomeObject:) @NSManaged
- ↓func addSomeObject(book: SomeObject)
-
-
@objc(abc_addSomeObject:)
- @NSManaged
- ↓func addSomeObject(book: SomeObject)
-
-
@available(iOS 9.0, *)
- @objc(ABCThing) ↓class Thing {}
-
-
@GKInspectable
- ↓var maxSpeed: Float
-
-
@discardableResult ↓func a() -> Int
-
-
@objc
- @discardableResult ↓func a() -> Int
-
-
@objc
-
- @discardableResult
- ↓func a() -> Int
-
- -
-
- - -
-
- - - - diff --git a/badge.svg b/badge.svg deleted file mode 100644 index a096feca8..000000000 --- a/badge.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - documentation - - - documentation - - - 100% - - - 100% - - - diff --git a/balanced_xctest_lifecycle.html b/balanced_xctest_lifecycle.html deleted file mode 100644 index abdf2eaa0..000000000 --- a/balanced_xctest_lifecycle.html +++ /dev/null @@ -1,421 +0,0 @@ - - - - balanced_xctest_lifecycle Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Balanced XCTest life-cycle

- -

Test classes must implement balanced setUp and tearDown methods.

- -
    -
  • Identifier: balanced_xctest_lifecycle
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
final class FooTests: XCTestCase {
-    override func setUp() {}
-    override func tearDown() {}
-}
-
-
final class FooTests: XCTestCase {
-    override func setUpWithError() throws {}
-    override func tearDown() {}
-}
-
-
final class FooTests: XCTestCase {
-    override func setUp() {}
-    override func tearDownWithError() throws {}
-}
-
-
final class FooTests: XCTestCase {
-    override func setUpWithError() throws {}
-    override func tearDownWithError() throws {}
-}
-final class BarTests: XCTestCase {
-    override func setUpWithError() throws {}
-    override func tearDownWithError() throws {}
-}
-
-
struct FooTests {
-    override func setUp() {}
-}
-class BarTests {
-    override func setUpWithError() throws {}
-}
-
-
final class FooTests: XCTestCase {
-    override func setUpAlLExamples() {}
-}
-
-
final class FooTests: XCTestCase {
-    class func setUp() {}
-    class func tearDown() {}
-}
-
-

Triggering Examples

-
final class ↓FooTests: XCTestCase {
-    override func setUp() {}
-}
-
-
final class ↓FooTests: XCTestCase {
-    override func setUpWithError() throws {}
-}
-
-
final class FooTests: XCTestCase {
-    override func setUp() {}
-    override func tearDownWithError() throws {}
-}
-final class ↓BarTests: XCTestCase {
-    override func setUpWithError() throws {}
-}
-
-
final class ↓FooTests: XCTestCase {
-    class func tearDown() {}
-}
-
-
final class ↓FooTests: XCTestCase {
-    override func tearDown() {}
-}
-
-
final class ↓FooTests: XCTestCase {
-    override func tearDownWithError() throws {}
-}
-
-
final class FooTests: XCTestCase {
-    override func setUp() {}
-    override func tearDownWithError() throws {}
-}
-final class ↓BarTests: XCTestCase {
-    override func tearDownWithError() throws {}
-}
-
- -
-
- - -
-
- - - - diff --git a/block_based_kvo.html b/block_based_kvo.html deleted file mode 100644 index 754db53d1..000000000 --- a/block_based_kvo.html +++ /dev/null @@ -1,361 +0,0 @@ - - - - block_based_kvo Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Block Based KVO

- -

Prefer the new block based KVO API with keypaths when using Swift 3.2 or later.

- -
    -
  • Identifier: block_based_kvo
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let observer = foo.observe(\.value, options: [.new]) { (foo, change) in
-   print(change.newValue)
-}
-
-

Triggering Examples

-
class Foo: NSObject {
-  override ↓func observeValue(forKeyPath keyPath: String?, of object: Any?,
-                              change: [NSKeyValueChangeKey : Any]?,
-                              context: UnsafeMutableRawPointer?) {}
-}
-
-
class Foo: NSObject {
-  override ↓func observeValue(forKeyPath keyPath: String?, of object: Any?,
-                              change: Dictionary<NSKeyValueChangeKey, Any>?,
-                              context: UnsafeMutableRawPointer?) {}
-}
-
- -
-
- - -
-
- - - - diff --git a/capture_variable.html b/capture_variable.html deleted file mode 100644 index 9022f4ea2..000000000 --- a/capture_variable.html +++ /dev/null @@ -1,466 +0,0 @@ - - - - capture_variable Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Capture Variable

- -

Non-constant variables should not be listed in a closure’s capture list to avoid confusion about closures capturing variables at creation time.

- -
    -
  • Identifier: capture_variable
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: Yes
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class C {
-    let i: Int
-    init(_ i: Int) { self.i = i }
-}
-
-let j: Int = 0
-let c = C(1)
-
-let closure: () -> Void = { [j, c] in
-    print(c.i, j)
-}
-
-closure()
-
-
let iGlobal: Int = 0
-
-class C {
-    class var iClass: Int { 0 }
-    static let iStatic: Int = 0
-    let iInstance: Int = 0
-
-    func callTest() {
-        var iLocal: Int = 0
-        test { [unowned self, iGlobal, iInstance, iLocal, iClass=C.iClass, iStatic=C.iStatic] j in
-            print(iGlobal, iClass, iStatic, iInstance, iLocal, j)
-        }
-    }
-
-    func test(_ completionHandler: @escaping (Int) -> Void) {
-    }
-}
-
-
var j: Int!
-j = 0
-
-let closure: () -> Void = { [j] in
-    print(j)
-}
-
-closure()
-j = 1
-closure()
-
-
lazy var j: Int = { 0 }()
-
-let closure: () -> Void = { [j] in
-    print(j)
-}
-
-closure()
-j = 1
-closure()
-
-

Triggering Examples

-
var j: Int = 0
-
-let closure: () -> Void = { [j] in
-    print(j)
-}
-
-closure()
-j = 1
-closure()
-
-
class C {
-    let i: Int
-    init(_ i: Int) { self.i = i }
-}
-
-var c = C(0)
-let closure: () -> Void = { [c] in
-    print(c.i)
-}
-
-closure()
-c = C(1)
-closure()
-
-
var iGlobal: Int = 0
-
-class C {
-    func callTest() {
-        test { [iGlobal] j in
-            print(iGlobal, j)
-        }
-    }
-
-    func test(_ completionHandler: @escaping (Int) -> Void) {
-    }
-}
-
-
class C {
-    static var iStatic: Int = 0
-
-    static func callTest() {
-        test { [↓iStatic] j in
-            print(iStatic, j)
-        }
-    }
-
-    static func test(_ completionHandler: @escaping (Int) -> Void) {
-        completionHandler(2)
-        C.iStatic = 1
-        completionHandler(3)
-    }
-}
-
-C.callTest()
-
-
class C {
-    var iInstance: Int = 0
-
-    func callTest() {
-        test { [iInstance] j in
-            print(iInstance, j)
-        }
-    }
-
-    func test(_ completionHandler: @escaping (Int) -> Void) {
-    }
-}
-
- -
-
- - -
-
- - - - diff --git a/class_delegate_protocol.html b/class_delegate_protocol.html deleted file mode 100644 index 79caee1d7..000000000 --- a/class_delegate_protocol.html +++ /dev/null @@ -1,388 +0,0 @@ - - - - class_delegate_protocol Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Class Delegate Protocol

- -

Delegate protocols should be class-only so they can be weakly referenced.

- -
    -
  • Identifier: class_delegate_protocol
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
protocol FooDelegate: class {}
-
-
-
protocol FooDelegate: class, BarDelegate {}
-
-
-
protocol Foo {}
-
-
-
class FooDelegate {}
-
-
-
@objc protocol FooDelegate {}
-
-
-
@objc(MyFooDelegate)
- protocol FooDelegate {}
-
-
-
protocol FooDelegate: BarDelegate {}
-
-
-
protocol FooDelegate: AnyObject {}
-
-
-
protocol FooDelegate: NSObjectProtocol {}
-
-
-
protocol FooDelegate where Self: BarDelegate {}
-
-
-
protocol FooDelegate where Self: AnyObject {}
-
-
-
protocol FooDelegate where Self: NSObjectProtocol {}
-
-
-

Triggering Examples

-
↓protocol FooDelegate {}
-
-
-
↓protocol FooDelegate: Bar {}
-
-
- -
-
- - -
-
- - - - diff --git a/closing_brace.html b/closing_brace.html deleted file mode 100644 index 8749961a8..000000000 --- a/closing_brace.html +++ /dev/null @@ -1,355 +0,0 @@ - - - - closing_brace Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Closing Brace Spacing

- -

Closing brace with closing parenthesis should not have any whitespaces in the middle.

- -
    -
  • Identifier: closing_brace
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
[].map({ })
-
-
[].map(
-  { }
-)
-
-

Triggering Examples

-
[].map({ ↓} )
-
-
[].map({ ↓}   )
-
- -
-
- - -
-
- - - - diff --git a/closure_body_length.html b/closure_body_length.html deleted file mode 100644 index 29eda2108..000000000 --- a/closure_body_length.html +++ /dev/null @@ -1,835 +0,0 @@ - - - - closure_body_length Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Closure Body Length

- -

Closure bodies should not span too many lines.

- -
    -
  • Identifier: closure_body_length
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning: 20, error: 100
  • -
-

Non Triggering Examples

-
foo.bar { $0 }
-
-
foo.bar { toto in
-}
-
-
foo.bar { toto in
-    let a0 = 0
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-
-
-
-
-
-
-
-
-
-
-}
-
-
foo.bar { toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-}
-
-
foo.bar { toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-
-
-
-
-
-
-
-
-
-
-}
-
-
foo.bar({ toto in
-})
-
-
foo.bar({ toto in
-    let a0 = 0
-})
-
-
foo.bar({ toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-})
-
-
foo.bar(label: { toto in
-})
-
-
foo.bar(label: { toto in
-    let a0 = 0
-})
-
-
foo.bar(label: { toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-})
-
-
foo.bar(label: { toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-}, anotherLabel: { toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-})
-
-
foo.bar(label: { toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-}) { toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-}
-
-
let foo: Bar = { toto in
-    let bar = Bar()
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    return bar
-}()
-
-

Triggering Examples

-
foo.bar ↓{ toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-}
-
-
foo.bar ↓{ toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-
-
-
-
-
-
-
-
-
-
-}
-
-
foo.bar(↓{ toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-})
-
-
foo.bar(label: ↓{ toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-})
-
-
foo.bar(label: ↓{ toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-}, anotherLabel: ↓{ toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-})
-
-
foo.bar(label: ↓{ toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-}) ↓{ toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-}
-
-
let foo: Bar = ↓{ toto in
-    let bar = Bar()
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    return bar
-}()
-
- -
-
- - -
-
- - - - diff --git a/closure_end_indentation.html b/closure_end_indentation.html deleted file mode 100644 index d46efae27..000000000 --- a/closure_end_indentation.html +++ /dev/null @@ -1,415 +0,0 @@ - - - - closure_end_indentation Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Closure End Indentation

- -

Closure end should have the same indentation as the line that started it.

- -
    -
  • Identifier: closure_end_indentation
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
SignalProducer(values: [1, 2, 3])
-   .startWithNext { number in
-       print(number)
-   }
-
-
-
[1, 2].map { $0 + 1 }
-
-
-
return match(pattern: pattern, with: [.comment]).flatMap { range in
-   return Command(string: contents, range: range)
-}.flatMap { command in
-   return command.expand()
-}
-
-
-
foo(foo: bar,
-    options: baz) { _ in }
-
-
-
someReallyLongProperty.chainingWithAnotherProperty
-   .foo { _ in }
-
-
foo(abc, 123)
-{ _ in }
-
-
-
function(
-    closure: { x in
-        print(x)
-    },
-    anotherClosure: { y in
-        print(y)
-    })
-
-
function(parameter: param,
-         closure: { x in
-    print(x)
-})
-
-
function(parameter: param, closure: { x in
-        print(x)
-    },
-    anotherClosure: { y in
-        print(y)
-    })
-
-
(-variable).foo()
-
-

Triggering Examples

-
SignalProducer(values: [1, 2, 3])
-   .startWithNext { number in
-       print(number)
-↓}
-
-
-
return match(pattern: pattern, with: [.comment]).flatMap { range in
-   return Command(string: contents, range: range)
-   ↓}.flatMap { command in
-   return command.expand()
-↓}
-
-
-
function(
-    closure: { x in
-        print(x)
-↓},
-    anotherClosure: { y in
-        print(y)
-↓})
-
- -
-
- - -
-
- - - - diff --git a/closure_parameter_position.html b/closure_parameter_position.html deleted file mode 100644 index 7425e48bd..000000000 --- a/closure_parameter_position.html +++ /dev/null @@ -1,439 +0,0 @@ - - - - closure_parameter_position Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Closure Parameter Position

- -

Closure parameters should be on the same line as opening brace.

- -
    -
  • Identifier: closure_parameter_position
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
[1, 2].map { $0 + 1 }
-
-
-
[1, 2].map({ $0 + 1 })
-
-
-
[1, 2].map { number in
- number + 1 
-}
-
-
-
[1, 2].map { number -> Int in
- number + 1 
-}
-
-
-
[1, 2].map { (number: Int) -> Int in
- number + 1 
-}
-
-
-
[1, 2].map { [weak self] number in
- number + 1 
-}
-
-
-
[1, 2].something(closure: { number in
- number + 1 
-})
-
-
-
let isEmpty = [1, 2].isEmpty()
-
-
-
rlmConfiguration.migrationBlock.map { rlmMigration in
-    return { migration, schemaVersion in
-        rlmMigration(migration.rlmMigration, schemaVersion)
-    }
-}
-
-
let mediaView: UIView = { [weak self] index in
-   return UIView()
-}(index)
-
-

Triggering Examples

-
[1, 2].map {
-    ↓number in
-    number + 1
-}
-
-
[1, 2].map {
-    ↓number -> Int in
-    number + 1
-}
-
-
[1, 2].map {
-    (↓number: Int) -> Int in
-    number + 1
-}
-
-
[1, 2].map {
-    [weak ↓self] ↓number in
-    number + 1
-}
-
-
[1, 2].map { [weak self]
-    ↓number in
-    number + 1
-}
-
-
[1, 2].map({
-    ↓number in
-    number + 1
-})
-
-
[1, 2].something(closure: {
-    ↓number in
-    number + 1
-})
-
-
[1, 2].reduce(0) {
-    ↓sum, ↓number in
-    number + sum
-})
-
-
f.completionHandler = {
-    ↓thing in
-    doStuff()
-}
-
-
foo {
-    [weak ↓self] in
-    self?.bar()
-}
-
- -
-
- - -
-
- - - - diff --git a/closure_spacing.html b/closure_spacing.html deleted file mode 100644 index bb0b462c5..000000000 --- a/closure_spacing.html +++ /dev/null @@ -1,361 +0,0 @@ - - - - closure_spacing Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Closure Spacing

- -

Closure expressions should have a single space inside each brace.

- -
    -
  • Identifier: closure_spacing
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
[].map ({ $0.description })
-
-
[].filter { $0.contains(location) }
-
-
extension UITableViewCell: ReusableView { }
-
-
extension UITableViewCell: ReusableView {}
-
-

Triggering Examples

-
[].filter(↓{$0.contains(location)})
-
-
[].map(↓{$0})
-
-
(↓{each in return result.contains(where: ↓{e in return e}) }).count
-
-
filter ↓{ sorted ↓{ $0 < $1}}
-
- -
-
- - -
-
- - - - diff --git a/collection_alignment.html b/collection_alignment.html deleted file mode 100644 index ba53ee420..000000000 --- a/collection_alignment.html +++ /dev/null @@ -1,421 +0,0 @@ - - - - collection_alignment Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Collection Element Alignment

- -

All elements in a collection literal should be vertically aligned

- -
    -
  • Identifier: collection_alignment
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, align_colons: false
  • -
-

Non Triggering Examples

-
doThings(arg: [
-    "foo": 1,
-    "bar": 2,
-    "fizz": 2,
-    "buzz": 2
-])
-
-
let abc = [
-    "alpha": "a",
-    "beta": "b",
-    "gamma": "g",
-    "delta": "d",
-    "epsilon": "e"
-]
-
-
let meals = [
-                "breakfast": "oatmeal",
-                "lunch": "sandwich",
-                "dinner": "burger"
-]
-
-
let coordinates = [
-    CLLocationCoordinate2D(latitude: 0, longitude: 33),
-    CLLocationCoordinate2D(latitude: 0, longitude: 66),
-    CLLocationCoordinate2D(latitude: 0, longitude: 99)
-]
-
-
var evenNumbers: Set<Int> = [
-    2,
-    4,
-    6
-]
-
-
let abc = [1, 2, 3, 4]
-
-
let abc = [
-    1, 2, 3, 4
-]
-
-
let abc = [
-    "foo": "bar", "fizz": "buzz"
-]
-
-

Triggering Examples

-
doThings(arg: [
-    "foo": 1,
-    "bar": 2,
-   ↓"fizz": 2,
-   ↓"buzz": 2
-])
-
-
let abc = [
-    "alpha": "a",
-     ↓"beta": "b",
-    "gamma": "g",
-    "delta": "d",
-  ↓"epsilon": "e"
-]
-
-
let meals = [
-                "breakfast": "oatmeal",
-                "lunch": "sandwich",
-    ↓"dinner": "burger"
-]
-
-
let coordinates = [
-    CLLocationCoordinate2D(latitude: 0, longitude: 33),
-        ↓CLLocationCoordinate2D(latitude: 0, longitude: 66),
-    CLLocationCoordinate2D(latitude: 0, longitude: 99)
-]
-
-
var evenNumbers: Set<Int> = [
-    2,
-  ↓4,
-    6
-]
-
- -
-
- - -
-
- - - - diff --git a/colon.html b/colon.html deleted file mode 100644 index a5834c976..000000000 --- a/colon.html +++ /dev/null @@ -1,603 +0,0 @@ - - - - colon Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Colon Spacing

- -

Colons should be next to the identifier when specifying a type and next to the key in dictionary literals.

- -
    -
  • Identifier: colon
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, flexible_right_spacing: false, apply_to_dictionaries: true
  • -
-

Non Triggering Examples

-
let abc: Void
-
-
-
let abc: [Void: Void]
-
-
-
let abc: (Void, Void)
-
-
-
let abc: ([Void], String, Int)
-
-
-
let abc: [([Void], String, Int)]
-
-
-
let abc: String="def"
-
-
-
let abc: Int=0
-
-
-
let abc: Enum=Enum.Value
-
-
-
func abc(def: Void) {}
-
-
-
func abc(def: Void, ghi: Void) {}
-
-
-
let abc: String = "abc:"
-
-
let abc = [Void: Void]()
-
-
-
let abc = [1: [3: 2], 3: 4]
-
-
-
let abc = ["string": "string"]
-
-
-
let abc = ["string:string": "string"]
-
-
-
let abc: [String: Int]
-
-
-
func foo(bar: [String: Int]) {}
-
-
-
func foo() -> [String: Int] { return [:] }
-
-
-
let abc: Any
-
-
-
let abc: [Any: Int]
-
-
-
let abc: [String: Any]
-
-
-
class Foo: Bar {}
-
-
-
class Foo<T>: Bar {}
-
-
-
class Foo<T: Equatable>: Bar {}
-
-
-
class Foo<T, U>: Bar {}
-
-
-
class Foo<T: Equatable> {}
-
-
-
object.method(x: /* comment */ 5)
-
-
-
switch foo {
-case .bar:
-    _ = something()
-}
-
-
object.method(x: 5, y: "string")
-
-
-
object.method(x: 5, y:
-              "string")
-
-
object.method(5, y: "string")
-
-
-
func abc() { def(ghi: jkl) }
-
-
func abc(def: Void) { ghi(jkl: mno) }
-
-
class ABC { let def = ghi(jkl: mno) } }
-
-
func foo() { let dict = [1: 1] }
-
-
let aaa = Self.bbb ? Self.ccc : Self.ddd else {
-return nil
-Example("}
-
-

Triggering Examples

-
let ↓abc:Void
-
-
-
let ↓abc:  Void
-
-
-
let ↓abc :Void
-
-
-
let ↓abc : Void
-
-
-
let ↓abc : [Void: Void]
-
-
-
let ↓abc : (Void, String, Int)
-
-
-
let ↓abc : ([Void], String, Int)
-
-
-
let ↓abc : [([Void], String, Int)]
-
-
-
let ↓abc:  (Void, String, Int)
-
-
-
let ↓abc:  ([Void], String, Int)
-
-
-
let ↓abc:  [([Void], String, Int)]
-
-
-
let ↓abc :String="def"
-
-
-
let ↓abc :Int=0
-
-
-
let ↓abc :Int = 0
-
-
-
let ↓abc:Int=0
-
-
-
let ↓abc:Int = 0
-
-
-
let ↓abc:Enum=Enum.Value
-
-
-
func abc(↓def:Void) {}
-
-
-
func abc(↓def:  Void) {}
-
-
-
func abc(↓def :Void) {}
-
-
-
func abc(↓def : Void) {}
-
-
-
func abc(def: Void, ↓ghi :Void) {}
-
-
-
let abc = [Void↓:Void]()
-
-
-
let abc = [Void↓ : Void]()
-
-
-
let abc = [Void↓:  Void]()
-
-
-
let abc = [Void↓ :  Void]()
-
-
-
let abc = [1: [3↓ : 2], 3: 4]
-
-
-
let abc = [1: [3↓ : 2], 3↓:  4]
-
-
-
let abc: [↓String : Int]
-
-
-
let abc: [↓String:Int]
-
-
-
func foo(bar: [↓String : Int]) {}
-
-
-
func foo(bar: [↓String:Int]) {}
-
-
-
func foo() -> [↓String : Int] { return [:] }
-
-
-
func foo() -> [↓String:Int] { return [:] }
-
-
-
let ↓abc : Any
-
-
-
let abc: [↓Any : Int]
-
-
-
let abc: [↓String : Any]
-
-
-
class ↓Foo : Bar {}
-
-
-
class ↓Foo:Bar {}
-
-
-
class ↓Foo<T> : Bar {}
-
-
-
class ↓Foo<T>:Bar {}
-
-
-
class ↓Foo<T, U>:Bar {}
-
-
-
class ↓Foo<T: Equatable>:Bar {}
-
-
-
class Foo<↓T:Equatable> {}
-
-
-
class Foo<↓T : Equatable> {}
-
-
-
object.method(x: 5, y↓ : "string")
-
-
-
object.method(x↓:5, y: "string")
-
-
-
object.method(x↓:  5, y: "string")
-
-
-
func abc() { def(ghi↓:jkl) }
-
-
func abc(def: Void) { ghi(jkl↓:mno) }
-
-
class ABC { let def = ghi(jkl↓:mno) } }
-
-
func foo() { let dict = [1↓ : 1] }
-
- -
-
- - -
-
- - - - diff --git a/comma.html b/comma.html deleted file mode 100644 index 9e3f3005d..000000000 --- a/comma.html +++ /dev/null @@ -1,381 +0,0 @@ - - - - comma Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Comma Spacing

- -

There should be no space before and one after any comma.

- -
    -
  • Identifier: comma
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
func abc(a: String, b: String) { }
-
-
abc(a: "string", b: "string"
-
-
enum a { case a, b, c }
-
-
func abc(
-  a: String,  // comment
-  bcd: String // comment
-) {
-}
-
-
-
func abc(
-  a: String,
-  bcd: String
-) {
-}
-
-
-
#imageLiteral(resourceName: "foo,bar,baz")
-
-

Triggering Examples

-
func abc(a: String↓ ,b: String) { }
-
-
func abc(a: String↓ ,b: String↓ ,c: String↓ ,d: String) { }
-
-
abc(a: "string"↓,b: "string"
-
-
enum a { case a↓ ,b }
-
-
let result = plus(
-    first: 3↓ , // #683
-    second: 4
-)
-
-
- -
-
- - -
-
- - - - diff --git a/comment_spacing.html b/comment_spacing.html deleted file mode 100644 index e91fd3fef..000000000 --- a/comment_spacing.html +++ /dev/null @@ -1,401 +0,0 @@ - - - - comment_spacing Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Comment Spacing

- -

Prefer at least one space after slashes for comments.

- -
    -
  • Identifier: comment_spacing
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
// This is a comment
-
-
/// Triple slash comment
-
-
// Multiline double-slash
-// comment
-
-
/// Multiline triple-slash
-/// comment
-
-
/// Multiline triple-slash
-///   - This is indented
-
-
// - MARK: Mark comment
-
-
//: Swift Playground prose section
-
-
///////////////////////////////////////////////
-// Comment with some lines of slashes boxing it
-///////////////////////////////////////////////
-
-
//:#localized(key: "SwiftPlaygroundLocalizedProse")
-
-
/* Asterisk comment */
-
-
/*
-    Multiline asterisk comment
-*/
-
-
/*:
-    Multiline Swift Playground prose section
-*/
-
-
/*#-editable-code Swift Platground editable area*/default/*#-end-editable-code*/
-
-

Triggering Examples

-
//↓Something
-
-
//↓MARK
-
-
//↓👨‍👨‍👦‍👦Something
-
-
func a() {
-    //↓This needs refactoring
-    print("Something")
-}
-//↓We should improve above function
-
-
///↓This is a comment
-
-
/// Multiline triple-slash
-///↓This line is incorrect, though
-
-
//↓- MARK: Mark comment
-
-
//:↓Swift Playground prose section
-
- -
-
- - -
-
- - - - diff --git a/compiler_protocol_init.html b/compiler_protocol_init.html deleted file mode 100644 index 508665f9d..000000000 --- a/compiler_protocol_init.html +++ /dev/null @@ -1,357 +0,0 @@ - - - - compiler_protocol_init Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Compiler Protocol Init

- -

The initializers declared in compiler protocols such as ExpressibleByArrayLiteral shouldn’t be called directly.

- -
    -
  • Identifier: compiler_protocol_init
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let set: Set<Int> = [1, 2]
-
-
-
let set = Set(array)
-
-
-

Triggering Examples

-
let set = ↓Set(arrayLiteral: 1, 2)
-
-
-
let set = ↓Set.init(arrayLiteral: 1, 2)
-
-
- -
-
- - -
-
- - - - diff --git a/computed_accessors_order.html b/computed_accessors_order.html deleted file mode 100644 index c170a3da1..000000000 --- a/computed_accessors_order.html +++ /dev/null @@ -1,542 +0,0 @@ - - - - computed_accessors_order Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Computed Accessors Order

- -

Getter and setters in computed properties and subscripts should be in a consistent order.

- -
    -
  • Identifier: computed_accessors_order
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, order: get_set
  • -
-

Non Triggering Examples

-
class Foo {
-    var foo: Int {
-        get { return 3 }
-        set { _abc = newValue }
-    }
-}
-
-
class Foo {
-    var foo: Int {
-        return 20
-    }
-}
-
-
class Foo {
-    static var foo: Int {
-        return 20
-    }
-}
-
-
class Foo {
-    static var foo: Int {
-        get { return 3 }
-        set { _abc = newValue }
-    }
-}
-
-
class Foo {
-    var foo: Int
-}
-
-
class Foo {
-    var foo: Int {
-        return getValueFromDisk()
-    }
-}
-
-
class Foo {
-    var foo: String {
-        return "get"
-    }
-}
-
-
protocol Foo {
-    var foo: Int { get }
-
-
protocol Foo {
-    var foo: Int { get set }
-}
-
-
protocol Foo {
-    var foo: Int { set get }
-
-
class Foo {
-    var foo: Int {
-        struct Bar {
-            var bar: Int {
-                get { return 1 }
-                set { _ = newValue }
-            }
-        }
-
-        return Bar().bar
-    }
-}
-
-
var _objCTaggedPointerBits: UInt {
-    @inline(__always) get { return 0 }
-    set { print(newValue) }
-}
-
-
var next: Int? {
-    mutating get {
-        defer { self.count += 1 }
-        return self.count
-    }
-    set {
-        self.count = newValue
-    }
-}
-
-
extension Foo {
-    var bar: Bool {
-        get { _bar }
-        set { self._bar = newValue }
-    }
-}
-
-
extension Foo {
-    var bar: Bool {
-        get { _bar }
-        set(newValue) { self._bar = newValue }
-    }
-}
-
-
extension Reactive where Base: UITapGestureRecognizer {
-    var tapped: CocoaAction<Base>? {
-        get {
-            return associatedAction.withValue { $0.flatMap { $0.action } }
-        }
-        nonmutating set {
-            setAction(newValue)
-        }
-    }
-}
-
-
extension Test {
-    var foo: Bool {
-        get {
-            bar?.boolValue ?? true // Comment mentioning word set which triggers violation
-        }
-        set {
-            bar = NSNumber(value: newValue as Bool)
-        }
-    }
-}
-
-
class Foo {
-    subscript(i: Int) -> Int {
-        return 20
-    }
-}
-
-
class Foo {
-    subscript(i: Int) -> Int {
-        get { return 3 }
-        set { _abc = newValue }
-    }
-}
-
-
protocol Foo {
-    subscript(i: Int) -> Int { get }
-}
-
-
protocol Foo {
-    subscript(i: Int) -> Int { get set }
-}
-
-
protocol Foo {
-    subscript(i: Int) -> Int { set get }
-}
-
-

Triggering Examples

-
class Foo {
-    var foo: Int {
-        ↓set {
-            print(newValue)
-        }
-        get {
-            return 20
-        }
-    }
-}
-
-
class Foo {
-    static var foo: Int {
-        ↓set {
-            print(newValue)
-        }
-        get {
-            return 20
-        }
-    }
-}
-
-
var foo: Int {
-    ↓set { print(newValue) }
-    get { return 20 }
-}
-
-
extension Foo {
-    var bar: Bool {
-        ↓set { print(bar) }
-        get { _bar }
-    }
-}
-
-
class Foo {
-    var foo: Int {
-        ↓set {
-            print(newValue)
-        }
-        mutating get {
-            return 20
-        }
-    }
-}
-
-
class Foo {
-    subscript(i: Int) -> Int {
-        ↓set {
-            print(i)
-        }
-        get {
-            return 20
-        }
-    }
-}
-
- -
-
- - -
-
- - - - diff --git a/conditional_returns_on_newline.html b/conditional_returns_on_newline.html deleted file mode 100644 index 83bada3fa..000000000 --- a/conditional_returns_on_newline.html +++ /dev/null @@ -1,379 +0,0 @@ - - - - conditional_returns_on_newline Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Conditional Returns on Newline

- -

Conditional statements should always return on the next line

- -
    -
  • Identifier: conditional_returns_on_newline
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, if_only: false
  • -
-

Non Triggering Examples

-
guard true else {
- return true
-}
-
-
guard true,
- let x = true else {
- return true
-}
-
-
if true else {
- return true
-}
-
-
if true,
- let x = true else {
- return true
-}
-
-
if textField.returnKeyType == .Next {
-
-
if true { // return }
-
-
/*if true { */ return }
-
-

Triggering Examples

-
↓guard true else { return }
-
-
↓if true { return }
-
-
↓if true { break } else { return }
-
-
↓if true { break } else {       return }
-
-
↓if true { return "YES" } else { return "NO" }
-
- -
-
- - -
-
- - - - diff --git a/contains_over_filter_count.html b/contains_over_filter_count.html deleted file mode 100644 index 0f7a1fb10..000000000 --- a/contains_over_filter_count.html +++ /dev/null @@ -1,408 +0,0 @@ - - - - contains_over_filter_count Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Contains Over Filter Count

- -

Prefer contains over comparing filter(where:).count to 0.

- -
    -
  • Identifier: contains_over_filter_count
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let result = myList.filter(where: { $0 % 2 == 0 }).count > 1
-
-
-
let result = myList.filter { $0 % 2 == 0 }.count > 1
-
-
-
let result = myList.filter(where: { $0 % 2 == 0 }).count > 01
-
-
-
let result = myList.filter(where: { $0 % 2 == 0 }).count == 1
-
-
-
let result = myList.filter { $0 % 2 == 0 }.count == 1
-
-
-
let result = myList.filter(where: { $0 % 2 == 0 }).count == 01
-
-
-
let result = myList.filter(where: { $0 % 2 == 0 }).count != 1
-
-
-
let result = myList.filter { $0 % 2 == 0 }.count != 1
-
-
-
let result = myList.filter(where: { $0 % 2 == 0 }).count != 01
-
-
-
let result = myList.contains(where: { $0 % 2 == 0 })
-
-
-
let result = !myList.contains(where: { $0 % 2 == 0 })
-
-
-
let result = myList.contains(10)
-
-
-

Triggering Examples

-
let result = ↓myList.filter(where: { $0 % 2 == 0 }).count > 0
-
-
-
let result = ↓myList.filter { $0 % 2 == 0 }.count > 0
-
-
-
let result = ↓myList.filter(where: someFunction).count > 0
-
-
-
let result = ↓myList.filter(where: { $0 % 2 == 0 }).count == 0
-
-
-
let result = ↓myList.filter { $0 % 2 == 0 }.count == 0
-
-
-
let result = ↓myList.filter(where: someFunction).count == 0
-
-
-
let result = ↓myList.filter(where: { $0 % 2 == 0 }).count != 0
-
-
-
let result = ↓myList.filter { $0 % 2 == 0 }.count != 0
-
-
-
let result = ↓myList.filter(where: someFunction).count != 0
-
-
- -
-
- - -
-
- - - - diff --git a/contains_over_filter_is_empty.html b/contains_over_filter_is_empty.html deleted file mode 100644 index 8f3a602bc..000000000 --- a/contains_over_filter_is_empty.html +++ /dev/null @@ -1,384 +0,0 @@ - - - - contains_over_filter_is_empty Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Contains Over Filter Is Empty

- -

Prefer contains over using filter(where:).isEmpty

- -
    -
  • Identifier: contains_over_filter_is_empty
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let result = myList.filter(where: { $0 % 2 == 0 }).count > 1
-
-
-
let result = myList.filter { $0 % 2 == 0 }.count > 1
-
-
-
let result = myList.filter(where: { $0 % 2 == 0 }).count == 1
-
-
-
let result = myList.filter { $0 % 2 == 0 }.count == 1
-
-
-
let result = myList.filter(where: { $0 % 2 == 0 }).count != 1
-
-
-
let result = myList.filter { $0 % 2 == 0 }.count != 1
-
-
-
let result = myList.contains(where: { $0 % 2 == 0 })
-
-
-
let result = !myList.contains(where: { $0 % 2 == 0 })
-
-
-
let result = myList.contains(10)
-
-
-

Triggering Examples

-
let result = ↓myList.filter(where: { $0 % 2 == 0 }).isEmpty
-
-
-
let result = !↓myList.filter(where: { $0 % 2 == 0 }).isEmpty
-
-
-
let result = ↓myList.filter { $0 % 2 == 0 }.isEmpty
-
-
-
let result = ↓myList.filter(where: someFunction).isEmpty
-
-
- -
-
- - -
-
- - - - diff --git a/contains_over_first_not_nil.html b/contains_over_first_not_nil.html deleted file mode 100644 index 2b03bf21c..000000000 --- a/contains_over_first_not_nil.html +++ /dev/null @@ -1,429 +0,0 @@ - - - - contains_over_first_not_nil Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Contains over first not nil

- -

Prefer contains over first(where:) != nil and firstIndex(where:) != nil.

- -
    -
  • Identifier: contains_over_first_not_nil
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let first = myList.first(where: { $0 % 2 == 0 })
-
-
-
let first = myList.first { $0 % 2 == 0 }
-
-
-
let firstIndex = myList.firstIndex(where: { $0 % 2 == 0 })
-
-
-
let firstIndex = myList.firstIndex { $0 % 2 == 0 }
-
-
-

Triggering Examples

-
↓myList.first { $0 % 2 == 0 } != nil
-
-
-
↓myList.first(where: { $0 % 2 == 0 }) != nil
-
-
-
↓myList.map { $0 + 1 }.first(where: { $0 % 2 == 0 }) != nil
-
-
-
↓myList.first(where: someFunction) != nil
-
-
-
↓myList.map { $0 + 1 }.first { $0 % 2 == 0 } != nil
-
-
-
(↓myList.first { $0 % 2 == 0 }) != nil
-
-
-
↓myList.first { $0 % 2 == 0 } == nil
-
-
-
↓myList.first(where: { $0 % 2 == 0 }) == nil
-
-
-
↓myList.map { $0 + 1 }.first(where: { $0 % 2 == 0 }) == nil
-
-
-
↓myList.first(where: someFunction) == nil
-
-
-
↓myList.map { $0 + 1 }.first { $0 % 2 == 0 } == nil
-
-
-
(↓myList.first { $0 % 2 == 0 }) == nil
-
-
-
↓myList.firstIndex { $0 % 2 == 0 } != nil
-
-
-
↓myList.firstIndex(where: { $0 % 2 == 0 }) != nil
-
-
-
↓myList.map { $0 + 1 }.firstIndex(where: { $0 % 2 == 0 }) != nil
-
-
-
↓myList.firstIndex(where: someFunction) != nil
-
-
-
↓myList.map { $0 + 1 }.firstIndex { $0 % 2 == 0 } != nil
-
-
-
(↓myList.firstIndex { $0 % 2 == 0 }) != nil
-
-
-
↓myList.firstIndex { $0 % 2 == 0 } == nil
-
-
-
↓myList.firstIndex(where: { $0 % 2 == 0 }) == nil
-
-
-
↓myList.map { $0 + 1 }.firstIndex(where: { $0 % 2 == 0 }) == nil
-
-
-
↓myList.firstIndex(where: someFunction) == nil
-
-
-
↓myList.map { $0 + 1 }.firstIndex { $0 % 2 == 0 } == nil
-
-
-
(↓myList.firstIndex { $0 % 2 == 0 }) == nil
-
-
- -
-
- - -
-
- - - - diff --git a/contains_over_range_nil_comparison.html b/contains_over_range_nil_comparison.html deleted file mode 100644 index 318b245f2..000000000 --- a/contains_over_range_nil_comparison.html +++ /dev/null @@ -1,357 +0,0 @@ - - - - contains_over_range_nil_comparison Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Contains over range(of:) comparison to nil

- -

Prefer contains over range(of:) != nil and range(of:) == nil.

- -
    -
  • Identifier: contains_over_range_nil_comparison
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let range = myString.range(of: "Test")
-
-
myString.contains("Test")
-
-
!myString.contains("Test")
-
-
resourceString.range(of: rule.regex, options: .regularExpression) != nil
-
-

Triggering Examples

-
↓myString.range(of: "Test") != nil
-
-
↓myString.range(of: "Test") == nil
-
- -
-
- - -
-
- - - - diff --git a/control_statement.html b/control_statement.html deleted file mode 100644 index 9ecda8e4b..000000000 --- a/control_statement.html +++ /dev/null @@ -1,460 +0,0 @@ - - - - control_statement Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Control Statement

- -

if, for, guard, switch, while, and catch statements shouldn’t unnecessarily wrap their conditionals or arguments in parentheses.

- -
    -
  • Identifier: control_statement
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
if condition {
-
-
-
if (a, b) == (0, 1) {
-
-
-
if (a || b) && (c || d) {
-
-
-
if (min...max).contains(value) {
-
-
-
if renderGif(data) {
-
-
-
renderGif(data)
-
-
-
for item in collection {
-
-
-
for (key, value) in dictionary {
-
-
-
for (index, value) in enumerate(array) {
-
-
-
for var index = 0; index < 42; index++ {
-
-
-
guard condition else {
-
-
-
while condition {
-
-
-
} while condition {
-
-
-
do { ; } while condition {
-
-
-
switch foo {
-
-
-
do {
-} catch let error as NSError {
-}
-
-
foo().catch(all: true) {}
-
-
if max(a, b) < c {
-
-
-
switch (lhs, rhs) {
-
-
-

Triggering Examples

-
↓if (condition) {
-
-
-
↓if(condition) {
-
-
-
↓if (condition == endIndex) {
-
-
-
↓if ((a || b) && (c || d)) {
-
-
-
↓if ((min...max).contains(value)) {
-
-
-
↓for (item in collection) {
-
-
-
↓for (var index = 0; index < 42; index++) {
-
-
-
↓for(item in collection) {
-
-
-
↓for(var index = 0; index < 42; index++) {
-
-
-
↓guard (condition) else {
-
-
-
↓while (condition) {
-
-
-
↓while(condition) {
-
-
-
} ↓while (condition) {
-
-
-
} ↓while(condition) {
-
-
-
do { ; } ↓while(condition) {
-
-
-
do { ; } ↓while (condition) {
-
-
-
↓switch (foo) {
-
-
-
do {
-} ↓catch(let error as NSError) {
-}
-
-
↓if (max(a, b) < c) {
-
-
- -
-
- - -
-
- - - - diff --git a/convenience_type.html b/convenience_type.html deleted file mode 100644 index 2958c7694..000000000 --- a/convenience_type.html +++ /dev/null @@ -1,418 +0,0 @@ - - - - convenience_type Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Convenience Type

- -

Types used for hosting only static members should be implemented as a caseless enum to avoid instantiation.

- -
    -
  • Identifier: convenience_type
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
enum Math { // enum
-  public static let pi = 3.14
-}
-
-
// class with inheritance
-class MathViewController: UIViewController {
-  public static let pi = 3.14
-}
-
-
@objc class Math: NSObject { // class visible to Obj-C
-  public static let pi = 3.14
-}
-
-
struct Math { // type with non-static declarations
-  public static let pi = 3.14
-  public let randomNumber = 2
-}
-
-
class DummyClass {}
-
-
class Foo: NSObject { // class with Obj-C class property
-    class @objc let foo = 1
-}
-
-
class Foo: NSObject { // class with Obj-C static property
-    static @objc let foo = 1
-}
-
-
class Foo { // @objc class func can't exist on an enum
-   @objc class func foo() {}
-}
-
-
class Foo { // @objc static func can't exist on an enum
-   @objc static func foo() {}
-}
-
-
final class Foo { // final class, but @objc class func can't exist on an enum
-   @objc class func foo() {}
-}
-
-
final class Foo { // final class, but @objc static func can't exist on an enum
-   @objc static func foo() {}
-}
-
-
@globalActor actor MyActor {
-  static let shared = MyActor()
-}
-
-

Triggering Examples

-
↓struct Math {
-  public static let pi = 3.14
-}
-
-
↓struct Math {
-  public static let pi = 3.14
-  @available(*, unavailable) init() {}
-}
-
-
final ↓class Foo { // final class can't be inherited
-    class let foo = 1
-}
-
-
↓class Foo {
-    class let foo = 1
-}
-
-
↓class Foo {
-    final class let foo = 1
-}
-
-
↓class SomeClass {
-    static func foo() {}
-}
-
- -
-
- - -
-
- - - - diff --git a/css/highlight.css b/css/highlight.css deleted file mode 100644 index d0db0e13b..000000000 --- a/css/highlight.css +++ /dev/null @@ -1,200 +0,0 @@ -/* Credit to https://gist.github.com/wataru420/2048287 */ -.highlight { - /* Comment */ - /* Error */ - /* Keyword */ - /* Operator */ - /* Comment.Multiline */ - /* Comment.Preproc */ - /* Comment.Single */ - /* Comment.Special */ - /* Generic.Deleted */ - /* Generic.Deleted.Specific */ - /* Generic.Emph */ - /* Generic.Error */ - /* Generic.Heading */ - /* Generic.Inserted */ - /* Generic.Inserted.Specific */ - /* Generic.Output */ - /* Generic.Prompt */ - /* Generic.Strong */ - /* Generic.Subheading */ - /* Generic.Traceback */ - /* Keyword.Constant */ - /* Keyword.Declaration */ - /* Keyword.Pseudo */ - /* Keyword.Reserved */ - /* Keyword.Type */ - /* Literal.Number */ - /* Literal.String */ - /* Name.Attribute */ - /* Name.Builtin */ - /* Name.Class */ - /* Name.Constant */ - /* Name.Entity */ - /* Name.Exception */ - /* Name.Function */ - /* Name.Namespace */ - /* Name.Tag */ - /* Name.Variable */ - /* Operator.Word */ - /* Text.Whitespace */ - /* Literal.Number.Float */ - /* Literal.Number.Hex */ - /* Literal.Number.Integer */ - /* Literal.Number.Oct */ - /* Literal.String.Backtick */ - /* Literal.String.Char */ - /* Literal.String.Doc */ - /* Literal.String.Double */ - /* Literal.String.Escape */ - /* Literal.String.Heredoc */ - /* Literal.String.Interpol */ - /* Literal.String.Other */ - /* Literal.String.Regex */ - /* Literal.String.Single */ - /* Literal.String.Symbol */ - /* Name.Builtin.Pseudo */ - /* Name.Variable.Class */ - /* Name.Variable.Global */ - /* Name.Variable.Instance */ - /* Literal.Number.Integer.Long */ } - .highlight .c { - color: #999988; - font-style: italic; } - .highlight .err { - color: #a61717; - background-color: #e3d2d2; } - .highlight .k { - color: #000000; - font-weight: bold; } - .highlight .o { - color: #000000; - font-weight: bold; } - .highlight .cm { - color: #999988; - font-style: italic; } - .highlight .cp { - color: #999999; - font-weight: bold; } - .highlight .c1 { - color: #999988; - font-style: italic; } - .highlight .cs { - color: #999999; - font-weight: bold; - font-style: italic; } - .highlight .gd { - color: #000000; - background-color: #ffdddd; } - .highlight .gd .x { - color: #000000; - background-color: #ffaaaa; } - .highlight .ge { - color: #000000; - font-style: italic; } - .highlight .gr { - color: #aa0000; } - .highlight .gh { - color: #999999; } - .highlight .gi { - color: #000000; - background-color: #ddffdd; } - .highlight .gi .x { - color: #000000; - background-color: #aaffaa; } - .highlight .go { - color: #888888; } - .highlight .gp { - color: #555555; } - .highlight .gs { - font-weight: bold; } - .highlight .gu { - color: #aaaaaa; } - .highlight .gt { - color: #aa0000; } - .highlight .kc { - color: #000000; - font-weight: bold; } - .highlight .kd { - color: #000000; - font-weight: bold; } - .highlight .kp { - color: #000000; - font-weight: bold; } - .highlight .kr { - color: #000000; - font-weight: bold; } - .highlight .kt { - color: #445588; } - .highlight .m { - color: #009999; } - .highlight .s { - color: #d14; } - .highlight .na { - color: #008080; } - .highlight .nb { - color: #0086B3; } - .highlight .nc { - color: #445588; - font-weight: bold; } - .highlight .no { - color: #008080; } - .highlight .ni { - color: #800080; } - .highlight .ne { - color: #990000; - font-weight: bold; } - .highlight .nf { - color: #990000; } - .highlight .nn { - color: #555555; } - .highlight .nt { - color: #000080; } - .highlight .nv { - color: #008080; } - .highlight .ow { - color: #000000; - font-weight: bold; } - .highlight .w { - color: #bbbbbb; } - .highlight .mf { - color: #009999; } - .highlight .mh { - color: #009999; } - .highlight .mi { - color: #009999; } - .highlight .mo { - color: #009999; } - .highlight .sb { - color: #d14; } - .highlight .sc { - color: #d14; } - .highlight .sd { - color: #d14; } - .highlight .s2 { - color: #d14; } - .highlight .se { - color: #d14; } - .highlight .sh { - color: #d14; } - .highlight .si { - color: #d14; } - .highlight .sx { - color: #d14; } - .highlight .sr { - color: #009926; } - .highlight .s1 { - color: #d14; } - .highlight .ss { - color: #990073; } - .highlight .bp { - color: #999999; } - .highlight .vc { - color: #008080; } - .highlight .vg { - color: #008080; } - .highlight .vi { - color: #008080; } - .highlight .il { - color: #009999; } diff --git a/css/jazzy.css b/css/jazzy.css deleted file mode 100644 index ff59f5f86..000000000 --- a/css/jazzy.css +++ /dev/null @@ -1,395 +0,0 @@ -*, *:before, *:after { - box-sizing: inherit; } - -body { - margin: 0; - background: #fff; - color: #333; - font: 16px/1.7 "Helvetica Neue", Helvetica, Arial, sans-serif; - letter-spacing: .2px; - -webkit-font-smoothing: antialiased; - box-sizing: border-box; } - -h1 { - font-size: 2rem; - font-weight: 700; - margin: 1.275em 0 0.6em; } - -h2 { - font-size: 1.75rem; - font-weight: 700; - margin: 1.275em 0 0.3em; } - -h3 { - font-size: 1.5rem; - font-weight: 700; - margin: 1em 0 0.3em; } - -h4 { - font-size: 1.25rem; - font-weight: 700; - margin: 1.275em 0 0.85em; } - -h5 { - font-size: 1rem; - font-weight: 700; - margin: 1.275em 0 0.85em; } - -h6 { - font-size: 1rem; - font-weight: 700; - margin: 1.275em 0 0.85em; - color: #777; } - -p { - margin: 0 0 1em; } - -ul, ol { - padding: 0 0 0 2em; - margin: 0 0 0.85em; } - -blockquote { - margin: 0 0 0.85em; - padding: 0 15px; - color: #858585; - border-left: 4px solid #e5e5e5; } - -img { - max-width: 100%; } - -a { - color: #4183c4; - text-decoration: none; } - a:hover, a:focus { - outline: 0; - text-decoration: underline; } - a.discouraged { - text-decoration: line-through; } - a.discouraged:hover, a.discouraged:focus { - text-decoration: underline line-through; } - -table { - background: #fff; - width: 100%; - border-collapse: collapse; - border-spacing: 0; - overflow: auto; - margin: 0 0 0.85em; } - -tr:nth-child(2n) { - background-color: #fbfbfb; } - -th, td { - padding: 6px 13px; - border: 1px solid #ddd; } - -pre { - margin: 0 0 1.275em; - padding: .85em 1em; - overflow: auto; - background: #f7f7f7; - font-size: .85em; - font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; } - -code { - font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; } - -.item-container p > code, .item-container li > code, .top-matter p > code, .top-matter li > code { - background: #f7f7f7; - padding: .2em; } - .item-container p > code:before, .item-container p > code:after, .item-container li > code:before, .item-container li > code:after, .top-matter p > code:before, .top-matter p > code:after, .top-matter li > code:before, .top-matter li > code:after { - letter-spacing: -.2em; - content: "\00a0"; } - -pre code { - padding: 0; - white-space: pre; } - -.content-wrapper { - display: flex; - flex-direction: column; } - @media (min-width: 768px) { - .content-wrapper { - flex-direction: row; } } -.header { - display: flex; - padding: 8px; - font-size: 0.875em; - background: #444; - color: #999; } - -.header-col { - margin: 0; - padding: 0 8px; } - -.header-col--primary { - flex: 1; } - -.header-link { - color: #fff; } - -.header-icon { - padding-right: 6px; - vertical-align: -4px; - height: 16px; } - -.breadcrumbs { - font-size: 0.875em; - padding: 8px 16px; - margin: 0; - background: #fbfbfb; - border-bottom: 1px solid #ddd; } - -.carat { - height: 10px; - margin: 0 5px; } - -.navigation { - order: 2; } - @media (min-width: 768px) { - .navigation { - order: 1; - width: 25%; - max-width: 300px; - padding-bottom: 64px; - overflow: hidden; - word-wrap: normal; - background: #fbfbfb; - border-right: 1px solid #ddd; } } -.nav-groups { - list-style-type: none; - padding-left: 0; } - -.nav-group-name { - border-bottom: 1px solid #ddd; - padding: 8px 0 8px 16px; } - -.nav-group-name-link { - color: #333; } - -.nav-group-tasks { - margin: 8px 0; - padding: 0 0 0 8px; } - -.nav-group-task { - font-size: 1em; - list-style-type: none; - white-space: nowrap; } - -.nav-group-task-link { - color: #808080; } - -.main-content { - order: 1; } - @media (min-width: 768px) { - .main-content { - order: 2; - flex: 1; - padding-bottom: 60px; } } -.section { - padding: 0 32px; - border-bottom: 1px solid #ddd; } - -.section-content { - max-width: 834px; - margin: 0 auto; - padding: 16px 0; } - -.section-name { - color: #666; - display: block; } - .section-name p { - margin-bottom: inherit; } - -.declaration .highlight { - overflow-x: initial; - padding: 8px 0; - margin: 0; - background-color: transparent; - border: none; } - -.task-group-section { - border-top: 1px solid #ddd; } - -.task-group { - padding-top: 0px; } - -.task-name-container a[name]:before { - content: ""; - display: block; } - -.section-name-container { - position: relative; } - .section-name-container .section-name-link { - position: absolute; - top: 0; - left: 0; - bottom: 0; - right: 0; - margin-bottom: 0; } - .section-name-container .section-name { - position: relative; - pointer-events: none; - z-index: 1; } - .section-name-container .section-name a { - pointer-events: auto; } - -.item-container { - padding: 0; } - -.item { - padding-top: 8px; - width: 100%; - list-style-type: none; } - .item a[name]:before { - content: ""; - display: block; } - .item .token, .item .direct-link { - display: inline-block; - text-indent: -20px; - padding-left: 3px; - margin-left: 20px; - font-size: 1rem; } - .item .declaration-note { - font-size: .85em; - color: #808080; - font-style: italic; } - -.pointer-container { - border-bottom: 1px solid #ddd; - left: -23px; - padding-bottom: 13px; - position: relative; - width: 110%; } - -.pointer { - left: 21px; - top: 7px; - display: block; - position: absolute; - width: 12px; - height: 12px; - border-left: 1px solid #ddd; - border-top: 1px solid #ddd; - background: #fff; - transform: rotate(45deg); } - -.height-container { - display: none; - position: relative; - width: 100%; - overflow: hidden; } - .height-container .section { - background: #fff; - border: 1px solid #ddd; - border-top-width: 0; - padding-top: 10px; - padding-bottom: 5px; - padding: 8px 16px; } - -.aside, .language { - padding: 6px 12px; - margin: 12px 0; - border-left: 5px solid #dddddd; - overflow-y: hidden; } - .aside .aside-title, .language .aside-title { - font-size: 9px; - letter-spacing: 2px; - text-transform: uppercase; - padding-bottom: 0; - margin: 0; - color: #aaa; - -webkit-user-select: none; } - .aside p:last-child, .language p:last-child { - margin-bottom: 0; } - -.language { - border-left: 5px solid #cde9f4; } - .language .aside-title { - color: #4183c4; } - -.aside-warning, .aside-deprecated, .aside-unavailable { - border-left: 5px solid #ff6666; } - .aside-warning .aside-title, .aside-deprecated .aside-title, .aside-unavailable .aside-title { - color: #ff0000; } - -.graybox { - border-collapse: collapse; - width: 100%; } - .graybox p { - margin: 0; - word-break: break-word; - min-width: 50px; } - .graybox td { - border: 1px solid #ddd; - padding: 5px 25px 5px 10px; - vertical-align: middle; } - .graybox tr td:first-of-type { - text-align: right; - padding: 7px; - vertical-align: top; - word-break: normal; - width: 40px; } - -.slightly-smaller { - font-size: 0.9em; } - -.footer { - padding: 8px 16px; - background: #444; - color: #ddd; - font-size: 0.8em; } - .footer p { - margin: 8px 0; } - .footer a { - color: #fff; } - -html.dash .header, html.dash .breadcrumbs, html.dash .navigation { - display: none; } - -html.dash .height-container { - display: block; } - -form[role=search] input { - font: 16px/1.7 "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 14px; - line-height: 24px; - padding: 0 10px; - margin: 0; - border: none; - border-radius: 1em; } - .loading form[role=search] input { - background: white url(../img/spinner.gif) center right 4px no-repeat; } - -form[role=search] .tt-menu { - margin: 0; - min-width: 300px; - background: #fbfbfb; - color: #333; - border: 1px solid #ddd; } - -form[role=search] .tt-highlight { - font-weight: bold; } - -form[role=search] .tt-suggestion { - font: 16px/1.7 "Helvetica Neue", Helvetica, Arial, sans-serif; - padding: 0 8px; } - form[role=search] .tt-suggestion span { - display: table-cell; - white-space: nowrap; } - form[role=search] .tt-suggestion .doc-parent-name { - width: 100%; - text-align: right; - font-weight: normal; - font-size: 0.9em; - padding-left: 16px; } - -form[role=search] .tt-suggestion:hover, -form[role=search] .tt-suggestion.tt-cursor { - cursor: pointer; - background-color: #4183c4; - color: #fff; } - -form[role=search] .tt-suggestion:hover .doc-parent-name, -form[role=search] .tt-suggestion.tt-cursor .doc-parent-name { - color: #fff; } diff --git a/custom_rules.html b/custom_rules.html deleted file mode 100644 index 6552c4b00..000000000 --- a/custom_rules.html +++ /dev/null @@ -1,343 +0,0 @@ - - - - custom_rules Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Custom Rules

- -

Create custom rules by providing a regex string. Optionally specify what syntax kinds to match against, the severity level, and what message to display.

- -
    -
  • Identifier: custom_rules
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: user-defined
  • -
- -
-
- - -
-
- - - - diff --git a/cyclomatic_complexity.html b/cyclomatic_complexity.html deleted file mode 100644 index b903e0347..000000000 --- a/cyclomatic_complexity.html +++ /dev/null @@ -1,396 +0,0 @@ - - - - cyclomatic_complexity Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Cyclomatic Complexity

- -

Complexity of function bodies should be limited.

- -
    -
  • Identifier: cyclomatic_complexity
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning: 10, error: 20, ignores_case_statements: false
  • -
-

Non Triggering Examples

-
func f1() {
-    if true {
-        for _ in 1..5 { }
-    }
-    if false { }
-}
-
-
func f(code: Int) -> Int {
-    switch code {
-    case 0: fallthrough
-    case 0: return 1
-    case 0: return 1
-    case 0: return 1
-    case 0: return 1
-    case 0: return 1
-    case 0: return 1
-    case 0: return 1
-    case 0: return 1
-    default: return 1
-    }
-}
-
-
func f1() {
-    if true {}; if true {}; if true {}; if true {}; if true {}; if true {}
-    func f2() {
-        if true {}; if true {}; if true {}; if true {}; if true {}
-    }
-}
-
-

Triggering Examples

-
↓func f1() {
-    if true {
-        if true {
-            if false {}
-        }
-    }
-    if false {}
-    let i = 0
-    switch i {
-        case 1: break
-        case 2: break
-        case 3: break
-        case 4: break
-        default: break
-    }
-    for _ in 1...5 {
-        guard true else {
-            return
-        }
-    }
-}
-
- -
-
- - -
-
- - - - diff --git a/deployment_target.html b/deployment_target.html deleted file mode 100644 index c54c31e47..000000000 --- a/deployment_target.html +++ /dev/null @@ -1,395 +0,0 @@ - - - - deployment_target Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Deployment Target

- -

Availability checks or attributes shouldn’t be using older versions that are satisfied by the deployment target.

- -
    -
  • Identifier: deployment_target
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, iOS_deployment_target: 7.0, macOS_deployment_target: 10.9, watchOS_deployment_target: 1.0, tvOS_deployment_target: 9.0
  • -
-

Non Triggering Examples

-
@available(iOS 12.0, *)
-class A {}
-
-
@available(watchOS 4.0, *)
-class A {}
-
-
@available(swift 3.0.2)
-class A {}
-
-
class A {}
-
-
if #available(iOS 10.0, *) {}
-
-
if #available(iOS 10, *) {}
-
-
guard #available(iOS 12.0, *) else { return }
-
-

Triggering Examples

-
↓@available(iOS 6.0, *)
-class A {}
-
-
↓@available(iOS 7.0, *)
-class A {}
-
-
↓@available(iOS 6, *)
-class A {}
-
-
↓@available(iOS 6.0, macOS 10.12, *)
- class A {}
-
-
↓@available(macOS 10.12, iOS 6.0, *)
- class A {}
-
-
↓@available(macOS 10.7, *)
-class A {}
-
-
↓@available(OSX 10.7, *)
-class A {}
-
-
↓@available(watchOS 0.9, *)
-class A {}
-
-
↓@available(tvOS 8, *)
-class A {}
-
-
if ↓#available(iOS 6.0, *) {}
-
-
if ↓#available(iOS 6, *) {}
-
-
guard ↓#available(iOS 6.0, *) else { return }
-
- -
-
- - -
-
- - - - diff --git a/discarded_notification_center_observer.html b/discarded_notification_center_observer.html deleted file mode 100644 index 892fd5a9a..000000000 --- a/discarded_notification_center_observer.html +++ /dev/null @@ -1,387 +0,0 @@ - - - - discarded_notification_center_observer Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Discarded Notification Center Observer

- -

When registering for a notification using a block, the opaque observer that is returned should be stored so it can be removed later.

- -
    -
  • Identifier: discarded_notification_center_observer
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let foo = nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil) { }
-
-
-
let foo = nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { })
-
-
func foo() -> Any {
-   return nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { })
-}
-
-
-
var obs: [Any?] = []
-obs.append(nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { }))
-
-
-
var obs: [String: Any?] = []
-obs["foo"] = nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { })
-
-
var obs: [Any?] = []
-obs.append(nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { }))
-
-
-
func foo(_ notif: Any) {
-   obs.append(notif)
-}
-foo(nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { }))
-
-
-
var obs: [NSObjectProtocol] = [
-   nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { }),
-   nc.addObserver(forName: .CKAccountChanged, object: nil, queue: nil, using: { })
-]
-
-

Triggering Examples

-
↓nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil) { }
-
-
-
↓nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { })
-
-
-
@discardableResult func foo() -> Any {
-   return ↓nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { })
-}
-
- -
-
- - -
-
- - - - diff --git a/discouraged_assert.html b/discouraged_assert.html deleted file mode 100644 index fb6cc388d..000000000 --- a/discouraged_assert.html +++ /dev/null @@ -1,363 +0,0 @@ - - - - discouraged_assert Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Discouraged Assert

- -

Prefer assertionFailure() and/or preconditionFailure() over assert(false)

- -
    -
  • Identifier: discouraged_assert
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
assert(true)
-
-
assert(true, "foobar")
-
-
assert(true, "foobar", file: "toto", line: 42)
-
-
assert(false || true)
-
-
XCTAssert(false)
-
-

Triggering Examples

-
↓assert(false)
-
-
↓assert(false, "foobar")
-
-
↓assert(false, "foobar", file: "toto", line: 42)
-
-
↓assert(   false    , "foobar")
-
- -
-
- - -
-
- - - - diff --git a/discouraged_direct_init.html b/discouraged_direct_init.html deleted file mode 100644 index f4b09fa5c..000000000 --- a/discouraged_direct_init.html +++ /dev/null @@ -1,377 +0,0 @@ - - - - discouraged_direct_init Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Discouraged Direct Initialization

- -

Discouraged direct initialization of types that can be harmful.

- -
    -
  • Identifier: discouraged_direct_init
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, types: [“Bundle”, “Bundle.init”, “UIDevice”, “UIDevice.init”]
  • -
-

Non Triggering Examples

-
let foo = UIDevice.current
-
-
let foo = Bundle.main
-
-
let foo = Bundle(path: "bar")
-
-
let foo = Bundle(identifier: "bar")
-
-
let foo = Bundle.init(path: "bar")
-
-
let foo = Bundle.init(identifier: "bar")
-
-

Triggering Examples

-
↓UIDevice()
-
-
↓Bundle()
-
-
let foo = ↓UIDevice()
-
-
let foo = ↓Bundle()
-
-
let foo = bar(bundle: ↓Bundle(), device: ↓UIDevice())
-
-
↓UIDevice.init()
-
-
↓Bundle.init()
-
-
let foo = ↓UIDevice.init()
-
-
let foo = ↓Bundle.init()
-
-
let foo = bar(bundle: ↓Bundle.init(), device: ↓UIDevice.init())
-
- -
-
- - -
-
- - - - diff --git a/discouraged_none_name.html b/discouraged_none_name.html deleted file mode 100644 index d4bf1779f..000000000 --- a/discouraged_none_name.html +++ /dev/null @@ -1,473 +0,0 @@ - - - - discouraged_none_name Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Discouraged None Name

- -

Discourages name cases/static members none, which can conflict with Optional<T>.none.

- -
    -
  • Identifier: discouraged_none_name
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
enum MyEnum {
-    case nOne
-}
-
-
enum MyEnum {
-    case _none
-}
-
-
enum MyEnum {
-    case none_
-}
-
-
enum MyEnum {
-    case none(Any)
-}
-
-
enum MyEnum {
-    case nonenone
-}
-
-
class MyClass {
-    class var nonenone: MyClass { MyClass() }
-}
-
-
class MyClass {
-    static var nonenone = MyClass()
-}
-
-
class MyClass {
-    static let nonenone = MyClass()
-}
-
-
struct MyStruct {
-    static var nonenone = MyStruct()
-}
-
-
struct MyStruct {
-    static let nonenone = MyStruct()
-}
-
-
struct MyStruct {
-    let none = MyStruct()
-}
-
-
struct MyStruct {
-    var none = MyStruct()
-}
-
-
class MyClass {
-    let none = MyClass()
-}
-
-
class MyClass {
-    var none = MyClass()
-}
-
-

Triggering Examples

-
enum MyEnum {
-    case ↓none
-}
-
-
enum MyEnum {
-    case a, ↓none
-}
-
-
enum MyEnum {
-    case ↓none, b
-}
-
-
enum MyEnum {
-    case a, ↓none, b
-}
-
-
enum MyEnum {
-    case a
-    case ↓none
-}
-
-
enum MyEnum {
-    case ↓none
-    case b
-}
-
-
enum MyEnum {
-    case a
-    case ↓none
-    case b
-}
-
-
class MyClass {
-    ↓static let none = MyClass()
-}
-
-
class MyClass {
-    ↓static let none: MyClass = MyClass()
-}
-
-
class MyClass {
-    ↓static var none: MyClass = MyClass()
-}
-
-
class MyClass {
-    ↓class var none: MyClass { MyClass() }
-}
-
-
struct MyStruct {
-    ↓static var none = MyStruct()
-}
-
-
struct MyStruct {
-    ↓static var none: MyStruct = MyStruct()
-}
-
-
struct MyStruct {
-    ↓static var none = MyStruct()
-}
-
-
struct MyStruct {
-    ↓static var none: MyStruct = MyStruct()
-}
-
-
struct MyStruct {
-    ↓static var a = MyStruct(), none = MyStruct()
-}
-
-
struct MyStruct {
-    ↓static var none = MyStruct(), a = MyStruct()
-}
-
- -
-
- - -
-
- - - - diff --git a/discouraged_object_literal.html b/discouraged_object_literal.html deleted file mode 100644 index 8e17c170f..000000000 --- a/discouraged_object_literal.html +++ /dev/null @@ -1,361 +0,0 @@ - - - - discouraged_object_literal Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Discouraged Object Literal

- -

Prefer initializers over object literals.

- -
    -
  • Identifier: discouraged_object_literal
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, image_literal: true, color_literal: true
  • -
-

Non Triggering Examples

-
let image = UIImage(named: aVariable)
-
-
let image = UIImage(named: "interpolated \(variable)")
-
-
let color = UIColor(red: value, green: value, blue: value, alpha: 1)
-
-
let image = NSImage(named: aVariable)
-
-
let image = NSImage(named: "interpolated \(variable)")
-
-
let color = NSColor(red: value, green: value, blue: value, alpha: 1)
-
-

Triggering Examples

-
let image = ↓#imageLiteral(resourceName: "image.jpg")
-
-
let color = ↓#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)
-
- -
-
- - -
-
- - - - diff --git a/discouraged_optional_boolean.html b/discouraged_optional_boolean.html deleted file mode 100644 index a33c52247..000000000 --- a/discouraged_optional_boolean.html +++ /dev/null @@ -1,727 +0,0 @@ - - - - discouraged_optional_boolean Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Discouraged Optional Boolean

- -

Prefer non-optional booleans over optional booleans.

- -
    -
  • Identifier: discouraged_optional_boolean
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
var foo: Bool
-
-
var foo: [String: Bool]
-
-
var foo: [Bool]
-
-
let foo: Bool = true
-
-
let foo: Bool = false
-
-
let foo: [String: Bool] = [:]
-
-
let foo: [Bool] = []
-
-
var foo: Bool { return true }
-
-
let foo: Bool { return false }()
-
-
func foo() -> Bool {}
-
-
func foo() -> [String: Bool] {}
-
-
func foo() -> ([Bool]) -> String {}
-
-
func foo(input: Bool = true) {}
-
-
func foo(input: [String: Bool] = [:]) {}
-
-
func foo(input: [Bool] = []) {}
-
-
class Foo {
-    func foo() -> Bool {}
-}
-
-
class Foo {
-    func foo() -> [String: Bool] {}
-}
-
-
class Foo {
-    func foo() -> ([Bool]) -> String {}
-}
-
-
struct Foo {
-    func foo() -> Bool {}
-}
-
-
struct Foo {
-    func foo() -> [String: Bool] {}
-}
-
-
struct Foo {
-    func foo() -> ([Bool]) -> String {}
-}
-
-
enum Foo {
-    func foo() -> Bool {}
-}
-
-
enum Foo {
-    func foo() -> [String: Bool] {}
-}
-
-
enum Foo {
-    func foo() -> ([Bool]) -> String {}
-}
-
-
class Foo {
-    func foo(input: Bool = true) {}
-}
-
-
class Foo {
-    func foo(input: [String: Bool] = [:]) {}
-}
-
-
class Foo {
-    func foo(input: [Bool] = []) {}
-}
-
-
struct Foo {
-    func foo(input: Bool = true) {}
-}
-
-
struct Foo {
-    func foo(input: [String: Bool] = [:]) {}
-}
-
-
struct Foo {
-    func foo(input: [Bool] = []) {}
-}
-
-
enum Foo {
-    func foo(input: Bool = true) {}
-}
-
-
enum Foo {
-    func foo(input: [String: Bool] = [:]) {}
-}
-
-
enum Foo {
-    func foo(input: [Bool] = []) {}
-}
-
-

Triggering Examples

-
var foo: ↓Bool?
-
-
var foo: [String: ↓Bool?]
-
-
var foo: [↓Bool?]
-
-
let foo: ↓Bool? = nil
-
-
let foo: [String: ↓Bool?] = [:]
-
-
let foo: [↓Bool?] = []
-
-
let foo = ↓Optional.some(false)
-
-
let foo = ↓Optional.some(true)
-
-
var foo: ↓Bool? { return nil }
-
-
let foo: ↓Bool? { return nil }()
-
-
func foo() -> ↓Bool? {}
-
-
func foo() -> [String: ↓Bool?] {}
-
-
func foo() -> [↓Bool?] {}
-
-
static func foo() -> ↓Bool? {}
-
-
static func foo() -> [String: ↓Bool?] {}
-
-
static func foo() -> [↓Bool?] {}
-
-
func foo() -> (↓Bool?) -> String {}
-
-
func foo() -> ([Int]) -> ↓Bool? {}
-
-
func foo(input: ↓Bool?) {}
-
-
func foo(input: [String: ↓Bool?]) {}
-
-
func foo(input: [↓Bool?]) {}
-
-
static func foo(input: ↓Bool?) {}
-
-
static func foo(input: [String: ↓Bool?]) {}
-
-
static func foo(input: [↓Bool?]) {}
-
-
class Foo {
-    var foo: ↓Bool?
-}
-
-
class Foo {
-    var foo: [String: ↓Bool?]
-}
-
-
class Foo {
-    let foo: ↓Bool? = nil
-}
-
-
class Foo {
-    let foo: [String: ↓Bool?] = [:]
-}
-
-
class Foo {
-    let foo: [↓Bool?] = []
-}
-
-
struct Foo {
-    var foo: ↓Bool?
-}
-
-
struct Foo {
-    var foo: [String: ↓Bool?]
-}
-
-
struct Foo {
-    let foo: ↓Bool? = nil
-}
-
-
struct Foo {
-    let foo: [String: ↓Bool?] = [:]
-}
-
-
struct Foo {
-    let foo: [↓Bool?] = []
-}
-
-
class Foo {
-    var foo: ↓Bool? { return nil }
-}
-
-
class Foo {
-    let foo: ↓Bool? { return nil }()
-}
-
-
struct Foo {
-    var foo: ↓Bool? { return nil }
-}
-
-
struct Foo {
-    let foo: ↓Bool? { return nil }()
-}
-
-
enum Foo {
-    var foo: ↓Bool? { return nil }
-}
-
-
enum Foo {
-    let foo: ↓Bool? { return nil }()
-}
-
-
class Foo {
-    func foo() -> ↓Bool? {}
-}
-
-
class Foo {
-    func foo() -> [String: ↓Bool?] {}
-}
-
-
class Foo {
-    func foo() -> [↓Bool?] {}
-}
-
-
class Foo {
-    static func foo() -> ↓Bool? {}
-}
-
-
class Foo {
-    static func foo() -> [String: ↓Bool?] {}
-}
-
-
class Foo {
-    static func foo() -> [↓Bool?] {}
-}
-
-
class Foo {
-    func foo() -> (↓Bool?) -> String {}
-}
-
-
class Foo {
-    func foo() -> ([Int]) -> ↓Bool? {}
-}
-
-
struct Foo {
-    func foo() -> ↓Bool? {}
-}
-
-
struct Foo {
-    func foo() -> [String: ↓Bool?] {}
-}
-
-
struct Foo {
-    func foo() -> [↓Bool?] {}
-}
-
-
struct Foo {
-    static func foo() -> ↓Bool? {}
-}
-
-
struct Foo {
-    static func foo() -> [String: ↓Bool?] {}
-}
-
-
struct Foo {
-    static func foo() -> [↓Bool?] {}
-}
-
-
struct Foo {
-    func foo() -> (↓Bool?) -> String {}
-}
-
-
struct Foo {
-    func foo() -> ([Int]) -> ↓Bool? {}
-}
-
-
enum Foo {
-    func foo() -> ↓Bool? {}
-}
-
-
enum Foo {
-    func foo() -> [String: ↓Bool?] {}
-}
-
-
enum Foo {
-    func foo() -> [↓Bool?] {}
-}
-
-
enum Foo {
-    static func foo() -> ↓Bool? {}
-}
-
-
enum Foo {
-    static func foo() -> [String: ↓Bool?] {}
-}
-
-
enum Foo {
-    static func foo() -> [↓Bool?] {}
-}
-
-
enum Foo {
-    func foo() -> (↓Bool?) -> String {}
-}
-
-
enum Foo {
-    func foo() -> ([Int]) -> ↓Bool? {}
-}
-
-
class Foo {
-    func foo(input: ↓Bool?) {}
-}
-
-
class Foo {
-    func foo(input: [String: ↓Bool?]) {}
-}
-
-
class Foo {
-    func foo(input: [↓Bool?]) {}
-}
-
-
class Foo {
-    static func foo(input: ↓Bool?) {}
-}
-
-
class Foo {
-    static func foo(input: [String: ↓Bool?]) {}
-}
-
-
class Foo {
-    static func foo(input: [↓Bool?]) {}
-}
-
-
struct Foo {
-    func foo(input: ↓Bool?) {}
-}
-
-
struct Foo {
-    func foo(input: [String: ↓Bool?]) {}
-}
-
-
struct Foo {
-    func foo(input: [↓Bool?]) {}
-}
-
-
struct Foo {
-    static func foo(input: ↓Bool?) {}
-}
-
-
struct Foo {
-    static func foo(input: [String: ↓Bool?]) {}
-}
-
-
struct Foo {
-    static func foo(input: [↓Bool?]) {}
-}
-
-
enum Foo {
-    func foo(input: ↓Bool?) {}
-}
-
-
enum Foo {
-    func foo(input: [String: ↓Bool?]) {}
-}
-
-
enum Foo {
-    func foo(input: [↓Bool?]) {}
-}
-
-
enum Foo {
-    static func foo(input: ↓Bool?) {}
-}
-
-
enum Foo {
-    static func foo(input: [String: ↓Bool?]) {}
-}
-
-
enum Foo {
-    static func foo(input: [↓Bool?]) {}
-}
-
- -
-
- - -
-
- - - - diff --git a/discouraged_optional_collection.html b/discouraged_optional_collection.html deleted file mode 100644 index c13a79701..000000000 --- a/discouraged_optional_collection.html +++ /dev/null @@ -1,909 +0,0 @@ - - - - discouraged_optional_collection Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Discouraged Optional Collection

- -

Prefer empty collection over optional collection.

- -
    -
  • Identifier: discouraged_optional_collection
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
var foo: [Int]
-
-
var foo: [String: Int]
-
-
var foo: Set<String>
-
-
var foo: [String: [String: Int]]
-
-
let foo: [Int] = []
-
-
let foo: [String: Int] = [:]
-
-
let foo: Set<String> = []
-
-
let foo: [String: [String: Int]] = [:]
-
-
var foo: [Int] { return [] }
-
-
func foo() -> [Int] {}
-
-
func foo() -> [String: String] {}
-
-
func foo() -> Set<Int> {}
-
-
func foo() -> ([Int]) -> String {}
-
-
func foo(input: [String] = []) {}
-
-
func foo(input: [String: String] = [:]) {}
-
-
func foo(input: Set<String> = []) {}
-
-
class Foo {
-    func foo() -> [Int] {}
-}
-
-
class Foo {
-    func foo() -> [String: String] {}
-}
-
-
class Foo {
-    func foo() -> Set<Int> {}
-}
-
-
class Foo {
-    func foo() -> ([Int]) -> String {}
-}
-
-
struct Foo {
-    func foo() -> [Int] {}
-}
-
-
struct Foo {
-    func foo() -> [String: String] {}
-}
-
-
struct Foo {
-    func foo() -> Set<Int> {}
-}
-
-
struct Foo {
-    func foo() -> ([Int]) -> String {}
-}
-
-
enum Foo {
-    func foo() -> [Int] {}
-}
-
-
enum Foo {
-    func foo() -> [String: String] {}
-}
-
-
enum Foo {
-    func foo() -> Set<Int> {}
-}
-
-
enum Foo {
-    func foo() -> ([Int]) -> String {}
-}
-
-
class Foo {
-    func foo(input: [String] = []) {}
-}
-
-
class Foo {
-    func foo(input: [String: String] = [:]) {}
-}
-
-
class Foo {
-    func foo(input: Set<String> = []) {}
-}
-
-
struct Foo {
-    func foo(input: [String] = []) {}
-}
-
-
struct Foo {
-    func foo(input: [String: String] = [:]) {}
-}
-
-
struct Foo {
-    func foo(input: Set<String> = []) {}
-}
-
-
enum Foo {
-    func foo(input: [String] = []) {}
-}
-
-
enum Foo {
-    func foo(input: [String: String] = [:]) {}
-}
-
-
enum Foo {
-    func foo(input: Set<String> = []) {}
-}
-
-

Triggering Examples

-
↓var foo: [Int]?
-
-
↓var foo: [String: Int]?
-
-
↓var foo: Set<String>?
-
-
↓let foo: [Int]? = nil
-
-
↓let foo: [String: Int]? = nil
-
-
↓let foo: Set<String>? = nil
-
-
↓var foo: [Int]? { return nil }
-
-
↓let foo: [Int]? { return nil }()
-
-
func ↓foo() -> [T]? {}
-
-
func ↓foo() -> [String: String]? {}
-
-
func ↓foo() -> [String: [String: String]]? {}
-
-
func ↓foo() -> [String: [String: String]?] {}
-
-
func ↓foo() -> Set<Int>? {}
-
-
static func ↓foo() -> [T]? {}
-
-
static func ↓foo() -> [String: String]? {}
-
-
static func ↓foo() -> [String: [String: String]]? {}
-
-
static func ↓foo() -> [String: [String: String]?] {}
-
-
static func ↓foo() -> Set<Int>? {}
-
-
func ↓foo() -> ([Int]?) -> String {}
-
-
func ↓foo() -> ([Int]) -> [String]? {}
-
-
func foo(↓input: [String: String]?) {}
-
-
func foo(↓input: [String: [String: String]]?) {}
-
-
func foo(↓input: [String: [String: String]?]) {}
-
-
func foo(↓↓input: [String: [String: String]?]?) {}
-
-
func foo<K, V>(_ dict1: [K: V], ↓_ dict2: [K: V]?) -> [K: V]
-
-
func foo<K, V>(dict1: [K: V], ↓dict2: [K: V]?) -> [K: V]
-
-
static func foo(↓input: [String: String]?) {}
-
-
static func foo(↓input: [String: [String: String]]?) {}
-
-
static func foo(↓input: [String: [String: String]?]) {}
-
-
static func foo(↓↓input: [String: [String: String]?]?) {}
-
-
static func foo<K, V>(_ dict1: [K: V], ↓_ dict2: [K: V]?) -> [K: V]
-
-
static func foo<K, V>(dict1: [K: V], ↓dict2: [K: V]?) -> [K: V]
-
-
class Foo {
-    ↓var foo: [Int]?
-}
-
-
class Foo {
-    ↓var foo: [String: Int]?
-}
-
-
class Foo {
-    ↓var foo: Set<String>?
-}
-
-
class Foo {
-    ↓let foo: [Int]? = nil
-}
-
-
class Foo {
-    ↓let foo: [String: Int]? = nil
-}
-
-
class Foo {
-    ↓let foo: Set<String>? = nil
-}
-
-
struct Foo {
-    ↓var foo: [Int]?
-}
-
-
struct Foo {
-    ↓var foo: [String: Int]?
-}
-
-
struct Foo {
-    ↓var foo: Set<String>?
-}
-
-
struct Foo {
-    ↓let foo: [Int]? = nil
-}
-
-
struct Foo {
-    ↓let foo: [String: Int]? = nil
-}
-
-
struct Foo {
-    ↓let foo: Set<String>? = nil
-}
-
-
class Foo {
-    ↓var foo: [Int]? { return nil }
-}
-
-
class Foo {
-    ↓let foo: [Int]? { return nil }()
-}
-
-
class Foo {
-    ↓var foo: Set<String>? { return nil }
-}
-
-
class Foo {
-    ↓let foo: Set<String>? { return nil }()
-}
-
-
struct Foo {
-    ↓var foo: [Int]? { return nil }
-}
-
-
struct Foo {
-    ↓let foo: [Int]? { return nil }()
-}
-
-
struct Foo {
-    ↓var foo: Set<String>? { return nil }
-}
-
-
struct Foo {
-    ↓let foo: Set<String>? { return nil }()
-}
-
-
enum Foo {
-    ↓var foo: [Int]? { return nil }
-}
-
-
enum Foo {
-    ↓let foo: [Int]? { return nil }()
-}
-
-
enum Foo {
-    ↓var foo: Set<String>? { return nil }
-}
-
-
enum Foo {
-    ↓let foo: Set<String>? { return nil }()
-}
-
-
class Foo {
-    func ↓foo() -> [T]? {}
-}
-
-
class Foo {
-    func ↓foo() -> [String: String]? {}
-}
-
-
class Foo {
-    func ↓foo() -> [String: [String: String]]? {}
-}
-
-
class Foo {
-    func ↓foo() -> [String: [String: String]?] {}
-}
-
-
class Foo {
-    func ↓foo() -> Set<Int>? {}
-}
-
-
class Foo {
-    static func ↓foo() -> [T]? {}
-}
-
-
class Foo {
-    static func ↓foo() -> [String: String]? {}
-}
-
-
class Foo {
-    static func ↓foo() -> [String: [String: String]]? {}
-}
-
-
class Foo {
-    static func ↓foo() -> [String: [String: String]?] {}
-}
-
-
class Foo {
-    static func ↓foo() -> Set<Int>? {}
-}
-
-
class Foo {
-    func ↓foo() -> ([Int]?) -> String {}
-}
-
-
class Foo {
-    func ↓foo() -> ([Int]) -> [String]? {}
-}
-
-
struct Foo {
-    func ↓foo() -> [T]? {}
-}
-
-
struct Foo {
-    func ↓foo() -> [String: String]? {}
-}
-
-
struct Foo {
-    func ↓foo() -> [String: [String: String]]? {}
-}
-
-
struct Foo {
-    func ↓foo() -> [String: [String: String]?] {}
-}
-
-
struct Foo {
-    func ↓foo() -> Set<Int>? {}
-}
-
-
struct Foo {
-    static func ↓foo() -> [T]? {}
-}
-
-
struct Foo {
-    static func ↓foo() -> [String: String]? {}
-}
-
-
struct Foo {
-    static func ↓foo() -> [String: [String: String]]? {}
-}
-
-
struct Foo {
-    static func ↓foo() -> [String: [String: String]?] {}
-}
-
-
struct Foo {
-    static func ↓foo() -> Set<Int>? {}
-}
-
-
struct Foo {
-    func ↓foo() -> ([Int]?) -> String {}
-}
-
-
struct Foo {
-    func ↓foo() -> ([Int]) -> [String]? {}
-}
-
-
enum Foo {
-    func ↓foo() -> [T]? {}
-}
-
-
enum Foo {
-    func ↓foo() -> [String: String]? {}
-}
-
-
enum Foo {
-    func ↓foo() -> [String: [String: String]]? {}
-}
-
-
enum Foo {
-    func ↓foo() -> [String: [String: String]?] {}
-}
-
-
enum Foo {
-    func ↓foo() -> Set<Int>? {}
-}
-
-
enum Foo {
-    static func ↓foo() -> [T]? {}
-}
-
-
enum Foo {
-    static func ↓foo() -> [String: String]? {}
-}
-
-
enum Foo {
-    static func ↓foo() -> [String: [String: String]]? {}
-}
-
-
enum Foo {
-    static func ↓foo() -> [String: [String: String]?] {}
-}
-
-
enum Foo {
-    static func ↓foo() -> Set<Int>? {}
-}
-
-
enum Foo {
-    func ↓foo() -> ([Int]?) -> String {}
-}
-
-
enum Foo {
-    func ↓foo() -> ([Int]) -> [String]? {}
-}
-
-
class Foo {
-    func foo(↓input: [String: String]?) {}
-}
-
-
class Foo {
-    func foo(↓input: [String: [String: String]]?) {}
-}
-
-
class Foo {
-    func foo(↓input: [String: [String: String]?]) {}
-}
-
-
class Foo {
-    func foo(↓↓input: [String: [String: String]?]?) {}
-}
-
-
class Foo {
-    func foo<K, V>(_ dict1: [K: V], ↓_ dict2: [K: V]?) -> [K: V]
-}
-
-
class Foo {
-    func foo<K, V>(dict1: [K: V], ↓dict2: [K: V]?) -> [K: V]
-}
-
-
class Foo {
-    static func foo(↓input: [String: String]?) {}
-}
-
-
class Foo {
-    static func foo(↓input: [String: [String: String]]?) {}
-}
-
-
class Foo {
-    static func foo(↓input: [String: [String: String]?]) {}
-}
-
-
class Foo {
-    static func foo(↓↓input: [String: [String: String]?]?) {}
-}
-
-
class Foo {
-    static func foo<K, V>(_ dict1: [K: V], ↓_ dict2: [K: V]?) -> [K: V]
-}
-
-
class Foo {
-    static func foo<K, V>(dict1: [K: V], ↓dict2: [K: V]?) -> [K: V]
-}
-
-
struct Foo {
-    func foo(↓input: [String: String]?) {}
-}
-
-
struct Foo {
-    func foo(↓input: [String: [String: String]]?) {}
-}
-
-
struct Foo {
-    func foo(↓input: [String: [String: String]?]) {}
-}
-
-
struct Foo {
-    func foo(↓↓input: [String: [String: String]?]?) {}
-}
-
-
struct Foo {
-    func foo<K, V>(_ dict1: [K: V], ↓_ dict2: [K: V]?) -> [K: V]
-}
-
-
struct Foo {
-    func foo<K, V>(dict1: [K: V], ↓dict2: [K: V]?) -> [K: V]
-}
-
-
struct Foo {
-    static func foo(↓input: [String: String]?) {}
-}
-
-
struct Foo {
-    static func foo(↓input: [String: [String: String]]?) {}
-}
-
-
struct Foo {
-    static func foo(↓input: [String: [String: String]?]) {}
-}
-
-
struct Foo {
-    static func foo(↓↓input: [String: [String: String]?]?) {}
-}
-
-
struct Foo {
-    static func foo<K, V>(_ dict1: [K: V], ↓_ dict2: [K: V]?) -> [K: V]
-}
-
-
struct Foo {
-    static func foo<K, V>(dict1: [K: V], ↓dict2: [K: V]?) -> [K: V]
-}
-
-
enum Foo {
-    func foo(↓input: [String: String]?) {}
-}
-
-
enum Foo {
-    func foo(↓input: [String: [String: String]]?) {}
-}
-
-
enum Foo {
-    func foo(↓input: [String: [String: String]?]) {}
-}
-
-
enum Foo {
-    func foo(↓↓input: [String: [String: String]?]?) {}
-}
-
-
enum Foo {
-    func foo<K, V>(_ dict1: [K: V], ↓_ dict2: [K: V]?) -> [K: V]
-}
-
-
enum Foo {
-    func foo<K, V>(dict1: [K: V], ↓dict2: [K: V]?) -> [K: V]
-}
-
-
enum Foo {
-    static func foo(↓input: [String: String]?) {}
-}
-
-
enum Foo {
-    static func foo(↓input: [String: [String: String]]?) {}
-}
-
-
enum Foo {
-    static func foo(↓input: [String: [String: String]?]) {}
-}
-
-
enum Foo {
-    static func foo(↓↓input: [String: [String: String]?]?) {}
-}
-
-
enum Foo {
-    static func foo<K, V>(_ dict1: [K: V], ↓_ dict2: [K: V]?) -> [K: V]
-}
-
-
enum Foo {
-    static func foo<K, V>(dict1: [K: V], ↓dict2: [K: V]?) -> [K: V]
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Info.plist b/docsets/SwiftLintFramework.docset/Contents/Info.plist deleted file mode 100644 index 6209ef44f..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Info.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - CFBundleIdentifier - com.jazzy.swiftlintframework - CFBundleName - SwiftLintFramework - DocSetPlatformFamily - swiftlintframework - isDashDocset - - dashIndexFilePath - index.html - isJavaScriptEnabled - - DashDocSetFamily - dashtoc - DashDocSetFallbackURL - https://realm.github.io/SwiftLint/ - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Classes.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Classes.html deleted file mode 100644 index 1f3c6a2cc..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Classes.html +++ /dev/null @@ -1,434 +0,0 @@ - - - - Classes Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Classes

-

The following classes are available globally.

- -
-
- -
-
-
-
    -
  • -
    - - - - SwiftLintFile - -
    -
    -
    -
    -
    -
    -

    A unit of Swift source code, either on disk or in memory.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public final class SwiftLintFile
    -
    extension SwiftLintFile: Hashable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - LinterCache - -
    -
    -
    -
    -
    -
    -

    A persisted cache for storing and retrieving linter results.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public final class LinterCache
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - RuleStorage - -
    -
    -
    -
    -
    -
    -

    A storage mechanism for aggregating the results of CollectingRules.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public class RuleStorage : CustomStringConvertible
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Classes/LinterCache.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Classes/LinterCache.html deleted file mode 100644 index 21b179d08..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Classes/LinterCache.html +++ /dev/null @@ -1,447 +0,0 @@ - - - - LinterCache Class Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

LinterCache

-
-
- -
public final class LinterCache
- -
-
-

A persisted cache for storing and retrieving linter results.

- - -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Creates a LinterCache by specifying a SwiftLint configuration and a file manager.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(configuration: Configuration, fileManager: LintableFileManager = FileManager.default)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - configuration - - -
    -

    The SwiftLint configuration for which this cache will be used.

    -
    -
    - - fileManager - - -
    -

    The file manager to use to read lintable file information.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - save() - -
    -
    -
    -
    -
    -
    -

    Persists the cache to disk.

    -
    -

    Throws

    - Throws if the linter cache doesn’t have a location value, if the cache couldn’t be serialized, or if - the contents couldn’t be written to disk. - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func save() throws
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Classes/RuleStorage.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Classes/RuleStorage.html deleted file mode 100644 index b9c62b570..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Classes/RuleStorage.html +++ /dev/null @@ -1,409 +0,0 @@ - - - - RuleStorage Class Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleStorage

-
-
- -
public class RuleStorage : CustomStringConvertible
- -
-
-

A storage mechanism for aggregating the results of CollectingRules.

- - -
-
- -
-
-
-
    -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init() - -
    -
    -
    -
    -
    -
    -

    Creates a RuleStorage with no initial stored data.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init()
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Classes/SwiftLintFile.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Classes/SwiftLintFile.html deleted file mode 100644 index 6b63e3665..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Classes/SwiftLintFile.html +++ /dev/null @@ -1,770 +0,0 @@ - - - - SwiftLintFile Class Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

SwiftLintFile

-
-
- -
public final class SwiftLintFile
-
extension SwiftLintFile: Hashable
- -
-
-

A unit of Swift source code, either on disk or in memory.

- - -
-
- -
-
-
-
    -
  • -
    - - - - init(file:) - -
    -
    -
    -
    -
    -
    -

    Creates a SwiftLintFile with a SourceKitten File.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(file: File)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - file - - -
    -

    A file from SourceKitten.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(path:) - -
    -
    -
    -
    -
    -
    -

    Creates a SwiftLintFile by specifying its path on disk. -Fails if the file does not exist.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public convenience init?(path: String)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - path - - -
    -

    The path to a file on disk. Relative and absolute paths supported.

    -
    -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a SwiftLintFile by specifying its path on disk. Unlike the SwiftLintFile(path:) initializer, this -one does not read its contents immediately, but rather traps at runtime when attempting to access its contents.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public convenience init(pathDeferringReading path: String)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - path - - -
    -

    The path to a file on disk. Relative and absolute paths supported.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(contents:) - -
    -
    -
    -
    -
    -
    -

    Creates a SwiftLintFile that is not backed by a file on disk by specifying its contents.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public convenience init(contents: String)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - contents - - -
    -

    The contents of the file.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - path - -
    -
    -
    -
    -
    -
    -

    The path on disk for this file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var path: String? { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - contents - -
    -
    -
    -
    -
    -
    -

    The file’s contents.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var contents: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - stringView - -
    -
    -
    -
    -
    -
    -

    A string view into the contents of this file optimized for string manipulation operations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var stringView: StringView { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - lines - -
    -
    -
    -
    -
    -
    -

    The parsed lines for this file’s contents.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var lines: [Line] { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - invalidateCache() - -
    -
    -
    -
    -
    -
    -

    Invalidates all cached data for this file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func invalidateCache()
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Hashable Conformance

-

-
-
-
    -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func == (lhs: SwiftLintFile, rhs: SwiftLintFile) -> Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - hash(into:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func hash(into hasher: inout Hasher)
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Enums.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Enums.html deleted file mode 100644 index bc1f6314e..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Enums.html +++ /dev/null @@ -1,563 +0,0 @@ - - - - Enumerations Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Enumerations

-

The following enumerations are available globally.

- -
-
- -
-
-
- -
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Enums/AccessControlLevel.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Enums/AccessControlLevel.html deleted file mode 100644 index 08da1e4be..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Enums/AccessControlLevel.html +++ /dev/null @@ -1,564 +0,0 @@ - - - - AccessControlLevel Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

AccessControlLevel

-
-
- -
public enum AccessControlLevel : String, CustomStringConvertible
-
extension AccessControlLevel: Comparable
- -
-
-

The accessibility of a Swift source declaration.

- - - -
-
- -
-
-
-
    -
  • -
    - - - - private - -
    -
    -
    -
    -
    -
    -

    Accessible by the declaration’s immediate lexical scope.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case `private` = "source.lang.swift.accessibility.private"
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - fileprivate - -
    -
    -
    -
    -
    -
    -

    Accessible by the declaration’s same file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case `fileprivate` = "source.lang.swift.accessibility.fileprivate"
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - internal - -
    -
    -
    -
    -
    -
    -

    Accessible by the declaration’s same module, or modules importing it with the @testable attribute.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case `internal` = "source.lang.swift.accessibility.internal"
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - public - -
    -
    -
    -
    -
    -
    -

    Accessible by the declaration’s same program.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case `public` = "source.lang.swift.accessibility.public"
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - open - -
    -
    -
    -
    -
    -
    -

    Accessible and customizable (via subclassing or overrides) by the declaration’s same program.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case open = "source.lang.swift.accessibility.open"
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - <(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func < (lhs: AccessControlLevel, rhs: AccessControlLevel) -> Bool
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Enums/ConfigurationError.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Enums/ConfigurationError.html deleted file mode 100644 index 4bea8f534..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Enums/ConfigurationError.html +++ /dev/null @@ -1,470 +0,0 @@ - - - - ConfigurationError Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

ConfigurationError

-
-
- -
public enum ConfigurationError : Error, Equatable
- -
-
-

All possible configuration errors.

- - -
-
- -
-
-
-
    -
  • -
    - - - - unknownConfiguration - -
    -
    -
    -
    -
    -
    -

    The configuration didn’t match internal expectations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case unknownConfiguration
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    The configuration had both match_kind and excluded_match_kind parameters.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case ambiguousMatchKindParameters
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - generic(_:) - -
    -
    -
    -
    -
    -
    -

    A generic configuration error specified by a string.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case generic(String)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    The initial configuration file was not found.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case initialFileNotFound(path: String)
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Enums/RuleIdentifier.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Enums/RuleIdentifier.html deleted file mode 100644 index 0add28e35..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Enums/RuleIdentifier.html +++ /dev/null @@ -1,568 +0,0 @@ - - - - RuleIdentifier Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleIdentifier

-
-
- -
public enum RuleIdentifier : Hashable, ExpressibleByStringLiteral
- -
-
-

An identifier representing a SwiftLint rule, or all rules.

- - -
-
- -
-
-
-
- - -
- -

Values

-

-
-
-
    -
  • -
    - - - - all - -
    -
    -
    -
    -
    -
    -

    Special identifier that should be treated as referring to ‘all’ SwiftLint rules. One helpful usecase is in -disabling all SwiftLint rules in a given file by adding a // swiftlint:disable all comment at the top of the -file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case all
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - single(identifier:) - -
    -
    -
    -
    -
    -
    -

    Represents a single SwiftLint rule with the specified identifier.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case single(identifier: String)
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Properties

-

-
-
-
    -
  • -
    - - - - stringRepresentation - -
    -
    -
    -
    -
    -
    -

    The spelling of the string for this idenfitier.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var stringRepresentation: String { get }
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Initializers

-

-
-
-
    -
  • -
    - - - - init(_:) - -
    -
    -
    -
    -
    -
    -

    Creates a RuleIdentifier by its string representation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(_ value: String)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - value - - -
    -

    The string representation.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

ExpressibleByStringLiteral Conformance

-

-
-
- -
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Enums/RuleKind.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Enums/RuleKind.html deleted file mode 100644 index d245efc3f..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Enums/RuleKind.html +++ /dev/null @@ -1,500 +0,0 @@ - - - - RuleKind Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleKind

-
-
- -
public enum RuleKind : String, Codable
- -
-
-

All the possible rule kinds (categories).

- - -
-
- -
-
-
-
    -
  • -
    - - - - lint - -
    -
    -
    -
    -
    -
    -

    Describes rules that validate Swift source conventions.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case lint
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - idiomatic - -
    -
    -
    -
    -
    -
    -

    Describes rules that validate common practices in the Swift community.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case idiomatic
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - style - -
    -
    -
    -
    -
    -
    -

    Describes rules that validate stylistic choices.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case style
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - metrics - -
    -
    -
    -
    -
    -
    -

    Describes rules that validate magnitudes or measurements of Swift source.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case metrics
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - performance - -
    -
    -
    -
    -
    -
    -

    Describes rules that validate that code patterns with poor performance are avoided.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case performance
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Enums/RuleListError.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Enums/RuleListError.html deleted file mode 100644 index 2c2d92c63..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Enums/RuleListError.html +++ /dev/null @@ -1,380 +0,0 @@ - - - - RuleListError Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleListError

-
-
- -
public enum RuleListError : Error
- -
-
-

All possible rule list configuration errors.

- - -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    The rule list contains more than one configuration for the specified rule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case duplicatedConfigurations(rule: Rule.Type)
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Enums/SwiftExpressionKind.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Enums/SwiftExpressionKind.html deleted file mode 100644 index 998da75be..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Enums/SwiftExpressionKind.html +++ /dev/null @@ -1,560 +0,0 @@ - - - - SwiftExpressionKind Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

SwiftExpressionKind

-
-
- -
public enum SwiftExpressionKind : String
- -
-
-

The kind of expression for a contiguous set of Swift source tokens.

- - -
-
- -
-
-
- -
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Enums/ViolationSeverity.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Enums/ViolationSeverity.html deleted file mode 100644 index f765382b2..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Enums/ViolationSeverity.html +++ /dev/null @@ -1,452 +0,0 @@ - - - - ViolationSeverity Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

ViolationSeverity

-
-
- -
public enum ViolationSeverity : String, Comparable, Codable
- -
-
-

The magnitude of a StyleViolation.

- - -
-
- -
-
-
-
    -
  • -
    - - - - warning - -
    -
    -
    -
    -
    -
    -

    Non-fatal. If using SwiftLint as an Xcode build phase, Xcode will mark the build as having succeeded.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case warning
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - error - -
    -
    -
    -
    -
    -
    -

    Fatal. If using SwiftLint as an Xcode build phase, Xcode will mark the build as having failed.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case error
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Comparable

-

-
-
-
    -
  • -
    - - - - <(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func < (lhs: ViolationSeverity, rhs: ViolationSeverity) -> Bool
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Extensions.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Extensions.html deleted file mode 100644 index ade5a4c19..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Extensions.html +++ /dev/null @@ -1,394 +0,0 @@ - - - - Extensions Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Extensions

-

The following extensions are available globally.

- -
-
- -
-
-
- -
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Extensions/FileManager.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Extensions/FileManager.html deleted file mode 100644 index 06264b1eb..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Extensions/FileManager.html +++ /dev/null @@ -1,404 +0,0 @@ - - - - FileManager Extension Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

FileManager

-
-
- -
extension FileManager: LintableFileManager
- -
-
- -
-
- -
-
-
- -
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Extensions/String.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Extensions/String.html deleted file mode 100644 index 996c423e3..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Extensions/String.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - String Extension Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

String

-
-
- -
extension String
- -
-
- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Returns a new string, converting the path to a canonical absolute path.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func absolutePathStandardized() -> String
    - -
    -
    -
    -

    Return Value

    -

    A new String.

    -
    - -
    -
    -
  • -
  • -
    - - - - countOccurrences(of:) - -
    -
    -
    -
    -
    -
    -

    Count the number of occurrences of the given character in self

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func countOccurrences(of character: Character) -> Int
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - character - - -
    -

    Character to count

    -
    -
    -
    -
    -

    Return Value

    -

    Number of times character occurs in self

    -
    - -
    -
    -
  • -
  • -
    - - - - path(relativeTo:) - -
    -
    -
    -
    -
    -
    -

    If self is a path, this method can be used to get a path expression relative to a root directory

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func path(relativeTo rootDirectory: String) -> String
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Functions.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Functions.html deleted file mode 100644 index 6e21f5ba4..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Functions.html +++ /dev/null @@ -1,523 +0,0 @@ - - - - Functions Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Functions

-

The following functions are available globally.

- -
-
- -
-
-
-
    -
  • -
    - - - - queuedPrint(_:) - -
    -
    -
    -
    -
    -
    -

    A thread-safe version of Swift’s standard print().

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func queuedPrint<T>(_ object: T)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - object - - -
    -

    Object to print.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - queuedPrintError(_:) - -
    -
    -
    -
    -
    -
    -

    A thread-safe, newline-terminated version of fputs(..., stderr).

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func queuedPrintError(_ string: String)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - string - - -
    -

    String to print.

    -
    -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A thread-safe, newline-terminated version of fatalError(...) that doesn’t leak -the source path from the compiled binary.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func queuedFatalError(_ string: String, file: StaticString = #file, line: UInt = #line) -> Never
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Returns the reporter with the specified identifier. Traps if the specified identifier doesn’t correspond to any -known reporters.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func reporterFrom(identifier: String) -> Reporter.Type
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - identifier - - -
    -

    The identifier corresponding to the reporter.

    -
    -
    -
    -
    -

    Return Value

    -

    The reporter type.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Global Variables.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Global Variables.html deleted file mode 100644 index dd959e7ed..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Global Variables.html +++ /dev/null @@ -1,370 +0,0 @@ - - - - Global Variables Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Global Variables

-

The following global variables are available globally.

- -
-
- -
-
-
-
    -
  • -
    - - - - primaryRuleList - -
    -
    -
    -
    -
    -
    -

    The rule list containing all available rules built into SwiftLint.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let primaryRuleList: RuleList
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Guides.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Guides.html deleted file mode 100644 index 4d9cfb254..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Guides.html +++ /dev/null @@ -1,2212 +0,0 @@ - - - - Guides Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Guides

-

The following guides are available globally.

- -
-
- -
-
-
- -
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols.html deleted file mode 100644 index 25a235e94..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols.html +++ /dev/null @@ -1,848 +0,0 @@ - - - - Protocols Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Protocols

-

The following protocols are available globally.

- -
-
- -
-
-
-
    -
  • -
    - - - - LintableFileManager - -
    -
    -
    -
    -
    -
    -

    An interface for enumerating files that can be linted by SwiftLint.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol LintableFileManager
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - ASTRule - -
    -
    -
    -
    -
    -
    -

    A rule that leverages the Swift source’s pre-typechecked Abstract Syntax Tree to recurse into the source’s -structure, validating the rule recursively in nested source bodies.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol ASTRule : Rule
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Reporter - -
    -
    -
    -
    -
    -
    -

    An interface for reporting violations as strings.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol Reporter : CustomStringConvertible
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Rule - -
    -
    -
    -
    -
    -
    -

    An executable value that can identify issues (violations) in Swift source code.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol Rule
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - OptInRule - -
    -
    -
    -
    -
    -
    -

    A rule that is not enabled by default. Rules conforming to this need to be explicitly enabled by users.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol OptInRule : Rule
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - AutomaticTestableRule - -
    -
    -
    -
    -
    -
    -

    A rule that has unit tests automatically generated using Sourcery.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol AutomaticTestableRule : Rule
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A rule that is user-configurable.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol ConfigurationProviderRule : Rule
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - CorrectableRule - -
    -
    -
    -
    -
    -
    -

    A rule that can correct violations.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol CorrectableRule : Rule
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A correctable rule that can apply its corrections by replacing the content of ranges in the offending file with -updated content.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol SubstitutionCorrectableRule : CorrectableRule
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A SubstitutionCorrectableRule that is also an ASTRule.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol SubstitutionCorrectableASTRule : ASTRule, SubstitutionCorrectableRule
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - SourceKitFreeRule - -
    -
    -
    -
    -
    -
    -

    A rule that does not need SourceKit to operate and can still operate even after SourceKit has crashed.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol SourceKitFreeRule : Rule
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - AnalyzerRule - -
    -
    -
    -
    -
    -
    -

    A rule that can operate on the post-typechecked AST using compiler arguments. Performs rules that are more like -static analysis than syntactic checks.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol AnalyzerRule : OptInRule
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Collecting rules

-

-
-
- -
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/ASTRule.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/ASTRule.html deleted file mode 100644 index b3a2a7c35..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/ASTRule.html +++ /dev/null @@ -1,614 +0,0 @@ - - - - ASTRule Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

ASTRule

-
-
- -
public protocol ASTRule : Rule
- -
-
-

A rule that leverages the Swift source’s pre-typechecked Abstract Syntax Tree to recurse into the source’s -structure, validating the rule recursively in nested source bodies.

- - -
-
- -
-
-
-
    -
  • -
    - - - - KindType - -
    -
    -
    -
    -
    -
    -

    The kind of token being recursed over.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    associatedtype KindType : RawRepresentable
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Executes the rule on a file and a subset of its AST structure, returnng any violations to the rule’s -expectations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func validate(file: SwiftLintFile, kind: KindType, dictionary: SourceKittenDictionary) -> [StyleViolation]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to execute the rule.

    -
    -
    - - kind - - -
    -

    The kind of token being recursed over.

    -
    -
    - - dictionary - - -
    -

    The dicttionary for an AST subset to validate.

    -
    -
    -
    -
    -

    Return Value

    -

    All style violations to the rule’s expectations.

    -
    - -
    -
    -
  • -
  • -
    - - - - kind(from:) - -
    -
    -
    -
    -
    -
    -

    Get the kind from the specified dictionary.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func kind(from dictionary: SourceKittenDictionary) -> KindType?
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - dictionary - - -
    -

    The SourceKittenDictionary representing the source structure from which to extract the - kind.

    -
    -
    -
    -
    -

    Return Value

    -

    The kind from the specified dictionary, if one was found.

    -
    - -
    -
    -
  • -
  • -
    - - - - validate(file:) - - - Extension method - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func validate(file: SwiftLintFile) -> [StyleViolation]
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - validate(file:dictionary:) - - - Extension method - -
    -
    -
    -
    -
    -
    -

    Executes the rule on a file and a subset of its AST structure, returnng any violations to the rule’s -expectations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func validate(file: SwiftLintFile, dictionary: SourceKittenDictionary) -> [StyleViolation]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to execute the rule.

    -
    -
    - - dictionary - - -
    -

    The dicttionary for an AST subset to validate.

    -
    -
    -
    -
    -

    Return Value

    -

    All style violations to the rule’s expectations.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/AnalyzerRule.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/AnalyzerRule.html deleted file mode 100644 index fff10d9ac..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/AnalyzerRule.html +++ /dev/null @@ -1,383 +0,0 @@ - - - - AnalyzerRule Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

AnalyzerRule

-
-
- -
public protocol AnalyzerRule : OptInRule
- -
-
-

A rule that can operate on the post-typechecked AST using compiler arguments. Performs rules that are more like -static analysis than syntactic checks.

- - -
-
- -
-
-
- -
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/CollectingCorrectableRule.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/CollectingCorrectableRule.html deleted file mode 100644 index 5bfe187d7..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/CollectingCorrectableRule.html +++ /dev/null @@ -1,621 +0,0 @@ - - - - CollectingCorrectableRule Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

CollectingCorrectableRule

-
-
- -
public protocol CollectingCorrectableRule : CollectingRule, CorrectableRule
- -
-
-

A CollectingRule that is also a CorrectableRule.

- - -
-
- -
-
-
-
    -
  • -
    - - - - correct(file:collectedInfo:compilerArguments:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Attempts to correct the violations to this rule in the specified file after collecting file info for all files -and returns all corrections that were applied.

    -
    -

    Note

    -

    This function is called by the linter and is always implemented in extensions.

    - -
    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func correct(file: SwiftLintFile, collectedInfo: [SwiftLintFile: FileInfo],
    -             compilerArguments: [String]) -> [Correction]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to execute the rule.

    -
    -
    - - collectedInfo - - -
    -

    All collected info.

    -
    -
    - - compilerArguments - - -
    -

    The compiler arguments needed to compile this file.

    -
    -
    -
    -
    -

    Return Value

    -

    All corrections that were applied.

    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Attempts to correct the violations to this rule in the specified file after collecting file info for all files -and returns all corrections that were applied.

    -
    -

    Note

    -

    This function is called by the linter and is always implemented in extensions.

    - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func correct(file: SwiftLintFile, collectedInfo: [SwiftLintFile : FileInfo]) -> [Correction]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to execute the rule.

    -
    -
    - - collectedInfo - - -
    -

    All collected info.

    -
    -
    -
    -
    -

    Return Value

    -

    All corrections that were applied.

    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Collecting rules

-

-
-
- -
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/CollectingRule.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/CollectingRule.html deleted file mode 100644 index f2e1607a1..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/CollectingRule.html +++ /dev/null @@ -1,798 +0,0 @@ - - - - CollectingRule Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

CollectingRule

-
-
- -
public protocol CollectingRule : AnyCollectingRule
- -
-
-

A rule that requires knowledge of all other files being linted.

- - -
-
- -
-
-
-
    -
  • -
    - - - - FileInfo - -
    -
    -
    -
    -
    -
    -

    The kind of information to collect for each file being linted for this rule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    associatedtype FileInfo
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - collectInfo(for:compilerArguments:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Collects information for the specified file, to be analyzed by a CollectedLinter.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func collectInfo(for file: SwiftLintFile, compilerArguments: [String]) -> FileInfo
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to collect info.

    -
    -
    - - compilerArguments - - -
    -

    The compiler arguments needed to compile this file.

    -
    -
    -
    -
    -

    Return Value

    -

    The collected file information.

    -
    - -
    -
    -
  • -
  • -
    - - - - collectInfo(for:) - -
    -
    -
    -
    -
    -
    -

    Collects information for the specified file, to be analyzed by a CollectedLinter.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func collectInfo(for file: SwiftLintFile) -> FileInfo
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - file - - -
    -

    The file for which to collect info.

    -
    -
    -
    -
    -

    Return Value

    -

    The collected file information.

    -
    - -
    -
    -
  • -
  • -
    - - - - validate(file:collectedInfo:compilerArguments:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Executes the rule on a file after collecting file info for all files and returns any violations to the rule’s -expectations.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func validate(file: SwiftLintFile, collectedInfo: [SwiftLintFile: FileInfo],
    -              compilerArguments: [String]) -> [StyleViolation]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to execute the rule.

    -
    -
    - - collectedInfo - - -
    -

    All collected info for all files.

    -
    -
    - - compilerArguments - - -
    -

    The compiler arguments needed to compile this file.

    -
    -
    -
    -
    -

    Return Value

    -

    All style violations to the rule’s expectations.

    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Executes the rule on a file after collecting file info for all files and returns any violations to the rule’s -expectations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func validate(file: SwiftLintFile, collectedInfo: [SwiftLintFile : FileInfo]) -> [StyleViolation]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to execute the rule.

    -
    -
    - - collectedInfo - - -
    -

    All collected info for all files.

    -
    -
    -
    -
    -

    Return Value

    -

    All style violations to the rule’s expectations.

    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Collecting rules

-

-
-
- -
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/ConfigurationProviderRule.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/ConfigurationProviderRule.html deleted file mode 100644 index 159e83992..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/ConfigurationProviderRule.html +++ /dev/null @@ -1,519 +0,0 @@ - - - - ConfigurationProviderRule Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

ConfigurationProviderRule

-
-
- -
public protocol ConfigurationProviderRule : Rule
- -
-
-

A rule that is user-configurable.

- - -
-
- -
-
-
- -
-
-
- - -
- -

Collecting rules

-

-
-
-
    -
  • -
    - - - - init(configuration:) - - - Extension method - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    init(configuration: Any) throws
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isEqualTo(_:) - - - Extension method - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func isEqualTo(_ rule: Rule) -> Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - configurationDescription - - - Extension method - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    var configurationDescription: String { get }
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/CorrectableRule.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/CorrectableRule.html deleted file mode 100644 index 8b415f73c..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/CorrectableRule.html +++ /dev/null @@ -1,565 +0,0 @@ - - - - CorrectableRule Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

CorrectableRule

-
-
- -
public protocol CorrectableRule : Rule
- -
-
-

A rule that can correct violations.

- - -
-
- -
-
-
-
    -
  • -
    - - - - correct(file:compilerArguments:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Attempts to correct the violations to this rule in the specified file.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func correct(file: SwiftLintFile, compilerArguments: [String]) -> [Correction]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to correct violations.

    -
    -
    - - compilerArguments - - -
    -

    The compiler arguments needed to compile this file.

    -
    -
    -
    -
    -

    Return Value

    -

    All corrections that were applied.

    -
    - -
    -
    -
  • -
  • -
    - - - - correct(file:) - -
    -
    -
    -
    -
    -
    -

    Attempts to correct the violations to this rule in the specified file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func correct(file: SwiftLintFile) -> [Correction]
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - file - - -
    -

    The file for which to correct violations.

    -
    -
    -
    -
    -

    Return Value

    -

    All corrections that were applied.

    -
    - -
    -
    -
  • -
  • -
    - - - - correct(file:using:compilerArguments:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Attempts to correct the violations to this rule in the specified file after collecting file info for all files -and returns all corrections that were applied.

    -
    -

    Note

    -

    This function is called by the linter and is always implemented in extensions.

    - -
    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func correct(file: SwiftLintFile, using storage: RuleStorage, compilerArguments: [String]) -> [Correction]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to execute the rule.

    -
    -
    - - storage - - -
    -

    The storage object containing all collected info.

    -
    -
    - - compilerArguments - - -
    -

    The compiler arguments needed to compile this file.

    -
    -
    -
    -
    -

    Return Value

    -

    All corrections that were applied.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/LintableFileManager.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/LintableFileManager.html deleted file mode 100644 index 32559cc9a..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/LintableFileManager.html +++ /dev/null @@ -1,471 +0,0 @@ - - - - LintableFileManager Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

LintableFileManager

-
-
- -
public protocol LintableFileManager
- -
-
-

An interface for enumerating files that can be linted by SwiftLint.

- - -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Returns all files that can be linted in the specified path. If the path is relative, it will be appended to the -specified root path, or currentt working directory if no root directory is specified.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func filesToLint(inPath path: String, rootDirectory: String?) -> [String]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - path - - -
    -

    The path in which lintable files should be found.

    -
    -
    - - rootDirectory - - -
    -

    The parent directory for the specified path. If none is provided, the current working - directory will be used.

    -
    -
    -
    -
    -

    Return Value

    -

    Files to lint.

    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Returns the date when the file at the specified path was last modified. Returns nil if the file cannot be -found or its last modification date cannot be determined.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func modificationDate(forFileAtPath path: String) -> Date?
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - path - - -
    -

    The file whose modification date should be determined.

    -
    -
    -
    -
    -

    Return Value

    -

    A date, if one was determined.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/Reporter.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/Reporter.html deleted file mode 100644 index b6ae76418..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/Reporter.html +++ /dev/null @@ -1,464 +0,0 @@ - - - - Reporter Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Reporter

-
-
- -
public protocol Reporter : CustomStringConvertible
- -
-
-

An interface for reporting violations as strings.

- - -
-
- -
-
-
-
    -
  • -
    - - - - identifier - -
    -
    -
    -
    -
    -
    -

    The unique identifier for this reporter.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    static var identifier: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isRealtime - -
    -
    -
    -
    -
    -
    -

    Whether or not this reporter can output incrementally as violations are found or if all violations must be -collected before generating the report.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    static var isRealtime: Bool { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - generateReport(_:) - -
    -
    -
    -
    -
    -
    -

    Return a string with the report for the specified violations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    static func generateReport(_ violations: [StyleViolation]) -> String
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - violations - - -
    -

    The violations to report.

    -
    -
    -
    -
    -

    Return Value

    -

    The report.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/Rule.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/Rule.html deleted file mode 100644 index d9dabf974..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/Rule.html +++ /dev/null @@ -1,854 +0,0 @@ - - - - Rule Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Rule

-
-
- -
public protocol Rule
- -
-
-

An executable value that can identify issues (violations) in Swift source code.

- - -
-
- -
-
-
-
    -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    -

    A verbose description of many of this rule’s properties.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    static var description: RuleDescription { get }
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A description of how this rule has been configured to run.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    var configurationDescription: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init() - -
    -
    -
    -
    -
    -
    -

    A default initializer for rules. All rules need to be trivially initializable.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    init()
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(configuration:) - -
    -
    -
    -
    -
    -
    -

    Creates a rule by applying its configuration.

    -
    -

    Throws

    -

    Throws if the configuration didn’t match the expected format.

    - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    init(configuration: Any) throws
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - configuration - - -
    -

    The untyped configuration value to apply.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - validate(file:compilerArguments:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Executes the rule on a file and returns any violations to the rule’s expectations.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func validate(file: SwiftLintFile, compilerArguments: [String]) -> [StyleViolation]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to execute the rule.

    -
    -
    - - compilerArguments - - -
    -

    The compiler arguments needed to compile this file.

    -
    -
    -
    -
    -

    Return Value

    -

    All style violations to the rule’s expectations.

    -
    - -
    -
    -
  • -
  • -
    - - - - validate(file:) - -
    -
    -
    -
    -
    -
    -

    Executes the rule on a file and returns any violations to the rule’s expectations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func validate(file: SwiftLintFile) -> [StyleViolation]
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - file - - -
    -

    The file for which to execute the rule.

    -
    -
    -
    -
    -

    Return Value

    -

    All style violations to the rule’s expectations.

    -
    - -
    -
    -
  • -
  • -
    - - - - isEqualTo(_:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Whether or not the specified rule is equivalent to the current rule.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func isEqualTo(_ rule: Rule) -> Bool
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - rule - - -
    -

    The rule value to compare against.

    -
    -
    -
    -
    -

    Return Value

    -

    Whether or not the specified rule is equivalent to the current rule.

    -
    - -
    -
    -
  • -
  • -
    - - - - collectInfo(for:into:compilerArguments:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Collects information for the specified file in a storage object, to be analyzed by a CollectedLinter.

    -
    -

    Note

    -

    This function is called by the linter and is always implemented in extensions.

    - -
    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func collectInfo(for file: SwiftLintFile, into storage: RuleStorage, compilerArguments: [String])
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to collect info.

    -
    -
    - - storage - - -
    -

    The storage object where collected info should be saved.

    -
    -
    - - compilerArguments - - -
    -

    The compiler arguments needed to compile this file.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - validate(file:using:compilerArguments:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Executes the rule on a file after collecting file info for all files and returns any violations to the rule’s -expectations.

    -
    -

    Note

    -

    This function is called by the linter and is always implemented in extensions.

    - -
    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func validate(file: SwiftLintFile, using storage: RuleStorage, compilerArguments: [String]) -> [StyleViolation]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to execute the rule.

    -
    -
    - - storage - - -
    -

    The storage object containing all collected info.

    -
    -
    - - compilerArguments - - -
    -

    The compiler arguments needed to compile this file.

    -
    -
    -
    -
    -

    Return Value

    -

    All style violations to the rule’s expectations.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/RuleConfiguration.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/RuleConfiguration.html deleted file mode 100644 index b224901bd..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/RuleConfiguration.html +++ /dev/null @@ -1,487 +0,0 @@ - - - - RuleConfiguration Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleConfiguration

-
-
- -
public protocol RuleConfiguration
- -
-
-

A configuration value for a rule to allow users to modify its behavior.

- - -
-
- -
-
-
-
    -
  • -
    - - - - consoleDescription - -
    -
    -
    -
    -
    -
    -

    A human-readable description for this configuration and its applied values.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    var consoleDescription: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - apply(configuration:) - -
    -
    -
    -
    -
    -
    -

    Apply an untyped configuration to the current value.

    -
    -

    Throws

    -

    Throws if the configuration is not in the expected format.

    - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    mutating func apply(configuration: Any) throws
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - configuration - - -
    -

    The untyped configuration value to apply.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - isEqualTo(_:) - -
    -
    -
    -
    -
    -
    -

    Whether the specified configuration is equivalent to the current value.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func isEqualTo(_ ruleConfiguration: RuleConfiguration) -> Bool
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - ruleConfiguration - - -
    -

    The rule configuration to compare against.

    -
    -
    -
    -
    -

    Return Value

    -

    Whether the specified configuration is equivalent to the current value.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/SubstitutionCorrectableASTRule.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/SubstitutionCorrectableASTRule.html deleted file mode 100644 index 4427f81c6..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/SubstitutionCorrectableASTRule.html +++ /dev/null @@ -1,460 +0,0 @@ - - - - SubstitutionCorrectableASTRule Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

SubstitutionCorrectableASTRule

-
-
- -
public protocol SubstitutionCorrectableASTRule : ASTRule, SubstitutionCorrectableRule
- -
-
-

A SubstitutionCorrectableRule that is also an ASTRule.

- - -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Returns the NSString-based NSRanges to be replaced in the specified file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func violationRanges(in file: SwiftLintFile, kind: KindType,
    -                     dictionary: SourceKittenDictionary) -> [NSRange]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - file - - -
    -

    The file in which to find ranges of violations for this rule.

    -
    -
    - - kind - - -
    -

    The kind of token being recursed over.

    -
    -
    - - dictionary - - -
    -

    The dicttionary for an AST subset to validate.

    -
    -
    -
    -
    -

    Return Value

    -

    The NSString-based NSRanges to be replaced in the specified file.

    -
    - -
    -
    -
  • -
  • -
    - - - - violationRanges(in:) - - - Extension method - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func violationRanges(in file: SwiftLintFile) -> [NSRange]
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/SubstitutionCorrectableRule.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/SubstitutionCorrectableRule.html deleted file mode 100644 index c6b33830d..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Protocols/SubstitutionCorrectableRule.html +++ /dev/null @@ -1,501 +0,0 @@ - - - - SubstitutionCorrectableRule Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

SubstitutionCorrectableRule

-
-
- -
public protocol SubstitutionCorrectableRule : CorrectableRule
- -
-
-

A correctable rule that can apply its corrections by replacing the content of ranges in the offending file with -updated content.

- - -
-
- -
-
-
-
    -
  • -
    - - - - violationRanges(in:) - -
    -
    -
    -
    -
    -
    -

    Returns the NSString-based NSRanges to be replaced in the specified file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func violationRanges(in file: SwiftLintFile) -> [NSRange]
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - file - - -
    -

    The file in which to find ranges of violations for this rule.

    -
    -
    -
    -
    -

    Return Value

    -

    The NSString-based NSRanges to be replaced in the specified file.

    -
    - -
    -
    -
  • -
  • -
    - - - - substitution(for:in:) - -
    -
    -
    -
    -
    -
    -

    Returns the substitution to apply for the given range.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func substitution(for violationRange: NSRange, in file: SwiftLintFile) -> (NSRange, String)?
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - violationRange - - -
    -

    The NSString-based NSRange of the violation that should be replaced.

    -
    -
    - - file - - -
    -

    The file in which the violation should be replaced.

    -
    -
    -
    -
    -

    Return Value

    -

    The range of the correction and its contents, if one could be computed.

    -
    - -
    -
    -
  • -
  • -
    - - - - correct(file:) - - - Extension method - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func correct(file: SwiftLintFile) -> [Correction]
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Reporters.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Reporters.html deleted file mode 100644 index df2e6daf1..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Reporters.html +++ /dev/null @@ -1,588 +0,0 @@ - - - - Reporters Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Reporters

- -
-
- -
-
-
- -
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Rules.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Rules.html deleted file mode 100644 index b2a976075..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Rules.html +++ /dev/null @@ -1,348 +0,0 @@ - - - - Rules Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Rules

- -
-
- -
-
-
- -
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs.html deleted file mode 100644 index 43545a337..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs.html +++ /dev/null @@ -1,1075 +0,0 @@ - - - - Structures Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Structures

-

The following structures are available globally.

- -
-
- -
-
-
-
    -
  • -
    - - - - RuleListDocumentation - -
    -
    -
    -
    -
    -
    -

    User-facing documentation for a SwiftLint RuleList.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct RuleListDocumentation
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Configuration - -
    -
    -
    -
    -
    -
    -

    The configuration struct for SwiftLint. User-defined in the .swiftlint.yml file, drives the behavior of SwiftLint.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Configuration
    -
    extension Configuration: Hashable
    -
    extension Configuration: CustomStringConvertible
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A collection of keys and values as parsed out of SourceKit, with many conveniences for accessing SwiftLint-specific -values.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct SourceKittenDictionary
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Command - -
    -
    -
    -
    -
    -
    -

    A SwiftLint-interpretable command to modify SwiftLint’s behavior embedded as comments in source code.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Command : Equatable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Correction - -
    -
    -
    -
    -
    -
    -

    A value describing a SwiftLint violation that was corrected.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Correction : Equatable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Example - -
    -
    -
    -
    -
    -
    -

    Captures code and context information for an example of a triggering or -non-triggering style

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Example
    -
    extension Example: Hashable
    -
    extension Example: Comparable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Linter - -
    -
    -
    -
    -
    -
    -

    Represents a file that can be linted for style violations and corrections after being collected.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Linter
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - CollectedLinter - -
    -
    -
    -
    -
    -
    -

    Represents a file that can compute style violations and corrections for a list of rules.

    - -

    A CollectedLinter is only created after a Linter has run its collection steps in Linter.collect(into:).

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct CollectedLinter
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Location - -
    -
    -
    -
    -
    -
    -

    The placement of a segment of Swift in a collection of source files.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Location : CustomStringConvertible, Comparable, Codable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Region - -
    -
    -
    -
    -
    -
    -

    A contiguous region of Swift source code.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Region : Equatable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - RuleDescription - -
    -
    -
    -
    -
    -
    -

    A detailed description for a SwiftLint rule. Used for both documentation and testing purposes.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct RuleDescription : Equatable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - RuleList - -
    -
    -
    -
    -
    -
    -

    A list of available SwiftLint rules.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct RuleList
    -
    extension RuleList: Equatable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - RuleParameter - -
    -
    -
    -
    -
    -
    -

    A configuration parameter for rules.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct RuleParameter<T> : Equatable where T : Equatable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - StyleViolation - -
    -
    -
    -
    -
    -
    -

    A value describing an instance of Swift source code that is considered invalid by a SwiftLint rule.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct StyleViolation : CustomStringConvertible, Equatable, Codable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - SwiftLintSyntaxMap - -
    -
    -
    -
    -
    -
    -

    Represents a Swift file’s syntax information.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct SwiftLintSyntaxMap
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - SwiftLintSyntaxToken - -
    -
    -
    -
    -
    -
    -

    A SwiftLint-aware Swift syntax token.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct SwiftLintSyntaxToken
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - SwiftVersion - -
    -
    -
    -
    -
    -
    -

    A value describing the version of the Swift compiler.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct SwiftVersion : RawRepresentable, Codable, Comparable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Version - -
    -
    -
    -
    -
    -
    -

    A type describing the SwiftLint version.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Version
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

YamlParser

-

-
-
- -
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/CSVReporter.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/CSVReporter.html deleted file mode 100644 index 031803a50..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/CSVReporter.html +++ /dev/null @@ -1,475 +0,0 @@ - - - - CSVReporter Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

CSVReporter

-
-
- -
public struct CSVReporter : Reporter
- -
-
-

Reports violations as a newline-separated string of comma-separated values (CSV).

- - -
-
- -
-
-
-
- - -
- -

Reporter Conformance

-

-
-
-
    -
  • -
    - - - - identifier - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let identifier: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isRealtime - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let isRealtime: Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - generateReport(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func generateReport(_ violations: [StyleViolation]) -> String
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/CheckstyleReporter.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/CheckstyleReporter.html deleted file mode 100644 index 6af7528d9..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/CheckstyleReporter.html +++ /dev/null @@ -1,476 +0,0 @@ - - - - CheckstyleReporter Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

CheckstyleReporter

-
-
- -
public struct CheckstyleReporter : Reporter
- -
-
-

Reports violations as XML conforming to the Checkstyle specification, as defined here: -https://www.jetbrains.com/help/teamcity/xml-report-processing.html

- - -
-
- -
-
-
-
- - -
- -

Reporter Conformance

-

-
-
-
    -
  • -
    - - - - identifier - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let identifier: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isRealtime - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let isRealtime: Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - generateReport(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func generateReport(_ violations: [StyleViolation]) -> String
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/CodeClimateReporter.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/CodeClimateReporter.html deleted file mode 100644 index a99a58923..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/CodeClimateReporter.html +++ /dev/null @@ -1,475 +0,0 @@ - - - - CodeClimateReporter Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

CodeClimateReporter

-
-
- -
public struct CodeClimateReporter : Reporter
- -
-
-

Reports violations as a JSON array in Code Climate format.

- - -
-
- -
-
-
-
- - -
- -

Reporter Conformance

-

-
-
-
    -
  • -
    - - - - identifier - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let identifier: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isRealtime - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let isRealtime: Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - generateReport(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func generateReport(_ violations: [StyleViolation]) -> String
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/CollectedLinter.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/CollectedLinter.html deleted file mode 100644 index 47a813b4b..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/CollectedLinter.html +++ /dev/null @@ -1,603 +0,0 @@ - - - - CollectedLinter Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

CollectedLinter

-
-
- -
public struct CollectedLinter
- -
-
-

Represents a file that can compute style violations and corrections for a list of rules.

- -

A CollectedLinter is only created after a Linter has run its collection steps in Linter.collect(into:).

- - -
-
- -
-
-
-
    -
  • -
    - - - - file - -
    -
    -
    -
    -
    -
    -

    The file to lint with this linter.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let file: SwiftLintFile
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Computes or retrieves style violations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func styleViolations(using storage: RuleStorage) -> [StyleViolation]
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - storage - - -
    -

    The storage object containing all collected info.

    -
    -
    -
    -
    -

    Return Value

    -

    All style violations found by this linter.

    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Computes or retrieves style violations and the time spent executing each rule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func styleViolationsAndRuleTimes(using storage: RuleStorage)
    -    -> ([StyleViolation], [(id: String, time: Double)])
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - storage - - -
    -

    The storage object containing all collected info.

    -
    -
    -
    -
    -

    Return Value

    -

    All style violations found by this linter, and the time spent executing each rule.

    -
    - -
    -
    -
  • -
  • -
    - - - - correct(using:) - -
    -
    -
    -
    -
    -
    -

    Applies corrections for all rules to this file, returning performed corrections.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func correct(using storage: RuleStorage) -> [Correction]
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - storage - - -
    -

    The storage object containing all collected info.

    -
    -
    -
    -
    -

    Return Value

    -

    All corrections that were applied.

    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Formats the file associated with this linter.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func format(useTabs: Bool, indentWidth: Int)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - useTabs - - -
    -

    Should the file be formatted using tabs?

    -
    -
    - - indentWidth - - -
    -

    How many spaces should be used per indentation level.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Command.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Command.html deleted file mode 100644 index fb03d3d4a..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Command.html +++ /dev/null @@ -1,597 +0,0 @@ - - - - Command Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Command

-
-
- -
public struct Command : Equatable
- -
-
-

A SwiftLint-interpretable command to modify SwiftLint’s behavior embedded as comments in source code.

- - -
-
- -
-
-
-
    -
  • -
    - - - - Action - -
    -
    -
    -
    -
    -
    -

    The action (verb) that SwiftLint should perform when interpreting this command.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public enum Action : String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Modifier - -
    -
    -
    -
    -
    -
    -

    The modifier for a command, used to modify its scope.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public enum Modifier : String
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a command based on the specified parameters.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(action: Action, ruleIdentifiers: Set<RuleIdentifier>, line: Int = 0,
    -            character: Int? = nil, modifier: Modifier? = nil, trailingComment: String? = nil)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - action - - -
    -

    This command’s action.

    -
    -
    - - ruleIdentifiers - - -
    -

    The identifiers for the rules associated with this command.

    -
    -
    - - line - - -
    -

    The line in the source file where this command is defined.

    -
    -
    - - character - - -
    -

    The character offset within the line in the source file where this command is - defined.

    -
    -
    - - modifier - - -
    -

    This command’s modifier, if any.

    -
    -
    - - trailingComment - - -
    -

    The comment following this command’s - delimiter, if any.

    -
    -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a command based on the specified parameters.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init?(actionString: String, line: Int, character: Int)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - actionString - - -
    -

    The string in the command’s definition describing its action.

    -
    -
    - - line - - -
    -

    The line in the source file where this command is defined.

    -
    -
    - - character - - -
    -

    The character offset within the line in the source file where this command is - defined.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Command/Action.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Command/Action.html deleted file mode 100644 index dfe1684ae..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Command/Action.html +++ /dev/null @@ -1,410 +0,0 @@ - - - - Action Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Action

-
-
- -
public enum Action : String
- -
-
-

The action (verb) that SwiftLint should perform when interpreting this command.

- - -
-
- -
-
-
-
    -
  • -
    - - - - enable - -
    -
    -
    -
    -
    -
    -

    The rule(s) associated with this command should be enabled by the SwiftLint engine.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case enable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - disable - -
    -
    -
    -
    -
    -
    -

    The rule(s) associated with this command should be disabled by the SwiftLint engine.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case disable
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Command/Modifier.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Command/Modifier.html deleted file mode 100644 index b93076a2a..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Command/Modifier.html +++ /dev/null @@ -1,440 +0,0 @@ - - - - Modifier Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Modifier

-
-
- -
public enum Modifier : String
- -
-
-

The modifier for a command, used to modify its scope.

- - -
-
- -
-
-
-
    -
  • -
    - - - - previous - -
    -
    -
    -
    -
    -
    -

    The command should only apply to the line preceding its definition.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case previous
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - this - -
    -
    -
    -
    -
    -
    -

    The command should only apply to the same line as its definition.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case this
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - next - -
    -
    -
    -
    -
    -
    -

    The command should only apply to the line following its definition.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case next
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Configuration.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Configuration.html deleted file mode 100644 index 2fd869824..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Configuration.html +++ /dev/null @@ -1,1507 +0,0 @@ - - - - Configuration Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Configuration

-
-
- -
public struct Configuration
-
extension Configuration: Hashable
-
extension Configuration: CustomStringConvertible
- -
-
-

The configuration struct for SwiftLint. User-defined in the .swiftlint.yml file, drives the behavior of SwiftLint.

- - -
-
- -
-
-
-
- - -
- -

Properties: Static

-

-
-
-
    -
  • -
    - - - - default - -
    -
    -
    -
    -
    -
    -

    The default Configuration resulting from an empty configuration file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static var `default`: Configuration { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - defaultFileName - -
    -
    -
    -
    -
    -
    -

    The default file name to look for user-defined configurations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let defaultFileName: String
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Public Instance

-

-
-
-
    -
  • -
    - - - - includedPaths - -
    -
    -
    -
    -
    -
    -

    The paths that should be included when linting

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var includedPaths: [String] { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - excludedPaths - -
    -
    -
    -
    -
    -
    -

    The paths that should be excluded when linting

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var excludedPaths: [String] { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - indentation - -
    -
    -
    -
    -
    -
    -

    The style to use when indenting Swift source code.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let indentation: IndentationStyle
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - warningThreshold - -
    -
    -
    -
    -
    -
    -

    The threshold for the number of warnings to tolerate before treating the lint as having failed.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let warningThreshold: Int?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - reporter - -
    -
    -
    -
    -
    -
    -

    The identifier for the Reporter to use to report style violations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let reporter: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - cachePath - -
    -
    -
    -
    -
    -
    -

    The location of the persisted cache to use with this configuration.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let cachePath: String?
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Allow or disallow SwiftLint to exit successfully when passed only ignored or unlintable files.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let allowZeroLintableFiles: Bool
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    This value is true iff the --config parameter was used to specify (a) configuration file(s) -In particular, this means that the value is also true if the --config parameter -was used to explicitly specify the default .swiftlint.yml as the configuration file

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var basedOnCustomConfigurationFiles: Bool { get }
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Public Computed

-

-
-
-
    -
  • -
    - - - - rules - -
    -
    -
    -
    -
    -
    -

    All rules enabled in this configuration

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var rules: [Rule] { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - rootDirectory - -
    -
    -
    -
    -
    -
    -

    The root directory is the directory that included & excluded paths relate to. -By default, the root directory is the current working directory, -but during some merging algorithms it may be used differently. -The rootDirectory also serves as the stopping point when searching for nested configs along the file hierarchy.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var rootDirectory: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - rulesMode - -
    -
    -
    -
    -
    -
    -

    The rules mode used for this configuration.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var rulesMode: RulesMode { get }
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Public

-

-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Creates a Configuration with convenience parameters.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(
    -    configurationFiles: [String], // No default value here to avoid ambiguous Configuration() initializer
    -    enableAllRules: Bool = false,
    -    cachePath: String? = nil,
    -    ignoreParentAndChildConfigs: Bool = false,
    -    mockedNetworkResults: [String: String] = [:],
    -    useDefaultConfigOnFailure: Bool? = nil
    -)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - configurationFiles - - -
    -

    The path on disk to one or multiple configuration files. If this array - is empty, the default .swiftlint.yml file will be used.

    -
    -
    - - enableAllRules - - -
    -

    Enable all available rules.

    -
    -
    - - cachePath - - -
    -

    The location of the persisted cache to use whith this configuration.

    -
    -
    - - ignoreParentAndChildConfigs - - -
    -

    If true, child and parent config references will be ignored.

    -
    -
    - - mockedNetworkResults - - -
    -

    For testing purposes only. Instead of loading the specified urls, - the mocked value will be used. Example: [“http://mock.com”: “content”]

    -
    -
    - - useDefaultConfigOnFailure - - -
    -

    If this value is specified, it will override the normal behavior. - This is only intended for tests checking whether invalid configs fail.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Caching Configurations By Identifier (In-Memory)

-

-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Returns a copy of the current Configuration with its computedCacheDescription property set to the value of -cacheDescription, which is expensive to compute.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func withPrecomputedCacheDescription() -> Configuration
    - -
    -
    -
    -

    Return Value

    -

    A new Configuration value.

    -
    - -
    -
    -
  • -
  • -
    - - - - IndentationStyle - -
    -
    -
    -
    -
    -
    -

    The style of indentation used in a Swift project.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    enum IndentationStyle : Hashable
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Lintable Paths

-

-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Returns the files that can be linted by SwiftLint in the specified parent path.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func lintableFiles(inPath path: String, forceExclude: Bool,
    -                          excludeByPrefix: Bool = false) -> [SwiftLintFile]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - path - - -
    -

    The parent path in which to search for lintable files. Can be a directory or a - file.

    -
    -
    - - forceExclude - - -
    -

    Whether or not excludes defined in this configuration should be applied even if - path is an exact match.

    -
    -
    - - excludeByPrefix - - -
    -

    Whether or not uses excluding by prefix algorithm.

    -
    -
    -
    -
    -

    Return Value

    -

    Files to lint.

    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Returns an array of file paths after removing the excluded paths as defined by this configuration.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func filterExcludedPaths(
    -    fileManager: LintableFileManager = FileManager.default,
    -    in paths: [String]...
    -) -> [String]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - fileManager - - -
    -

    The lintable file manager to use to expand the excluded paths into all matching paths.

    -
    -
    - - paths - - -
    -

    The input paths to filter.

    -
    -
    -
    -
    -

    Return Value

    -

    The input paths after removing the excluded paths.

    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Returns the file paths that are excluded by this configuration using filtering by absolute path prefix.

    - -

    For cases when excluded directories contain many lintable files (e. g. Pods) it works faster than default -algorithm filterExcludedPaths.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func filterExcludedPathsByPrefix(in paths: [String]...) -> [String]
    - -
    -
    -
    -

    Return Value

    -

    The input paths after removing the excluded paths.

    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Accessing File Configurations

-

-
-
-
    -
  • -
    - - - - configuration(for:) - -
    -
    -
    -
    -
    -
    -

    Returns a new configuration that applies to the specified file by merging the current configuration with any -nested configurations in the directory inheritance graph present until the level of the specified file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func configuration(for file: SwiftLintFile) -> Configuration
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - file - - -
    -

    The file for which to obtain a configuration value.

    -
    -
    -
    -
    -

    Return Value

    -

    A new configuration.

    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Initializers

-

-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Creates a Configuration value based on the specified parameters.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(
    -    dict: [String: Any],
    -    ruleList: RuleList = primaryRuleList,
    -    enableAllRules: Bool = false,
    -    cachePath: String? = nil
    -) throws
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - - - - - -
    - - dict - - -
    -

    The untyped dictionary to serve as the input for this typed configuration. - Typically generated from a YAML-formatted file.

    -
    -
    - - ruleList - - -
    -

    The list of rules to be available to this configuration.

    -
    -
    - - enableAllRules - - -
    -

    Whether all rules from ruleList should be enabled, regardless of the - settings in dict.

    -
    -
    - - cachePath - - -
    -

    The location of the persisted cache on disk.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - RulesMode - -
    -
    -
    -
    -
    -
    -

    Represents how a Configuration object can be configured with regards to rules.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    enum RulesMode
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Hashable

-

-
-
-
    -
  • -
    - - - - hash(into:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func hash(into hasher: inout Hasher)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func == (lhs: Configuration, rhs: Configuration) -> Bool
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

CustomStringConvertible

-

-
-
-
    -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Configuration/IndentationStyle.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Configuration/IndentationStyle.html deleted file mode 100644 index 0f805acb4..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Configuration/IndentationStyle.html +++ /dev/null @@ -1,440 +0,0 @@ - - - - IndentationStyle Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

IndentationStyle

-
-
- -
enum IndentationStyle : Hashable
- -
-
-

The style of indentation used in a Swift project.

- - -
-
- -
-
-
-
    -
  • -
    - - - - tabs - -
    -
    -
    -
    -
    -
    -

    Swift source code should be indented using tabs.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case tabs
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - spaces(count:) - -
    -
    -
    -
    -
    -
    -

    Swift source code should be indented using spaces with count spaces per indentation level.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case spaces(count: Int)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - default - -
    -
    -
    -
    -
    -
    -

    The default indentation style if none is explicitly provided.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static var `default`: Configuration.IndentationStyle
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Configuration/RulesMode.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Configuration/RulesMode.html deleted file mode 100644 index 865748605..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Configuration/RulesMode.html +++ /dev/null @@ -1,442 +0,0 @@ - - - - RulesMode Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

RulesMode

-
-
- -
enum RulesMode
- -
-
-

Represents how a Configuration object can be configured with regards to rules.

- - -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    The default rules mode, which will enable all rules that aren’t defined as being opt-in -(conforming to the OptInRule protocol), minus the rules listed in disabled, plus the rules lised in -optIn.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case `default`(disabled: Set<String>, optIn: Set<String>)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - only(_:) - -
    -
    -
    -
    -
    -
    -

    Only enable the rules explicitly listed.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case only(Set<String>)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - allEnabled - -
    -
    -
    -
    -
    -
    -

    Enable all available rules.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case allEnabled
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Correction.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Correction.html deleted file mode 100644 index 0886f891b..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Correction.html +++ /dev/null @@ -1,440 +0,0 @@ - - - - Correction Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Correction

-
-
- -
public struct Correction : Equatable
- -
-
-

A value describing a SwiftLint violation that was corrected.

- - -
-
- -
-
-
-
    -
  • -
    - - - - ruleDescription - -
    -
    -
    -
    -
    -
    -

    The description of the rule for which this correction was applied.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let ruleDescription: RuleDescription
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - location - -
    -
    -
    -
    -
    -
    -

    The location of the original violation that was corrected.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let location: Location
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - consoleDescription - -
    -
    -
    -
    -
    -
    -

    The console-printable description for this correction.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var consoleDescription: String { get }
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/EmojiReporter.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/EmojiReporter.html deleted file mode 100644 index f69ebf63f..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/EmojiReporter.html +++ /dev/null @@ -1,475 +0,0 @@ - - - - EmojiReporter Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

EmojiReporter

-
-
- -
public struct EmojiReporter : Reporter
- -
-
-

Reports violations in the format that’s both fun and easy to read.

- - -
-
- -
-
-
-
- - -
- -

Reporter Conformance

-

-
-
-
    -
  • -
    - - - - identifier - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let identifier: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isRealtime - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let isRealtime: Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - generateReport(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func generateReport(_ violations: [StyleViolation]) -> String
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Example.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Example.html deleted file mode 100644 index 6aab61a00..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Example.html +++ /dev/null @@ -1,854 +0,0 @@ - - - - Example Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Example

-
-
- -
public struct Example
-
extension Example: Hashable
-
extension Example: Comparable
- -
-
-

Captures code and context information for an example of a triggering or -non-triggering style

- - -
-
- -
-
-
-
    -
  • -
    - - - - code - -
    -
    -
    -
    -
    -
    -

    The contents of the example

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var code: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - configuration - -
    -
    -
    -
    -
    -
    -

    The untyped configuration to apply to the rule, if deviating from the default configuration. -The structure should match what is expected as a configuration value for the rule being tested.

    - -

    For example, if the following YAML would be used to configure the rule:

    -
    severity: warning
    -
    - -

    Then the equivalent configuration value would be ["severity": "warning"].

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var configuration: Any? { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - testMultiByteOffsets - -
    -
    -
    -
    -
    -
    -

    Whether the example should be tested by prepending multibyte grapheme clusters

    -
    -

    See also

    - addEmoji(_:) - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var testMultiByteOffsets: Bool { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - testOnLinux - -
    -
    -
    -
    -
    -
    -

    Whether the example should be tested on Linux

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var testOnLinux: Bool { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - file - -
    -
    -
    -
    -
    -
    -

    The path to the file where the example was created

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var file: StaticString { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - line - -
    -
    -
    -
    -
    -
    -

    The line in the file where the example was created

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var line: UInt
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Create a new Example with the specified code, file, and line.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    init(_ code: String, configuration: Any? = nil, testMultiByteOffsets: Bool = true, testOnLinux: Bool = true,
    -     file: StaticString = #file, line: UInt = #line, excludeFromDocumentation: Bool = false)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - code - - -
    -

    The contents of the example.

    -
    -
    - - configuration - - -
    -

    The untyped configuration to apply to the rule, if deviating from the default - configuration.

    -
    -
    - - testMultibyteOffsets - - -
    -

    Whether the example should be tested by prepending multibyte grapheme clusters.

    -
    -
    - - testOnLinux - - -
    -

    Whether the example should be tested on Linux.

    -
    -
    - - file - - -
    -

    The path to the file where the example is located. - Defaults to the file where this initializer is called.

    -
    -
    - - line - - -
    -

    The line in the file where the example is located. - Defaults to the line where this initializer is called.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - with(code:) - -
    -
    -
    -
    -
    -
    -

    Returns the same example, but with the code that is passed in

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func with(code: String) -> Example
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - code - - -
    -

    the new code to use in the modified example

    -
    -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Returns a copy of the Example with all instances of the “↓” character removed.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func removingViolationMarkers() -> Example
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - focused() - -
    -
    -
    -
    -
    -
    -

    Makes the current example focused.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func focused() -> Example
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func == (lhs: Example, rhs: Example) -> Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - hash(into:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func hash(into hasher: inout Hasher)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - <(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func < (lhs: Example, rhs: Example) -> Bool
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/GitHubActionsLoggingReporter.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/GitHubActionsLoggingReporter.html deleted file mode 100644 index 8a7a84db6..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/GitHubActionsLoggingReporter.html +++ /dev/null @@ -1,475 +0,0 @@ - - - - GitHubActionsLoggingReporter Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

GitHubActionsLoggingReporter

-
-
- -
public struct GitHubActionsLoggingReporter : Reporter
- -
-
-

Reports violations in the format GitHub-hosted virtual machine for Actions can recognize as messages.

- - -
-
- -
-
-
-
- - -
- -

Reporter Conformance

-

-
-
-
    -
  • -
    - - - - identifier - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let identifier: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isRealtime - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let isRealtime: Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - generateReport(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func generateReport(_ violations: [StyleViolation]) -> String
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/GitLabJUnitReporter.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/GitLabJUnitReporter.html deleted file mode 100644 index 1ee9b4c65..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/GitLabJUnitReporter.html +++ /dev/null @@ -1,475 +0,0 @@ - - - - GitLabJUnitReporter Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

GitLabJUnitReporter

-
-
- -
public struct GitLabJUnitReporter : Reporter
- -
-
-

Reports violations as JUnit XML supported by GitLab.

- - -
-
- -
-
-
-
- - -
- -

Reporter Conformance

-

-
-
-
    -
  • -
    - - - - identifier - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let identifier: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isRealtime - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let isRealtime: Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - generateReport(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func generateReport(_ violations: [StyleViolation]) -> String
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/HTMLReporter.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/HTMLReporter.html deleted file mode 100644 index 941cd2e5e..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/HTMLReporter.html +++ /dev/null @@ -1,475 +0,0 @@ - - - - HTMLReporter Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

HTMLReporter

-
-
- -
public struct HTMLReporter : Reporter
- -
-
-

Reports violations as HTML.

- - -
-
- -
-
-
-
- - -
- -

Reporter Conformance

-

-
-
-
    -
  • -
    - - - - identifier - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let identifier: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isRealtime - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let isRealtime: Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - generateReport(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func generateReport(_ violations: [StyleViolation]) -> String
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/JSONReporter.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/JSONReporter.html deleted file mode 100644 index 89e920d99..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/JSONReporter.html +++ /dev/null @@ -1,475 +0,0 @@ - - - - JSONReporter Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

JSONReporter

-
-
- -
public struct JSONReporter : Reporter
- -
-
-

Reports violations as a JSON array.

- - -
-
- -
-
-
-
- - -
- -

Reporter Conformance

-

-
-
-
    -
  • -
    - - - - identifier - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let identifier: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isRealtime - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let isRealtime: Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - generateReport(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func generateReport(_ violations: [StyleViolation]) -> String
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/JUnitReporter.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/JUnitReporter.html deleted file mode 100644 index aeaabecfd..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/JUnitReporter.html +++ /dev/null @@ -1,475 +0,0 @@ - - - - JUnitReporter Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

JUnitReporter

-
-
- -
public struct JUnitReporter : Reporter
- -
-
-

Reports violations as JUnit XML.

- - -
-
- -
-
-
-
- - -
- -

Reporter Conformance

-

-
-
-
    -
  • -
    - - - - identifier - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let identifier: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isRealtime - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let isRealtime: Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - generateReport(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func generateReport(_ violations: [StyleViolation]) -> String
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Linter.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Linter.html deleted file mode 100644 index 21d1038dd..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Linter.html +++ /dev/null @@ -1,549 +0,0 @@ - - - - Linter Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Linter

-
-
- -
public struct Linter
- -
-
-

Represents a file that can be linted for style violations and corrections after being collected.

- - -
-
- -
-
-
-
    -
  • -
    - - - - file - -
    -
    -
    -
    -
    -
    -

    The file to lint with this linter.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let file: SwiftLintFile
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isCollecting - -
    -
    -
    -
    -
    -
    -

    Whether or not this linter will be used to collect information from several files.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var isCollecting: Bool
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a Linter by specifying its properties directly.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(file: SwiftLintFile, configuration: Configuration = Configuration.default, cache: LinterCache? = nil,
    -            compilerArguments: [String] = [])
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - - - - - -
    - - file - - -
    -

    The file to lint with this linter.

    -
    -
    - - configuration - - -
    -

    The SwiftLint configuration to apply to this linter.

    -
    -
    - - cache - - -
    -

    The persisted cache to use for this linter.

    -
    -
    - - compilerArguments - - -
    -

    The compiler arguments to use for this linter if it is to execute analyzer rules.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - collect(into:) - -
    -
    -
    -
    -
    -
    -

    Returns a linter capable of checking for violations after running each rule’s collection step.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func collect(into storage: RuleStorage) -> CollectedLinter
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - storage - - -
    -

    The storage object where collected info should be saved.

    -
    -
    -
    -
    -

    Return Value

    -

    A linter capable of checking for violations after running each rule’s collection step.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Location.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Location.html deleted file mode 100644 index d8ed175d9..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Location.html +++ /dev/null @@ -1,739 +0,0 @@ - - - - Location Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Location

-
-
- -
public struct Location : CustomStringConvertible, Comparable, Codable
- -
-
-

The placement of a segment of Swift in a collection of source files.

- - -
-
- -
-
-
-
    -
  • -
    - - - - file - -
    -
    -
    -
    -
    -
    -

    The file path on disk for this location.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let file: String?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - line - -
    -
    -
    -
    -
    -
    -

    The line offset in the file for this location. 1-indexed.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let line: Int?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - character - -
    -
    -
    -
    -
    -
    -

    The character offset in the file for this location. 1-indexed.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let character: Int?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    -

    A lossless printable description of this location.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - relativeFile - -
    -
    -
    -
    -
    -
    -

    The file path for this location relative to the current working directory.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var relativeFile: String? { get }
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a Location by specifying its properties directly.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(file: String?, line: Int? = nil, character: Int? = nil)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - file - - -
    -

    The file path on disk for this location.

    -
    -
    - - line - - -
    -

    The line offset in the file for this location. 1-indexed.

    -
    -
    - - character - - -
    -

    The character offset in the file for this location. 1-indexed.

    -
    -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a Location based on a SwiftLintFile and a byte-offset into the file. -Fails if the specified offset was not a valid location in the file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(file: SwiftLintFile, byteOffset offset: ByteCount)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - file - - -
    -

    The file for this location.

    -
    -
    - - offset - - -
    -

    The offset in bytes into the file for this location.

    -
    -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a Location based on a SwiftLintFile and a UTF8 character-offset into the file. -Fails if tthe specified offset was not a valid location in the file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(file: SwiftLintFile, characterOffset offset: Int)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - file - - -
    -

    The file for this location.

    -
    -
    - - offset - - -
    -

    The offset in UTF8 fragments into the file for this location.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Comparable

-

-
-
-
    -
  • -
    - - - - <(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func < (lhs: Location, rhs: Location) -> Bool
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/MarkdownReporter.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/MarkdownReporter.html deleted file mode 100644 index 99d4b1a44..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/MarkdownReporter.html +++ /dev/null @@ -1,475 +0,0 @@ - - - - MarkdownReporter Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

MarkdownReporter

-
-
- -
public struct MarkdownReporter : Reporter
- -
-
-

Reports violations as markdown formated (with tables).

- - -
-
- -
-
-
-
- - -
- -

Reporter Conformance

-

-
-
-
    -
  • -
    - - - - identifier - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let identifier: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isRealtime - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let isRealtime: Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - generateReport(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func generateReport(_ violations: [StyleViolation]) -> String
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Region.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Region.html deleted file mode 100644 index 8c16c8dcd..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Region.html +++ /dev/null @@ -1,728 +0,0 @@ - - - - Region Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Region

-
-
- -
public struct Region : Equatable
- -
-
-

A contiguous region of Swift source code.

- - -
-
- -
-
-
-
    -
  • -
    - - - - start - -
    -
    -
    -
    -
    -
    -

    The location describing the start of the region. All locations that are less than this value -(earlier in the source file) are not contained in this region.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let start: Location
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - end - -
    -
    -
    -
    -
    -
    -

    The location describing the end of the region. All locations that are greater than this value -(later in the source file) are not contained in this region.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let end: Location
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    All SwiftLint rule identifiers that are disabled in this region.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let disabledRuleIdentifiers: Set<RuleIdentifier>
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a Region by setting explicit values for all its properties.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(start: Location, end: Location, disabledRuleIdentifiers: Set<RuleIdentifier>)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - start - - -
    -

    The region’s starting location.

    -
    -
    - - end - - -
    -

    The region’s ending location.

    -
    -
    - - disabledRuleIdentifiers - - -
    -

    All SwiftLint rule identifiers that are disabled in this region.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - contains(_:) - -
    -
    -
    -
    -
    -
    -

    Whether the specific location is contained in this region.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func contains(_ location: Location) -> Bool
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - location - - -
    -

    The location to check for containment.

    -
    -
    -
    -
    -

    Return Value

    -

    True if the specific location is contained in this region.

    -
    - -
    -
    -
  • -
  • -
    - - - - isRuleEnabled(_:) - -
    -
    -
    -
    -
    -
    -

    Whether the specified rule is enabled in this region.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func isRuleEnabled(_ rule: Rule) -> Bool
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - rule - - -
    -

    The rule whose status should be determined.

    -
    -
    -
    -
    -

    Return Value

    -

    True if the specified rule is enabled in this region.

    -
    - -
    -
    -
  • -
  • -
    - - - - isRuleDisabled(_:) - -
    -
    -
    -
    -
    -
    -

    Whether the specified rule is disabled in this region.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func isRuleDisabled(_ rule: Rule) -> Bool
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - rule - - -
    -

    The rule whose status should be determined.

    -
    -
    -
    -
    -

    Return Value

    -

    True if the specified rule is disabled in this region.

    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Returns the deprecated rule aliases that are disabling the specified rule in this region. -Returns the empty set if the rule isn’t disabled in this region.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func deprecatedAliasesDisabling(rule: Rule) -> Set<String>
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - rule - - -
    -

    The rule to check.

    -
    -
    -
    -
    -

    Return Value

    -

    Deprecated rule aliases.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/RuleDescription.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/RuleDescription.html deleted file mode 100644 index 860b1525e..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/RuleDescription.html +++ /dev/null @@ -1,935 +0,0 @@ - - - - RuleDescription Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleDescription

-
-
- -
public struct RuleDescription : Equatable
- -
-
-

A detailed description for a SwiftLint rule. Used for both documentation and testing purposes.

- - -
-
- -
-
-
-
    -
  • -
    - - - - identifier - -
    -
    -
    -
    -
    -
    -

    The rule’s unique identifier, to be used in configuration files and SwiftLint commands. -Should be short and only comprised of lowercase latin alphabet letters and underscores formatted in snake case.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let identifier: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - name - -
    -
    -
    -
    -
    -
    -

    The rule’s human-readable name. Should be short, descriptive and formatted in Title Case. May contain spaces.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let name: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    -

    The rule’s verbose description. Should read as a sentence or short paragraph. Good things to include are an -explanation of the rule’s purpose and rationale.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let description: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - kind - -
    -
    -
    -
    -
    -
    -

    The RuleKind that best categorizes this rule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let kind: RuleKind
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - nonTriggeringExamples - -
    -
    -
    -
    -
    -
    -

    Swift source examples that do not trigger a violation for this rule. Used for documentation purposes to inform -users of various samples of code that are considered valid by this rule. Should be valid Swift syntax but is not -required to compile.

    - -

    These examples are also used for testing purposes if the rule conforms to AutomaticTestableRule. Tests will -validate that the rule does not trigger any violations for these examples.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let nonTriggeringExamples: [Example]
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - triggeringExamples - -
    -
    -
    -
    -
    -
    -

    Swift source examples that do trigger one or more violations for this rule. Used for documentation purposes to -inform users of various samples of code that are considered invalid by this rule. Should be valid Swift syntax -but is not required to compile.

    - -

    Violations should occur where ↓ markers are located.

    - -

    These examples are also used for testing purposes if the rule conforms to AutomaticTestableRule. Tests will -validate that the rule triggers violations for these examples wherever ↓ markers are located.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let triggeringExamples: [Example]
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - corrections - -
    -
    -
    -
    -
    -
    -

    Pairs of Swift source examples, where keys are examples that trigger violations for this rule, and the values -are the expected value after applying corrections with the rule.

    - -

    Rules that aren’t correctable (conforming to the CorrectableRule protocol) should leave property empty.

    - -

    These examples are used for testing purposes if the rule conforms to AutomaticTestableRule. Tests will -validate that the rule corrects all keys to their corresponding values.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let corrections: [Example : Example]
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - deprecatedAliases - -
    -
    -
    -
    -
    -
    -

    Any previous iteration of the rule’s identifier that was previously shipped with SwiftLint.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let deprecatedAliases: Set<String>
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - minSwiftVersion - -
    -
    -
    -
    -
    -
    -

    The oldest version of the Swift compiler supported by this rule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let minSwiftVersion: SwiftVersion
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - requiresFileOnDisk - -
    -
    -
    -
    -
    -
    -

    Whether or not this rule can only be executed on a file physically on-disk. Typically necessary for rules -conforming to AnalyzerRule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let requiresFileOnDisk: Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - consoleDescription - -
    -
    -
    -
    -
    -
    -

    The console-printable string for this description.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var consoleDescription: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - allIdentifiers - -
    -
    -
    -
    -
    -
    -

    All identifiers that have been used to uniquely identify this rule in past and current SwiftLint versions.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var allIdentifiers: [String] { get }
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a RuleDescription by specifying all its properties directly.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(identifier: String, name: String, description: String, kind: RuleKind,
    -            minSwiftVersion: SwiftVersion = .five,
    -            nonTriggeringExamples: [Example] = [], triggeringExamples: [Example] = [],
    -            corrections: [Example: Example] = [:],
    -            deprecatedAliases: Set<String> = [],
    -            requiresFileOnDisk: Bool = false)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - identifier - - -
    -

    Sets the description’s identifier property.

    -
    -
    - - name - - -
    -

    Sets the description’s name property.

    -
    -
    - - description - - -
    -

    Sets the description’s description property.

    -
    -
    - - kind - - -
    -

    Sets the description’s kind property.

    -
    -
    - - minSwiftVersion - - -
    -

    Sets the description’s minSwiftVersion property.

    -
    -
    - - nonTriggeringExamples - - -
    -

    Sets the description’s nonTriggeringExamples property.

    -
    -
    - - triggeringExamples - - -
    -

    Sets the description’s triggeringExamples property.

    -
    -
    - - corrections - - -
    -

    Sets the description’s corrections property.

    -
    -
    - - deprecatedAliases - - -
    -

    Sets the description’s deprecatedAliases property.

    -
    -
    - - requiresFileOnDisk - - -
    -

    Sets the description’s requiresFileOnDisk property.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Equatable

-

-
-
-
    -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func == (lhs: RuleDescription, rhs: RuleDescription) -> Bool
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/RuleList.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/RuleList.html deleted file mode 100644 index ca4f839f8..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/RuleList.html +++ /dev/null @@ -1,521 +0,0 @@ - - - - RuleList Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleList

-
-
- -
public struct RuleList
-
extension RuleList: Equatable
- -
-
-

A list of available SwiftLint rules.

- - -
-
- -
-
-
-
    -
  • -
    - - - - list - -
    -
    -
    -
    -
    -
    -

    The rules contained in this list.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let list: [String : Rule.Type]
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Initializers

-

-
-
-
    -
  • -
    - - - - init(rules:) - -
    -
    -
    -
    -
    -
    -

    Creates a RuleList by specifying all its rules.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(rules: Rule.Type...)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - rules - - -
    -

    The rules to be contained in this list.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(rules:) - -
    -
    -
    -
    -
    -
    -

    Creates a RuleList by specifying all its rules.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(rules: [Rule.Type])
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - rules - - -
    -

    The rules to be contained in this list.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func == (lhs: RuleList, rhs: RuleList) -> Bool
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/RuleListDocumentation.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/RuleListDocumentation.html deleted file mode 100644 index 9676d5260..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/RuleListDocumentation.html +++ /dev/null @@ -1,453 +0,0 @@ - - - - RuleListDocumentation Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleListDocumentation

-
-
- -
public struct RuleListDocumentation
- -
-
-

User-facing documentation for a SwiftLint RuleList.

- - -
-
- -
-
-
-
    -
  • -
    - - - - init(_:) - -
    -
    -
    -
    -
    -
    -

    Creates a RuleListDocumentation instance from a RuleList.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(_ list: RuleList)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - list - - -
    -

    A RuleList to document.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - write(to:) - -
    -
    -
    -
    -
    -
    -

    Write the rule list documentation as markdown files to the specified directory.

    -
    -

    Throws

    -

    Throws if the files could not be written to.

    - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func write(to url: URL) throws
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - url - - -
    -

    Local URL for directory where the markdown files for this documentation should be saved.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/RuleParameter.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/RuleParameter.html deleted file mode 100644 index 8af84e5ef..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/RuleParameter.html +++ /dev/null @@ -1,471 +0,0 @@ - - - - RuleParameter Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleParameter

-
-
- -
public struct RuleParameter<T> : Equatable where T : Equatable
- -
-
-

A configuration parameter for rules.

- - -
-
- -
-
-
-
    -
  • -
    - - - - severity - -
    -
    -
    -
    -
    -
    -

    The severity that should be assigned to the violation of this parameter’s value is met.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let severity: ViolationSeverity
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - value - -
    -
    -
    -
    -
    -
    -

    The value to configure the rule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let value: T
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(severity:value:) - -
    -
    -
    -
    -
    -
    -

    Creates a RuleParameter by specifying its properties directly.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(severity: ViolationSeverity, value: T)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - severity - - -
    -

    The severity that should be assigned to the violation of this parameter’s value is met.

    -
    -
    - - value - - -
    -

    The value to configure the rule.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/SonarQubeReporter.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/SonarQubeReporter.html deleted file mode 100644 index 9e349c9ba..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/SonarQubeReporter.html +++ /dev/null @@ -1,475 +0,0 @@ - - - - SonarQubeReporter Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

SonarQubeReporter

-
-
- -
public struct SonarQubeReporter : Reporter
- -
-
-

Reports violations in SonarQube import format.

- - -
-
- -
-
-
-
- - -
- -

Reporter Conformance

-

-
-
-
    -
  • -
    - - - - identifier - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let identifier: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isRealtime - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let isRealtime: Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - generateReport(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func generateReport(_ violations: [StyleViolation]) -> String
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/SourceKittenDictionary.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/SourceKittenDictionary.html deleted file mode 100644 index 458163b6d..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/SourceKittenDictionary.html +++ /dev/null @@ -1,531 +0,0 @@ - - - - SourceKittenDictionary Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

SourceKittenDictionary

-
-
- -
public struct SourceKittenDictionary
- -
-
-

A collection of keys and values as parsed out of SourceKit, with many conveniences for accessing SwiftLint-specific -values.

- - -
-
- -
-
-
-
    -
  • -
    - - - - value - -
    -
    -
    -
    -
    -
    -

    The underlying SourceKitten dictionary.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let value: [String : SourceKitRepresentable]
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - substructure - -
    -
    -
    -
    -
    -
    -

    The cached substructure for this dictionary. Empty if there is no substructure.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let substructure: [SourceKittenDictionary]
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - expressionKind - -
    -
    -
    -
    -
    -
    -

    The kind of Swift expression represented by this dictionary, if it is an expression.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let expressionKind: SwiftExpressionKind?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - declarationKind - -
    -
    -
    -
    -
    -
    -

    The kind of Swift declaration represented by this dictionary, if it is a declaration.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let declarationKind: SwiftDeclarationKind?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - statementKind - -
    -
    -
    -
    -
    -
    -

    The kind of Swift statement represented by this dictionary, if it is a statement.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let statementKind: StatementKind?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - accessibility - -
    -
    -
    -
    -
    -
    -

    The accessibility level for this dictionary, if it is a declaration.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let accessibility: AccessControlLevel?
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/StyleViolation.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/StyleViolation.html deleted file mode 100644 index 0f09e5a9e..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/StyleViolation.html +++ /dev/null @@ -1,746 +0,0 @@ - - - - StyleViolation Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

StyleViolation

-
-
- -
public struct StyleViolation : CustomStringConvertible, Equatable, Codable
- -
-
-

A value describing an instance of Swift source code that is considered invalid by a SwiftLint rule.

- - -
-
- -
-
-
-
    -
  • -
    - - - - ruleIdentifier - -
    -
    -
    -
    -
    -
    -

    The identifier of the rule that generated this violation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let ruleIdentifier: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - ruleDescription - -
    -
    -
    -
    -
    -
    -

    The description of the rule that generated this violation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let ruleDescription: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - ruleName - -
    -
    -
    -
    -
    -
    -

    The name of the rule that generated this violation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let ruleName: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - severity - -
    -
    -
    -
    -
    -
    -

    The severity of this violation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var severity: ViolationSeverity { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - location - -
    -
    -
    -
    -
    -
    -

    The location of this violation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var location: Location { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - reason - -
    -
    -
    -
    -
    -
    -

    The justification for this violation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let reason: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    -

    A printable description for this violation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a StyleViolation by specifying its properties directly.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(ruleDescription: RuleDescription,
    -            severity: ViolationSeverity = .warning,
    -            location: Location,
    -            reason: String? = nil)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - - - - - -
    - - ruleDescription - - -
    -

    The description of the rule that generated this violation.

    -
    -
    - - severity - - -
    -

    The severity of this violation.

    -
    -
    - - location - - -
    -

    The location of this violation.

    -
    -
    - - reason - - -
    -

    The justification for this violation.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - with(severity:) - -
    -
    -
    -
    -
    -
    -

    Returns the same violation, but with the severity that is passed in

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func with(severity: ViolationSeverity) -> StyleViolation
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - severity - - -
    -

    the new severity to use in the modified violation

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - with(location:) - -
    -
    -
    -
    -
    -
    -

    Returns the same violation, but with the location that is passed in

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func with(location: Location) -> StyleViolation
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - location - - -
    -

    the new location to use in the modified violation

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/SwiftLintSyntaxMap.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/SwiftLintSyntaxMap.html deleted file mode 100644 index 774055fd5..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/SwiftLintSyntaxMap.html +++ /dev/null @@ -1,459 +0,0 @@ - - - - SwiftLintSyntaxMap Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

SwiftLintSyntaxMap

-
-
- -
public struct SwiftLintSyntaxMap
- -
-
-

Represents a Swift file’s syntax information.

- - -
-
- -
-
-
-
    -
  • -
    - - - - value - -
    -
    -
    -
    -
    -
    -

    The raw SyntaxMap obtained by SourceKitten.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let value: SyntaxMap
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - tokens - -
    -
    -
    -
    -
    -
    -

    The SwiftLint-specific syntax tokens for this syntax map.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let tokens: [SwiftLintSyntaxToken]
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(value:) - -
    -
    -
    -
    -
    -
    -

    Creates a SwiftLintSyntaxMap from the raw SyntaxMap obtained by SourceKitten.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(value: SyntaxMap)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - value - - -
    -

    The raw SyntaxMap obtained by SourceKitten.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/SwiftLintSyntaxToken.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/SwiftLintSyntaxToken.html deleted file mode 100644 index d24eb7a19..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/SwiftLintSyntaxToken.html +++ /dev/null @@ -1,549 +0,0 @@ - - - - SwiftLintSyntaxToken Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

SwiftLintSyntaxToken

-
-
- -
public struct SwiftLintSyntaxToken
- -
-
-

A SwiftLint-aware Swift syntax token.

- - -
-
- -
-
-
-
    -
  • -
    - - - - value - -
    -
    -
    -
    -
    -
    -

    The raw SyntaxToken obtained by SourceKitten.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let value: SyntaxToken
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - kind - -
    -
    -
    -
    -
    -
    -

    The syntax kind associated with is token.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let kind: SyntaxKind?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(value:) - -
    -
    -
    -
    -
    -
    -

    Creates a SwiftLintSyntaxToken from the raw SyntaxToken obtained by SourceKitten.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(value: SyntaxToken)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - value - - -
    -

    The raw SyntaxToken obtained by SourceKitten.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - range - -
    -
    -
    -
    -
    -
    -

    The byte range in a source file for this token.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var range: ByteRange { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - offset - -
    -
    -
    -
    -
    -
    -

    The starting byte offset in a source file for this token.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var offset: ByteCount { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - length - -
    -
    -
    -
    -
    -
    -

    The length in bytes for this token.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var length: ByteCount { get }
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/SwiftVersion.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/SwiftVersion.html deleted file mode 100644 index 44f7a7d2e..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/SwiftVersion.html +++ /dev/null @@ -1,711 +0,0 @@ - - - - SwiftVersion Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

SwiftVersion

-
-
- -
public struct SwiftVersion : RawRepresentable, Codable, Comparable
- -
-
-

A value describing the version of the Swift compiler.

- - -
-
- -
-
-
- -
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Version.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Version.html deleted file mode 100644 index f14f7adcc..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/Version.html +++ /dev/null @@ -1,410 +0,0 @@ - - - - Version Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

Version

-
-
- -
public struct Version
- -
-
-

A type describing the SwiftLint version.

- - -
-
- -
-
-
-
    -
  • -
    - - - - value - -
    -
    -
    -
    -
    -
    -

    The string value for this version.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let value: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - current - -
    -
    -
    -
    -
    -
    -

    The current SwiftLint version.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let current: Version
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/XcodeReporter.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/XcodeReporter.html deleted file mode 100644 index 85b7dd9c6..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/XcodeReporter.html +++ /dev/null @@ -1,475 +0,0 @@ - - - - XcodeReporter Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

XcodeReporter

-
-
- -
public struct XcodeReporter : Reporter
- -
-
-

Reports violations in the format Xcode uses to display in the IDE. (default)

- - -
-
- -
-
-
-
- - -
- -

Reporter Conformance

-

-
-
-
    -
  • -
    - - - - identifier - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let identifier: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isRealtime - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let isRealtime: Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - generateReport(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func generateReport(_ violations: [StyleViolation]) -> String
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/YamlParser.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/YamlParser.html deleted file mode 100644 index 14020208a..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/Structs/YamlParser.html +++ /dev/null @@ -1,421 +0,0 @@ - - - - YamlParser Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
-

YamlParser

-
-
- -
public struct YamlParser
- -
-
-

An interface for parsing YAML.

- - -
-
- -
-
-
-
    -
  • -
    - - - - parse(_:env:) - -
    -
    -
    -
    -
    -
    -

    Parses the input YAML string as an untyped dictionary.

    -
    -

    Throws

    -

    Throws if the yaml string provided could not be parsed.

    - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func parse(_ yaml: String,
    -                         env: [String: String] = ProcessInfo.processInfo.environment) throws -> [String: Any]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - yaml - - -
    -

    YAML-formatted string.

    -
    -
    - - env - - -
    -

    The environment to use to expand variables in the YAML.

    -
    -
    -
    -
    -

    Return Value

    -

    The parsed YAML as an untyped dictionary.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/anonymous_argument_in_multiline_closure.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/anonymous_argument_in_multiline_closure.html deleted file mode 100644 index 2739a015f..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/anonymous_argument_in_multiline_closure.html +++ /dev/null @@ -1,361 +0,0 @@ - - - - anonymous_argument_in_multiline_closure Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Anonymous Argument in Multiline Closure

- -

Use named arguments in multiline closures

- -
    -
  • Identifier: anonymous_argument_in_multiline_closure
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
closure { $0 }
-
-
closure { print($0) }
-
-
closure { arg in
-    print(arg)
-}
-
-
closure { arg in
-    nestedClosure { $0 + arg }
-}
-
-

Triggering Examples

-
closure {
-    print(↓$0)
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/anyobject_protocol.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/anyobject_protocol.html deleted file mode 100644 index 4e76f9759..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/anyobject_protocol.html +++ /dev/null @@ -1,366 +0,0 @@ - - - - anyobject_protocol Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

AnyObject Protocol

- -

Prefer using AnyObject over class for class-only protocols.

- -
    -
  • Identifier: anyobject_protocol
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
protocol SomeProtocol {}
-
-
-
protocol SomeClassOnlyProtocol: AnyObject {}
-
-
-
protocol SomeClassOnlyProtocol: AnyObject, SomeInheritedProtocol {}
-
-
-
@objc protocol SomeClassOnlyProtocol: AnyObject, SomeInheritedProtocol {}
-
-
-

Triggering Examples

-
protocol SomeClassOnlyProtocol: ↓class {}
-
-
-
protocol SomeClassOnlyProtocol: ↓class, SomeInheritedProtocol {}
-
-
-
@objc protocol SomeClassOnlyProtocol: ↓class, SomeInheritedProtocol {}
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/array_init.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/array_init.html deleted file mode 100644 index 71b574371..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/array_init.html +++ /dev/null @@ -1,410 +0,0 @@ - - - - array_init Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Array Init

- -

Prefer using Array(seq) over seq.map { $0 } to convert a sequence into an Array.

- -
    -
  • Identifier: array_init
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
Array(foo)
-
-
-
foo.map { $0.0 }
-
-
-
foo.map { $1 }
-
-
-
foo.map { $0() }
-
-
-
foo.map { ((), $0) }
-
-
-
foo.map { $0! }
-
-
-
foo.map { $0! /* force unwrap */ }
-
-
-
foo.something { RouteMapper.map($0) }
-
-
-
foo.map { !$0 }
-
-
-
foo.map { /* a comment */ !$0 }
-
-
-

Triggering Examples

-
↓foo.map({ $0 })
-
-
-
↓foo.map { $0 }
-
-
-
↓foo.map { return $0 }
-
-
-
↓foo.map { elem in
-   elem
-}
-
-
-
↓foo.map { elem in
-   return elem
-}
-
-
-
↓foo.map { (elem: String) in
-   elem
-}
-
-
-
↓foo.map { elem -> String in
-   elem
-}
-
-
-
↓foo.map { $0 /* a comment */ }
-
-
-
↓foo.map { /* a comment */ $0 }
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/attributes.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/attributes.html deleted file mode 100644 index 53682b1c7..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/attributes.html +++ /dev/null @@ -1,567 +0,0 @@ - - - - attributes Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Attributes

- -

Attributes should be on their own lines in functions and types, but on the same line as variables and imports.

- -
    -
  • Identifier: attributes
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, always_on_same_line: [“@IBAction”, “@NSManaged”], always_on_line_above: []
  • -
-

Non Triggering Examples

-
@objc var x: String
-
-
@objc private var x: String
-
-
@nonobjc var x: String
-
-
@IBOutlet private var label: UILabel
-
-
@IBOutlet @objc private var label: UILabel
-
-
@NSCopying var name: NSString
-
-
@NSManaged var name: String?
-
-
@IBInspectable var cornerRadius: CGFloat
-
-
@available(iOS 9.0, *)
- let stackView: UIStackView
-
-
@NSManaged func addSomeObject(book: SomeObject)
-
-
@IBAction func buttonPressed(button: UIButton)
-
-
@objc
- @IBAction func buttonPressed(button: UIButton)
-
-
@available(iOS 9.0, *)
- func animate(view: UIStackView)
-
-
@available(*, deprecated, message: "A message")
- func animate(view: UIStackView)
-
-
@nonobjc
- final class X {}
-
-
@available(iOS 9.0, *)
- class UIStackView {}
-
-
@NSApplicationMain
- class AppDelegate: NSObject, NSApplicationDelegate {}
-
-
@UIApplicationMain
- class AppDelegate: NSObject, UIApplicationDelegate {}
-
-
@IBDesignable
- class MyCustomView: UIView {}
-
-
@testable import SourceKittenFramework
-
-
@objc(foo_x)
- var x: String
-
-
@available(iOS 9.0, *)
-@objc(abc_stackView)
- let stackView: UIStackView
-
-
@objc(abc_addSomeObject:)
- @NSManaged func addSomeObject(book: SomeObject)
-
-
@objc(ABCThing)
- @available(iOS 9.0, *)
- class Thing {}
-
-
class Foo: NSObject {
- override var description: String { return "" }
-}
-
-
class Foo: NSObject {
-
- override func setUp() {}
-}
-
-
@objc
-class ⽺ {}
-
-
-
extension Property {
-
- @available(*, unavailable, renamed: "isOptional")
-public var optional: Bool { fatalError() }
-}
-
-
@GKInspectable var maxSpeed: Float
-
-
@discardableResult
- func a() -> Int
-
-
@objc
- @discardableResult
- func a() -> Int
-
-
func increase(f: @autoclosure () -> Int) -> Int
-
-
func foo(completionHandler: @escaping () -> Void)
-
-
private struct DefaultError: Error {}
-
-
@testable import foo
-
-private let bar = 1
-
-
import XCTest
-@testable import DeleteMe
-
-@available (iOS 11.0, *)
-class DeleteMeTests: XCTestCase {
-}
-
-
@objc
-internal func foo(identifier: String, completion: @escaping (() -> Void)) {}
-
-
@objc
-internal func foo(identifier: String, completion: @autoclosure (() -> Bool)) {}
-
-
func printBoolOrTrue(_ expression: @autoclosure () throws -> Bool?) rethrows {
-  try print(expression() ?? true)
-}
-
-
import Foundation
-
-class MyClass: NSObject {
-  @objc(
-    first:
-  )
-  static func foo(first: String) {}
-}
-
-

Triggering Examples

-
@objc
- ↓var x: String
-
-
@objc
-
- ↓var x: String
-
-
@objc
- private ↓var x: String
-
-
@nonobjc
- ↓var x: String
-
-
@IBOutlet
- private ↓var label: UILabel
-
-
@IBOutlet
-
- private ↓var label: UILabel
-
-
@NSCopying
- ↓var name: NSString
-
-
@NSManaged
- ↓var name: String?
-
-
@IBInspectable
- ↓var cornerRadius: CGFloat
-
-
@available(iOS 9.0, *) ↓let stackView: UIStackView
-
-
@NSManaged
- ↓func addSomeObject(book: SomeObject)
-
-
@IBAction
- ↓func buttonPressed(button: UIButton)
-
-
@IBAction
- @objc
- ↓func buttonPressed(button: UIButton)
-
-
@available(iOS 9.0, *) ↓func animate(view: UIStackView)
-
-
@nonobjc final ↓class X {}
-
-
@available(iOS 9.0, *) ↓class UIStackView {}
-
-
@available(iOS 9.0, *)
- @objc ↓class UIStackView {}
-
-
@available(iOS 9.0, *) @objc
- ↓class UIStackView {}
-
-
@available(iOS 9.0, *)
-
- ↓class UIStackView {}
-
-
@UIApplicationMain ↓class AppDelegate: NSObject, UIApplicationDelegate {}
-
-
@IBDesignable ↓class MyCustomView: UIView {}
-
-
@testable
-↓import SourceKittenFramework
-
-
@testable
-
-
-↓import SourceKittenFramework
-
-
@available(iOS 9.0, *) @objc(abc_stackView)
- ↓let stackView: UIStackView
-
-
@objc(abc_addSomeObject:) @NSManaged
- ↓func addSomeObject(book: SomeObject)
-
-
@objc(abc_addSomeObject:)
- @NSManaged
- ↓func addSomeObject(book: SomeObject)
-
-
@available(iOS 9.0, *)
- @objc(ABCThing) ↓class Thing {}
-
-
@GKInspectable
- ↓var maxSpeed: Float
-
-
@discardableResult ↓func a() -> Int
-
-
@objc
- @discardableResult ↓func a() -> Int
-
-
@objc
-
- @discardableResult
- ↓func a() -> Int
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/balanced_xctest_lifecycle.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/balanced_xctest_lifecycle.html deleted file mode 100644 index abdf2eaa0..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/balanced_xctest_lifecycle.html +++ /dev/null @@ -1,421 +0,0 @@ - - - - balanced_xctest_lifecycle Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Balanced XCTest life-cycle

- -

Test classes must implement balanced setUp and tearDown methods.

- -
    -
  • Identifier: balanced_xctest_lifecycle
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
final class FooTests: XCTestCase {
-    override func setUp() {}
-    override func tearDown() {}
-}
-
-
final class FooTests: XCTestCase {
-    override func setUpWithError() throws {}
-    override func tearDown() {}
-}
-
-
final class FooTests: XCTestCase {
-    override func setUp() {}
-    override func tearDownWithError() throws {}
-}
-
-
final class FooTests: XCTestCase {
-    override func setUpWithError() throws {}
-    override func tearDownWithError() throws {}
-}
-final class BarTests: XCTestCase {
-    override func setUpWithError() throws {}
-    override func tearDownWithError() throws {}
-}
-
-
struct FooTests {
-    override func setUp() {}
-}
-class BarTests {
-    override func setUpWithError() throws {}
-}
-
-
final class FooTests: XCTestCase {
-    override func setUpAlLExamples() {}
-}
-
-
final class FooTests: XCTestCase {
-    class func setUp() {}
-    class func tearDown() {}
-}
-
-

Triggering Examples

-
final class ↓FooTests: XCTestCase {
-    override func setUp() {}
-}
-
-
final class ↓FooTests: XCTestCase {
-    override func setUpWithError() throws {}
-}
-
-
final class FooTests: XCTestCase {
-    override func setUp() {}
-    override func tearDownWithError() throws {}
-}
-final class ↓BarTests: XCTestCase {
-    override func setUpWithError() throws {}
-}
-
-
final class ↓FooTests: XCTestCase {
-    class func tearDown() {}
-}
-
-
final class ↓FooTests: XCTestCase {
-    override func tearDown() {}
-}
-
-
final class ↓FooTests: XCTestCase {
-    override func tearDownWithError() throws {}
-}
-
-
final class FooTests: XCTestCase {
-    override func setUp() {}
-    override func tearDownWithError() throws {}
-}
-final class ↓BarTests: XCTestCase {
-    override func tearDownWithError() throws {}
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/block_based_kvo.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/block_based_kvo.html deleted file mode 100644 index 754db53d1..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/block_based_kvo.html +++ /dev/null @@ -1,361 +0,0 @@ - - - - block_based_kvo Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Block Based KVO

- -

Prefer the new block based KVO API with keypaths when using Swift 3.2 or later.

- -
    -
  • Identifier: block_based_kvo
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let observer = foo.observe(\.value, options: [.new]) { (foo, change) in
-   print(change.newValue)
-}
-
-

Triggering Examples

-
class Foo: NSObject {
-  override ↓func observeValue(forKeyPath keyPath: String?, of object: Any?,
-                              change: [NSKeyValueChangeKey : Any]?,
-                              context: UnsafeMutableRawPointer?) {}
-}
-
-
class Foo: NSObject {
-  override ↓func observeValue(forKeyPath keyPath: String?, of object: Any?,
-                              change: Dictionary<NSKeyValueChangeKey, Any>?,
-                              context: UnsafeMutableRawPointer?) {}
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/capture_variable.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/capture_variable.html deleted file mode 100644 index 9022f4ea2..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/capture_variable.html +++ /dev/null @@ -1,466 +0,0 @@ - - - - capture_variable Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Capture Variable

- -

Non-constant variables should not be listed in a closure’s capture list to avoid confusion about closures capturing variables at creation time.

- -
    -
  • Identifier: capture_variable
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: Yes
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class C {
-    let i: Int
-    init(_ i: Int) { self.i = i }
-}
-
-let j: Int = 0
-let c = C(1)
-
-let closure: () -> Void = { [j, c] in
-    print(c.i, j)
-}
-
-closure()
-
-
let iGlobal: Int = 0
-
-class C {
-    class var iClass: Int { 0 }
-    static let iStatic: Int = 0
-    let iInstance: Int = 0
-
-    func callTest() {
-        var iLocal: Int = 0
-        test { [unowned self, iGlobal, iInstance, iLocal, iClass=C.iClass, iStatic=C.iStatic] j in
-            print(iGlobal, iClass, iStatic, iInstance, iLocal, j)
-        }
-    }
-
-    func test(_ completionHandler: @escaping (Int) -> Void) {
-    }
-}
-
-
var j: Int!
-j = 0
-
-let closure: () -> Void = { [j] in
-    print(j)
-}
-
-closure()
-j = 1
-closure()
-
-
lazy var j: Int = { 0 }()
-
-let closure: () -> Void = { [j] in
-    print(j)
-}
-
-closure()
-j = 1
-closure()
-
-

Triggering Examples

-
var j: Int = 0
-
-let closure: () -> Void = { [j] in
-    print(j)
-}
-
-closure()
-j = 1
-closure()
-
-
class C {
-    let i: Int
-    init(_ i: Int) { self.i = i }
-}
-
-var c = C(0)
-let closure: () -> Void = { [c] in
-    print(c.i)
-}
-
-closure()
-c = C(1)
-closure()
-
-
var iGlobal: Int = 0
-
-class C {
-    func callTest() {
-        test { [iGlobal] j in
-            print(iGlobal, j)
-        }
-    }
-
-    func test(_ completionHandler: @escaping (Int) -> Void) {
-    }
-}
-
-
class C {
-    static var iStatic: Int = 0
-
-    static func callTest() {
-        test { [↓iStatic] j in
-            print(iStatic, j)
-        }
-    }
-
-    static func test(_ completionHandler: @escaping (Int) -> Void) {
-        completionHandler(2)
-        C.iStatic = 1
-        completionHandler(3)
-    }
-}
-
-C.callTest()
-
-
class C {
-    var iInstance: Int = 0
-
-    func callTest() {
-        test { [iInstance] j in
-            print(iInstance, j)
-        }
-    }
-
-    func test(_ completionHandler: @escaping (Int) -> Void) {
-    }
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/class_delegate_protocol.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/class_delegate_protocol.html deleted file mode 100644 index 79caee1d7..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/class_delegate_protocol.html +++ /dev/null @@ -1,388 +0,0 @@ - - - - class_delegate_protocol Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Class Delegate Protocol

- -

Delegate protocols should be class-only so they can be weakly referenced.

- -
    -
  • Identifier: class_delegate_protocol
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
protocol FooDelegate: class {}
-
-
-
protocol FooDelegate: class, BarDelegate {}
-
-
-
protocol Foo {}
-
-
-
class FooDelegate {}
-
-
-
@objc protocol FooDelegate {}
-
-
-
@objc(MyFooDelegate)
- protocol FooDelegate {}
-
-
-
protocol FooDelegate: BarDelegate {}
-
-
-
protocol FooDelegate: AnyObject {}
-
-
-
protocol FooDelegate: NSObjectProtocol {}
-
-
-
protocol FooDelegate where Self: BarDelegate {}
-
-
-
protocol FooDelegate where Self: AnyObject {}
-
-
-
protocol FooDelegate where Self: NSObjectProtocol {}
-
-
-

Triggering Examples

-
↓protocol FooDelegate {}
-
-
-
↓protocol FooDelegate: Bar {}
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/closing_brace.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/closing_brace.html deleted file mode 100644 index 8749961a8..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/closing_brace.html +++ /dev/null @@ -1,355 +0,0 @@ - - - - closing_brace Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Closing Brace Spacing

- -

Closing brace with closing parenthesis should not have any whitespaces in the middle.

- -
    -
  • Identifier: closing_brace
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
[].map({ })
-
-
[].map(
-  { }
-)
-
-

Triggering Examples

-
[].map({ ↓} )
-
-
[].map({ ↓}   )
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/closure_body_length.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/closure_body_length.html deleted file mode 100644 index 29eda2108..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/closure_body_length.html +++ /dev/null @@ -1,835 +0,0 @@ - - - - closure_body_length Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Closure Body Length

- -

Closure bodies should not span too many lines.

- -
    -
  • Identifier: closure_body_length
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning: 20, error: 100
  • -
-

Non Triggering Examples

-
foo.bar { $0 }
-
-
foo.bar { toto in
-}
-
-
foo.bar { toto in
-    let a0 = 0
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-
-
-
-
-
-
-
-
-
-
-}
-
-
foo.bar { toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-}
-
-
foo.bar { toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-
-
-
-
-
-
-
-
-
-
-}
-
-
foo.bar({ toto in
-})
-
-
foo.bar({ toto in
-    let a0 = 0
-})
-
-
foo.bar({ toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-})
-
-
foo.bar(label: { toto in
-})
-
-
foo.bar(label: { toto in
-    let a0 = 0
-})
-
-
foo.bar(label: { toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-})
-
-
foo.bar(label: { toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-}, anotherLabel: { toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-})
-
-
foo.bar(label: { toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-}) { toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-}
-
-
let foo: Bar = { toto in
-    let bar = Bar()
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    return bar
-}()
-
-

Triggering Examples

-
foo.bar ↓{ toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-}
-
-
foo.bar ↓{ toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-
-
-
-
-
-
-
-
-
-
-}
-
-
foo.bar(↓{ toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-})
-
-
foo.bar(label: ↓{ toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-})
-
-
foo.bar(label: ↓{ toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-}, anotherLabel: ↓{ toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-})
-
-
foo.bar(label: ↓{ toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-}) ↓{ toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-}
-
-
let foo: Bar = ↓{ toto in
-    let bar = Bar()
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    return bar
-}()
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/closure_end_indentation.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/closure_end_indentation.html deleted file mode 100644 index d46efae27..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/closure_end_indentation.html +++ /dev/null @@ -1,415 +0,0 @@ - - - - closure_end_indentation Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Closure End Indentation

- -

Closure end should have the same indentation as the line that started it.

- -
    -
  • Identifier: closure_end_indentation
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
SignalProducer(values: [1, 2, 3])
-   .startWithNext { number in
-       print(number)
-   }
-
-
-
[1, 2].map { $0 + 1 }
-
-
-
return match(pattern: pattern, with: [.comment]).flatMap { range in
-   return Command(string: contents, range: range)
-}.flatMap { command in
-   return command.expand()
-}
-
-
-
foo(foo: bar,
-    options: baz) { _ in }
-
-
-
someReallyLongProperty.chainingWithAnotherProperty
-   .foo { _ in }
-
-
foo(abc, 123)
-{ _ in }
-
-
-
function(
-    closure: { x in
-        print(x)
-    },
-    anotherClosure: { y in
-        print(y)
-    })
-
-
function(parameter: param,
-         closure: { x in
-    print(x)
-})
-
-
function(parameter: param, closure: { x in
-        print(x)
-    },
-    anotherClosure: { y in
-        print(y)
-    })
-
-
(-variable).foo()
-
-

Triggering Examples

-
SignalProducer(values: [1, 2, 3])
-   .startWithNext { number in
-       print(number)
-↓}
-
-
-
return match(pattern: pattern, with: [.comment]).flatMap { range in
-   return Command(string: contents, range: range)
-   ↓}.flatMap { command in
-   return command.expand()
-↓}
-
-
-
function(
-    closure: { x in
-        print(x)
-↓},
-    anotherClosure: { y in
-        print(y)
-↓})
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/closure_parameter_position.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/closure_parameter_position.html deleted file mode 100644 index 7425e48bd..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/closure_parameter_position.html +++ /dev/null @@ -1,439 +0,0 @@ - - - - closure_parameter_position Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Closure Parameter Position

- -

Closure parameters should be on the same line as opening brace.

- -
    -
  • Identifier: closure_parameter_position
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
[1, 2].map { $0 + 1 }
-
-
-
[1, 2].map({ $0 + 1 })
-
-
-
[1, 2].map { number in
- number + 1 
-}
-
-
-
[1, 2].map { number -> Int in
- number + 1 
-}
-
-
-
[1, 2].map { (number: Int) -> Int in
- number + 1 
-}
-
-
-
[1, 2].map { [weak self] number in
- number + 1 
-}
-
-
-
[1, 2].something(closure: { number in
- number + 1 
-})
-
-
-
let isEmpty = [1, 2].isEmpty()
-
-
-
rlmConfiguration.migrationBlock.map { rlmMigration in
-    return { migration, schemaVersion in
-        rlmMigration(migration.rlmMigration, schemaVersion)
-    }
-}
-
-
let mediaView: UIView = { [weak self] index in
-   return UIView()
-}(index)
-
-

Triggering Examples

-
[1, 2].map {
-    ↓number in
-    number + 1
-}
-
-
[1, 2].map {
-    ↓number -> Int in
-    number + 1
-}
-
-
[1, 2].map {
-    (↓number: Int) -> Int in
-    number + 1
-}
-
-
[1, 2].map {
-    [weak ↓self] ↓number in
-    number + 1
-}
-
-
[1, 2].map { [weak self]
-    ↓number in
-    number + 1
-}
-
-
[1, 2].map({
-    ↓number in
-    number + 1
-})
-
-
[1, 2].something(closure: {
-    ↓number in
-    number + 1
-})
-
-
[1, 2].reduce(0) {
-    ↓sum, ↓number in
-    number + sum
-})
-
-
f.completionHandler = {
-    ↓thing in
-    doStuff()
-}
-
-
foo {
-    [weak ↓self] in
-    self?.bar()
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/closure_spacing.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/closure_spacing.html deleted file mode 100644 index bb0b462c5..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/closure_spacing.html +++ /dev/null @@ -1,361 +0,0 @@ - - - - closure_spacing Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Closure Spacing

- -

Closure expressions should have a single space inside each brace.

- -
    -
  • Identifier: closure_spacing
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
[].map ({ $0.description })
-
-
[].filter { $0.contains(location) }
-
-
extension UITableViewCell: ReusableView { }
-
-
extension UITableViewCell: ReusableView {}
-
-

Triggering Examples

-
[].filter(↓{$0.contains(location)})
-
-
[].map(↓{$0})
-
-
(↓{each in return result.contains(where: ↓{e in return e}) }).count
-
-
filter ↓{ sorted ↓{ $0 < $1}}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/collection_alignment.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/collection_alignment.html deleted file mode 100644 index ba53ee420..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/collection_alignment.html +++ /dev/null @@ -1,421 +0,0 @@ - - - - collection_alignment Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Collection Element Alignment

- -

All elements in a collection literal should be vertically aligned

- -
    -
  • Identifier: collection_alignment
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, align_colons: false
  • -
-

Non Triggering Examples

-
doThings(arg: [
-    "foo": 1,
-    "bar": 2,
-    "fizz": 2,
-    "buzz": 2
-])
-
-
let abc = [
-    "alpha": "a",
-    "beta": "b",
-    "gamma": "g",
-    "delta": "d",
-    "epsilon": "e"
-]
-
-
let meals = [
-                "breakfast": "oatmeal",
-                "lunch": "sandwich",
-                "dinner": "burger"
-]
-
-
let coordinates = [
-    CLLocationCoordinate2D(latitude: 0, longitude: 33),
-    CLLocationCoordinate2D(latitude: 0, longitude: 66),
-    CLLocationCoordinate2D(latitude: 0, longitude: 99)
-]
-
-
var evenNumbers: Set<Int> = [
-    2,
-    4,
-    6
-]
-
-
let abc = [1, 2, 3, 4]
-
-
let abc = [
-    1, 2, 3, 4
-]
-
-
let abc = [
-    "foo": "bar", "fizz": "buzz"
-]
-
-

Triggering Examples

-
doThings(arg: [
-    "foo": 1,
-    "bar": 2,
-   ↓"fizz": 2,
-   ↓"buzz": 2
-])
-
-
let abc = [
-    "alpha": "a",
-     ↓"beta": "b",
-    "gamma": "g",
-    "delta": "d",
-  ↓"epsilon": "e"
-]
-
-
let meals = [
-                "breakfast": "oatmeal",
-                "lunch": "sandwich",
-    ↓"dinner": "burger"
-]
-
-
let coordinates = [
-    CLLocationCoordinate2D(latitude: 0, longitude: 33),
-        ↓CLLocationCoordinate2D(latitude: 0, longitude: 66),
-    CLLocationCoordinate2D(latitude: 0, longitude: 99)
-]
-
-
var evenNumbers: Set<Int> = [
-    2,
-  ↓4,
-    6
-]
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/colon.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/colon.html deleted file mode 100644 index a5834c976..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/colon.html +++ /dev/null @@ -1,603 +0,0 @@ - - - - colon Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Colon Spacing

- -

Colons should be next to the identifier when specifying a type and next to the key in dictionary literals.

- -
    -
  • Identifier: colon
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, flexible_right_spacing: false, apply_to_dictionaries: true
  • -
-

Non Triggering Examples

-
let abc: Void
-
-
-
let abc: [Void: Void]
-
-
-
let abc: (Void, Void)
-
-
-
let abc: ([Void], String, Int)
-
-
-
let abc: [([Void], String, Int)]
-
-
-
let abc: String="def"
-
-
-
let abc: Int=0
-
-
-
let abc: Enum=Enum.Value
-
-
-
func abc(def: Void) {}
-
-
-
func abc(def: Void, ghi: Void) {}
-
-
-
let abc: String = "abc:"
-
-
let abc = [Void: Void]()
-
-
-
let abc = [1: [3: 2], 3: 4]
-
-
-
let abc = ["string": "string"]
-
-
-
let abc = ["string:string": "string"]
-
-
-
let abc: [String: Int]
-
-
-
func foo(bar: [String: Int]) {}
-
-
-
func foo() -> [String: Int] { return [:] }
-
-
-
let abc: Any
-
-
-
let abc: [Any: Int]
-
-
-
let abc: [String: Any]
-
-
-
class Foo: Bar {}
-
-
-
class Foo<T>: Bar {}
-
-
-
class Foo<T: Equatable>: Bar {}
-
-
-
class Foo<T, U>: Bar {}
-
-
-
class Foo<T: Equatable> {}
-
-
-
object.method(x: /* comment */ 5)
-
-
-
switch foo {
-case .bar:
-    _ = something()
-}
-
-
object.method(x: 5, y: "string")
-
-
-
object.method(x: 5, y:
-              "string")
-
-
object.method(5, y: "string")
-
-
-
func abc() { def(ghi: jkl) }
-
-
func abc(def: Void) { ghi(jkl: mno) }
-
-
class ABC { let def = ghi(jkl: mno) } }
-
-
func foo() { let dict = [1: 1] }
-
-
let aaa = Self.bbb ? Self.ccc : Self.ddd else {
-return nil
-Example("}
-
-

Triggering Examples

-
let ↓abc:Void
-
-
-
let ↓abc:  Void
-
-
-
let ↓abc :Void
-
-
-
let ↓abc : Void
-
-
-
let ↓abc : [Void: Void]
-
-
-
let ↓abc : (Void, String, Int)
-
-
-
let ↓abc : ([Void], String, Int)
-
-
-
let ↓abc : [([Void], String, Int)]
-
-
-
let ↓abc:  (Void, String, Int)
-
-
-
let ↓abc:  ([Void], String, Int)
-
-
-
let ↓abc:  [([Void], String, Int)]
-
-
-
let ↓abc :String="def"
-
-
-
let ↓abc :Int=0
-
-
-
let ↓abc :Int = 0
-
-
-
let ↓abc:Int=0
-
-
-
let ↓abc:Int = 0
-
-
-
let ↓abc:Enum=Enum.Value
-
-
-
func abc(↓def:Void) {}
-
-
-
func abc(↓def:  Void) {}
-
-
-
func abc(↓def :Void) {}
-
-
-
func abc(↓def : Void) {}
-
-
-
func abc(def: Void, ↓ghi :Void) {}
-
-
-
let abc = [Void↓:Void]()
-
-
-
let abc = [Void↓ : Void]()
-
-
-
let abc = [Void↓:  Void]()
-
-
-
let abc = [Void↓ :  Void]()
-
-
-
let abc = [1: [3↓ : 2], 3: 4]
-
-
-
let abc = [1: [3↓ : 2], 3↓:  4]
-
-
-
let abc: [↓String : Int]
-
-
-
let abc: [↓String:Int]
-
-
-
func foo(bar: [↓String : Int]) {}
-
-
-
func foo(bar: [↓String:Int]) {}
-
-
-
func foo() -> [↓String : Int] { return [:] }
-
-
-
func foo() -> [↓String:Int] { return [:] }
-
-
-
let ↓abc : Any
-
-
-
let abc: [↓Any : Int]
-
-
-
let abc: [↓String : Any]
-
-
-
class ↓Foo : Bar {}
-
-
-
class ↓Foo:Bar {}
-
-
-
class ↓Foo<T> : Bar {}
-
-
-
class ↓Foo<T>:Bar {}
-
-
-
class ↓Foo<T, U>:Bar {}
-
-
-
class ↓Foo<T: Equatable>:Bar {}
-
-
-
class Foo<↓T:Equatable> {}
-
-
-
class Foo<↓T : Equatable> {}
-
-
-
object.method(x: 5, y↓ : "string")
-
-
-
object.method(x↓:5, y: "string")
-
-
-
object.method(x↓:  5, y: "string")
-
-
-
func abc() { def(ghi↓:jkl) }
-
-
func abc(def: Void) { ghi(jkl↓:mno) }
-
-
class ABC { let def = ghi(jkl↓:mno) } }
-
-
func foo() { let dict = [1↓ : 1] }
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/comma.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/comma.html deleted file mode 100644 index 9e3f3005d..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/comma.html +++ /dev/null @@ -1,381 +0,0 @@ - - - - comma Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Comma Spacing

- -

There should be no space before and one after any comma.

- -
    -
  • Identifier: comma
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
func abc(a: String, b: String) { }
-
-
abc(a: "string", b: "string"
-
-
enum a { case a, b, c }
-
-
func abc(
-  a: String,  // comment
-  bcd: String // comment
-) {
-}
-
-
-
func abc(
-  a: String,
-  bcd: String
-) {
-}
-
-
-
#imageLiteral(resourceName: "foo,bar,baz")
-
-

Triggering Examples

-
func abc(a: String↓ ,b: String) { }
-
-
func abc(a: String↓ ,b: String↓ ,c: String↓ ,d: String) { }
-
-
abc(a: "string"↓,b: "string"
-
-
enum a { case a↓ ,b }
-
-
let result = plus(
-    first: 3↓ , // #683
-    second: 4
-)
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/comment_spacing.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/comment_spacing.html deleted file mode 100644 index e91fd3fef..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/comment_spacing.html +++ /dev/null @@ -1,401 +0,0 @@ - - - - comment_spacing Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Comment Spacing

- -

Prefer at least one space after slashes for comments.

- -
    -
  • Identifier: comment_spacing
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
// This is a comment
-
-
/// Triple slash comment
-
-
// Multiline double-slash
-// comment
-
-
/// Multiline triple-slash
-/// comment
-
-
/// Multiline triple-slash
-///   - This is indented
-
-
// - MARK: Mark comment
-
-
//: Swift Playground prose section
-
-
///////////////////////////////////////////////
-// Comment with some lines of slashes boxing it
-///////////////////////////////////////////////
-
-
//:#localized(key: "SwiftPlaygroundLocalizedProse")
-
-
/* Asterisk comment */
-
-
/*
-    Multiline asterisk comment
-*/
-
-
/*:
-    Multiline Swift Playground prose section
-*/
-
-
/*#-editable-code Swift Platground editable area*/default/*#-end-editable-code*/
-
-

Triggering Examples

-
//↓Something
-
-
//↓MARK
-
-
//↓👨‍👨‍👦‍👦Something
-
-
func a() {
-    //↓This needs refactoring
-    print("Something")
-}
-//↓We should improve above function
-
-
///↓This is a comment
-
-
/// Multiline triple-slash
-///↓This line is incorrect, though
-
-
//↓- MARK: Mark comment
-
-
//:↓Swift Playground prose section
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/compiler_protocol_init.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/compiler_protocol_init.html deleted file mode 100644 index 508665f9d..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/compiler_protocol_init.html +++ /dev/null @@ -1,357 +0,0 @@ - - - - compiler_protocol_init Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Compiler Protocol Init

- -

The initializers declared in compiler protocols such as ExpressibleByArrayLiteral shouldn’t be called directly.

- -
    -
  • Identifier: compiler_protocol_init
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let set: Set<Int> = [1, 2]
-
-
-
let set = Set(array)
-
-
-

Triggering Examples

-
let set = ↓Set(arrayLiteral: 1, 2)
-
-
-
let set = ↓Set.init(arrayLiteral: 1, 2)
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/computed_accessors_order.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/computed_accessors_order.html deleted file mode 100644 index c170a3da1..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/computed_accessors_order.html +++ /dev/null @@ -1,542 +0,0 @@ - - - - computed_accessors_order Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Computed Accessors Order

- -

Getter and setters in computed properties and subscripts should be in a consistent order.

- -
    -
  • Identifier: computed_accessors_order
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, order: get_set
  • -
-

Non Triggering Examples

-
class Foo {
-    var foo: Int {
-        get { return 3 }
-        set { _abc = newValue }
-    }
-}
-
-
class Foo {
-    var foo: Int {
-        return 20
-    }
-}
-
-
class Foo {
-    static var foo: Int {
-        return 20
-    }
-}
-
-
class Foo {
-    static var foo: Int {
-        get { return 3 }
-        set { _abc = newValue }
-    }
-}
-
-
class Foo {
-    var foo: Int
-}
-
-
class Foo {
-    var foo: Int {
-        return getValueFromDisk()
-    }
-}
-
-
class Foo {
-    var foo: String {
-        return "get"
-    }
-}
-
-
protocol Foo {
-    var foo: Int { get }
-
-
protocol Foo {
-    var foo: Int { get set }
-}
-
-
protocol Foo {
-    var foo: Int { set get }
-
-
class Foo {
-    var foo: Int {
-        struct Bar {
-            var bar: Int {
-                get { return 1 }
-                set { _ = newValue }
-            }
-        }
-
-        return Bar().bar
-    }
-}
-
-
var _objCTaggedPointerBits: UInt {
-    @inline(__always) get { return 0 }
-    set { print(newValue) }
-}
-
-
var next: Int? {
-    mutating get {
-        defer { self.count += 1 }
-        return self.count
-    }
-    set {
-        self.count = newValue
-    }
-}
-
-
extension Foo {
-    var bar: Bool {
-        get { _bar }
-        set { self._bar = newValue }
-    }
-}
-
-
extension Foo {
-    var bar: Bool {
-        get { _bar }
-        set(newValue) { self._bar = newValue }
-    }
-}
-
-
extension Reactive where Base: UITapGestureRecognizer {
-    var tapped: CocoaAction<Base>? {
-        get {
-            return associatedAction.withValue { $0.flatMap { $0.action } }
-        }
-        nonmutating set {
-            setAction(newValue)
-        }
-    }
-}
-
-
extension Test {
-    var foo: Bool {
-        get {
-            bar?.boolValue ?? true // Comment mentioning word set which triggers violation
-        }
-        set {
-            bar = NSNumber(value: newValue as Bool)
-        }
-    }
-}
-
-
class Foo {
-    subscript(i: Int) -> Int {
-        return 20
-    }
-}
-
-
class Foo {
-    subscript(i: Int) -> Int {
-        get { return 3 }
-        set { _abc = newValue }
-    }
-}
-
-
protocol Foo {
-    subscript(i: Int) -> Int { get }
-}
-
-
protocol Foo {
-    subscript(i: Int) -> Int { get set }
-}
-
-
protocol Foo {
-    subscript(i: Int) -> Int { set get }
-}
-
-

Triggering Examples

-
class Foo {
-    var foo: Int {
-        ↓set {
-            print(newValue)
-        }
-        get {
-            return 20
-        }
-    }
-}
-
-
class Foo {
-    static var foo: Int {
-        ↓set {
-            print(newValue)
-        }
-        get {
-            return 20
-        }
-    }
-}
-
-
var foo: Int {
-    ↓set { print(newValue) }
-    get { return 20 }
-}
-
-
extension Foo {
-    var bar: Bool {
-        ↓set { print(bar) }
-        get { _bar }
-    }
-}
-
-
class Foo {
-    var foo: Int {
-        ↓set {
-            print(newValue)
-        }
-        mutating get {
-            return 20
-        }
-    }
-}
-
-
class Foo {
-    subscript(i: Int) -> Int {
-        ↓set {
-            print(i)
-        }
-        get {
-            return 20
-        }
-    }
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/conditional_returns_on_newline.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/conditional_returns_on_newline.html deleted file mode 100644 index 83bada3fa..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/conditional_returns_on_newline.html +++ /dev/null @@ -1,379 +0,0 @@ - - - - conditional_returns_on_newline Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Conditional Returns on Newline

- -

Conditional statements should always return on the next line

- -
    -
  • Identifier: conditional_returns_on_newline
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, if_only: false
  • -
-

Non Triggering Examples

-
guard true else {
- return true
-}
-
-
guard true,
- let x = true else {
- return true
-}
-
-
if true else {
- return true
-}
-
-
if true,
- let x = true else {
- return true
-}
-
-
if textField.returnKeyType == .Next {
-
-
if true { // return }
-
-
/*if true { */ return }
-
-

Triggering Examples

-
↓guard true else { return }
-
-
↓if true { return }
-
-
↓if true { break } else { return }
-
-
↓if true { break } else {       return }
-
-
↓if true { return "YES" } else { return "NO" }
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/contains_over_filter_count.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/contains_over_filter_count.html deleted file mode 100644 index 0f7a1fb10..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/contains_over_filter_count.html +++ /dev/null @@ -1,408 +0,0 @@ - - - - contains_over_filter_count Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Contains Over Filter Count

- -

Prefer contains over comparing filter(where:).count to 0.

- -
    -
  • Identifier: contains_over_filter_count
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let result = myList.filter(where: { $0 % 2 == 0 }).count > 1
-
-
-
let result = myList.filter { $0 % 2 == 0 }.count > 1
-
-
-
let result = myList.filter(where: { $0 % 2 == 0 }).count > 01
-
-
-
let result = myList.filter(where: { $0 % 2 == 0 }).count == 1
-
-
-
let result = myList.filter { $0 % 2 == 0 }.count == 1
-
-
-
let result = myList.filter(where: { $0 % 2 == 0 }).count == 01
-
-
-
let result = myList.filter(where: { $0 % 2 == 0 }).count != 1
-
-
-
let result = myList.filter { $0 % 2 == 0 }.count != 1
-
-
-
let result = myList.filter(where: { $0 % 2 == 0 }).count != 01
-
-
-
let result = myList.contains(where: { $0 % 2 == 0 })
-
-
-
let result = !myList.contains(where: { $0 % 2 == 0 })
-
-
-
let result = myList.contains(10)
-
-
-

Triggering Examples

-
let result = ↓myList.filter(where: { $0 % 2 == 0 }).count > 0
-
-
-
let result = ↓myList.filter { $0 % 2 == 0 }.count > 0
-
-
-
let result = ↓myList.filter(where: someFunction).count > 0
-
-
-
let result = ↓myList.filter(where: { $0 % 2 == 0 }).count == 0
-
-
-
let result = ↓myList.filter { $0 % 2 == 0 }.count == 0
-
-
-
let result = ↓myList.filter(where: someFunction).count == 0
-
-
-
let result = ↓myList.filter(where: { $0 % 2 == 0 }).count != 0
-
-
-
let result = ↓myList.filter { $0 % 2 == 0 }.count != 0
-
-
-
let result = ↓myList.filter(where: someFunction).count != 0
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/contains_over_filter_is_empty.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/contains_over_filter_is_empty.html deleted file mode 100644 index 8f3a602bc..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/contains_over_filter_is_empty.html +++ /dev/null @@ -1,384 +0,0 @@ - - - - contains_over_filter_is_empty Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Contains Over Filter Is Empty

- -

Prefer contains over using filter(where:).isEmpty

- -
    -
  • Identifier: contains_over_filter_is_empty
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let result = myList.filter(where: { $0 % 2 == 0 }).count > 1
-
-
-
let result = myList.filter { $0 % 2 == 0 }.count > 1
-
-
-
let result = myList.filter(where: { $0 % 2 == 0 }).count == 1
-
-
-
let result = myList.filter { $0 % 2 == 0 }.count == 1
-
-
-
let result = myList.filter(where: { $0 % 2 == 0 }).count != 1
-
-
-
let result = myList.filter { $0 % 2 == 0 }.count != 1
-
-
-
let result = myList.contains(where: { $0 % 2 == 0 })
-
-
-
let result = !myList.contains(where: { $0 % 2 == 0 })
-
-
-
let result = myList.contains(10)
-
-
-

Triggering Examples

-
let result = ↓myList.filter(where: { $0 % 2 == 0 }).isEmpty
-
-
-
let result = !↓myList.filter(where: { $0 % 2 == 0 }).isEmpty
-
-
-
let result = ↓myList.filter { $0 % 2 == 0 }.isEmpty
-
-
-
let result = ↓myList.filter(where: someFunction).isEmpty
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/contains_over_first_not_nil.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/contains_over_first_not_nil.html deleted file mode 100644 index 2b03bf21c..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/contains_over_first_not_nil.html +++ /dev/null @@ -1,429 +0,0 @@ - - - - contains_over_first_not_nil Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Contains over first not nil

- -

Prefer contains over first(where:) != nil and firstIndex(where:) != nil.

- -
    -
  • Identifier: contains_over_first_not_nil
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let first = myList.first(where: { $0 % 2 == 0 })
-
-
-
let first = myList.first { $0 % 2 == 0 }
-
-
-
let firstIndex = myList.firstIndex(where: { $0 % 2 == 0 })
-
-
-
let firstIndex = myList.firstIndex { $0 % 2 == 0 }
-
-
-

Triggering Examples

-
↓myList.first { $0 % 2 == 0 } != nil
-
-
-
↓myList.first(where: { $0 % 2 == 0 }) != nil
-
-
-
↓myList.map { $0 + 1 }.first(where: { $0 % 2 == 0 }) != nil
-
-
-
↓myList.first(where: someFunction) != nil
-
-
-
↓myList.map { $0 + 1 }.first { $0 % 2 == 0 } != nil
-
-
-
(↓myList.first { $0 % 2 == 0 }) != nil
-
-
-
↓myList.first { $0 % 2 == 0 } == nil
-
-
-
↓myList.first(where: { $0 % 2 == 0 }) == nil
-
-
-
↓myList.map { $0 + 1 }.first(where: { $0 % 2 == 0 }) == nil
-
-
-
↓myList.first(where: someFunction) == nil
-
-
-
↓myList.map { $0 + 1 }.first { $0 % 2 == 0 } == nil
-
-
-
(↓myList.first { $0 % 2 == 0 }) == nil
-
-
-
↓myList.firstIndex { $0 % 2 == 0 } != nil
-
-
-
↓myList.firstIndex(where: { $0 % 2 == 0 }) != nil
-
-
-
↓myList.map { $0 + 1 }.firstIndex(where: { $0 % 2 == 0 }) != nil
-
-
-
↓myList.firstIndex(where: someFunction) != nil
-
-
-
↓myList.map { $0 + 1 }.firstIndex { $0 % 2 == 0 } != nil
-
-
-
(↓myList.firstIndex { $0 % 2 == 0 }) != nil
-
-
-
↓myList.firstIndex { $0 % 2 == 0 } == nil
-
-
-
↓myList.firstIndex(where: { $0 % 2 == 0 }) == nil
-
-
-
↓myList.map { $0 + 1 }.firstIndex(where: { $0 % 2 == 0 }) == nil
-
-
-
↓myList.firstIndex(where: someFunction) == nil
-
-
-
↓myList.map { $0 + 1 }.firstIndex { $0 % 2 == 0 } == nil
-
-
-
(↓myList.firstIndex { $0 % 2 == 0 }) == nil
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/contains_over_range_nil_comparison.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/contains_over_range_nil_comparison.html deleted file mode 100644 index 318b245f2..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/contains_over_range_nil_comparison.html +++ /dev/null @@ -1,357 +0,0 @@ - - - - contains_over_range_nil_comparison Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Contains over range(of:) comparison to nil

- -

Prefer contains over range(of:) != nil and range(of:) == nil.

- -
    -
  • Identifier: contains_over_range_nil_comparison
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let range = myString.range(of: "Test")
-
-
myString.contains("Test")
-
-
!myString.contains("Test")
-
-
resourceString.range(of: rule.regex, options: .regularExpression) != nil
-
-

Triggering Examples

-
↓myString.range(of: "Test") != nil
-
-
↓myString.range(of: "Test") == nil
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/control_statement.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/control_statement.html deleted file mode 100644 index 9ecda8e4b..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/control_statement.html +++ /dev/null @@ -1,460 +0,0 @@ - - - - control_statement Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Control Statement

- -

if, for, guard, switch, while, and catch statements shouldn’t unnecessarily wrap their conditionals or arguments in parentheses.

- -
    -
  • Identifier: control_statement
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
if condition {
-
-
-
if (a, b) == (0, 1) {
-
-
-
if (a || b) && (c || d) {
-
-
-
if (min...max).contains(value) {
-
-
-
if renderGif(data) {
-
-
-
renderGif(data)
-
-
-
for item in collection {
-
-
-
for (key, value) in dictionary {
-
-
-
for (index, value) in enumerate(array) {
-
-
-
for var index = 0; index < 42; index++ {
-
-
-
guard condition else {
-
-
-
while condition {
-
-
-
} while condition {
-
-
-
do { ; } while condition {
-
-
-
switch foo {
-
-
-
do {
-} catch let error as NSError {
-}
-
-
foo().catch(all: true) {}
-
-
if max(a, b) < c {
-
-
-
switch (lhs, rhs) {
-
-
-

Triggering Examples

-
↓if (condition) {
-
-
-
↓if(condition) {
-
-
-
↓if (condition == endIndex) {
-
-
-
↓if ((a || b) && (c || d)) {
-
-
-
↓if ((min...max).contains(value)) {
-
-
-
↓for (item in collection) {
-
-
-
↓for (var index = 0; index < 42; index++) {
-
-
-
↓for(item in collection) {
-
-
-
↓for(var index = 0; index < 42; index++) {
-
-
-
↓guard (condition) else {
-
-
-
↓while (condition) {
-
-
-
↓while(condition) {
-
-
-
} ↓while (condition) {
-
-
-
} ↓while(condition) {
-
-
-
do { ; } ↓while(condition) {
-
-
-
do { ; } ↓while (condition) {
-
-
-
↓switch (foo) {
-
-
-
do {
-} ↓catch(let error as NSError) {
-}
-
-
↓if (max(a, b) < c) {
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/convenience_type.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/convenience_type.html deleted file mode 100644 index 2958c7694..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/convenience_type.html +++ /dev/null @@ -1,418 +0,0 @@ - - - - convenience_type Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Convenience Type

- -

Types used for hosting only static members should be implemented as a caseless enum to avoid instantiation.

- -
    -
  • Identifier: convenience_type
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
enum Math { // enum
-  public static let pi = 3.14
-}
-
-
// class with inheritance
-class MathViewController: UIViewController {
-  public static let pi = 3.14
-}
-
-
@objc class Math: NSObject { // class visible to Obj-C
-  public static let pi = 3.14
-}
-
-
struct Math { // type with non-static declarations
-  public static let pi = 3.14
-  public let randomNumber = 2
-}
-
-
class DummyClass {}
-
-
class Foo: NSObject { // class with Obj-C class property
-    class @objc let foo = 1
-}
-
-
class Foo: NSObject { // class with Obj-C static property
-    static @objc let foo = 1
-}
-
-
class Foo { // @objc class func can't exist on an enum
-   @objc class func foo() {}
-}
-
-
class Foo { // @objc static func can't exist on an enum
-   @objc static func foo() {}
-}
-
-
final class Foo { // final class, but @objc class func can't exist on an enum
-   @objc class func foo() {}
-}
-
-
final class Foo { // final class, but @objc static func can't exist on an enum
-   @objc static func foo() {}
-}
-
-
@globalActor actor MyActor {
-  static let shared = MyActor()
-}
-
-

Triggering Examples

-
↓struct Math {
-  public static let pi = 3.14
-}
-
-
↓struct Math {
-  public static let pi = 3.14
-  @available(*, unavailable) init() {}
-}
-
-
final ↓class Foo { // final class can't be inherited
-    class let foo = 1
-}
-
-
↓class Foo {
-    class let foo = 1
-}
-
-
↓class Foo {
-    final class let foo = 1
-}
-
-
↓class SomeClass {
-    static func foo() {}
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/css/highlight.css b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/css/highlight.css deleted file mode 100644 index d0db0e13b..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/css/highlight.css +++ /dev/null @@ -1,200 +0,0 @@ -/* Credit to https://gist.github.com/wataru420/2048287 */ -.highlight { - /* Comment */ - /* Error */ - /* Keyword */ - /* Operator */ - /* Comment.Multiline */ - /* Comment.Preproc */ - /* Comment.Single */ - /* Comment.Special */ - /* Generic.Deleted */ - /* Generic.Deleted.Specific */ - /* Generic.Emph */ - /* Generic.Error */ - /* Generic.Heading */ - /* Generic.Inserted */ - /* Generic.Inserted.Specific */ - /* Generic.Output */ - /* Generic.Prompt */ - /* Generic.Strong */ - /* Generic.Subheading */ - /* Generic.Traceback */ - /* Keyword.Constant */ - /* Keyword.Declaration */ - /* Keyword.Pseudo */ - /* Keyword.Reserved */ - /* Keyword.Type */ - /* Literal.Number */ - /* Literal.String */ - /* Name.Attribute */ - /* Name.Builtin */ - /* Name.Class */ - /* Name.Constant */ - /* Name.Entity */ - /* Name.Exception */ - /* Name.Function */ - /* Name.Namespace */ - /* Name.Tag */ - /* Name.Variable */ - /* Operator.Word */ - /* Text.Whitespace */ - /* Literal.Number.Float */ - /* Literal.Number.Hex */ - /* Literal.Number.Integer */ - /* Literal.Number.Oct */ - /* Literal.String.Backtick */ - /* Literal.String.Char */ - /* Literal.String.Doc */ - /* Literal.String.Double */ - /* Literal.String.Escape */ - /* Literal.String.Heredoc */ - /* Literal.String.Interpol */ - /* Literal.String.Other */ - /* Literal.String.Regex */ - /* Literal.String.Single */ - /* Literal.String.Symbol */ - /* Name.Builtin.Pseudo */ - /* Name.Variable.Class */ - /* Name.Variable.Global */ - /* Name.Variable.Instance */ - /* Literal.Number.Integer.Long */ } - .highlight .c { - color: #999988; - font-style: italic; } - .highlight .err { - color: #a61717; - background-color: #e3d2d2; } - .highlight .k { - color: #000000; - font-weight: bold; } - .highlight .o { - color: #000000; - font-weight: bold; } - .highlight .cm { - color: #999988; - font-style: italic; } - .highlight .cp { - color: #999999; - font-weight: bold; } - .highlight .c1 { - color: #999988; - font-style: italic; } - .highlight .cs { - color: #999999; - font-weight: bold; - font-style: italic; } - .highlight .gd { - color: #000000; - background-color: #ffdddd; } - .highlight .gd .x { - color: #000000; - background-color: #ffaaaa; } - .highlight .ge { - color: #000000; - font-style: italic; } - .highlight .gr { - color: #aa0000; } - .highlight .gh { - color: #999999; } - .highlight .gi { - color: #000000; - background-color: #ddffdd; } - .highlight .gi .x { - color: #000000; - background-color: #aaffaa; } - .highlight .go { - color: #888888; } - .highlight .gp { - color: #555555; } - .highlight .gs { - font-weight: bold; } - .highlight .gu { - color: #aaaaaa; } - .highlight .gt { - color: #aa0000; } - .highlight .kc { - color: #000000; - font-weight: bold; } - .highlight .kd { - color: #000000; - font-weight: bold; } - .highlight .kp { - color: #000000; - font-weight: bold; } - .highlight .kr { - color: #000000; - font-weight: bold; } - .highlight .kt { - color: #445588; } - .highlight .m { - color: #009999; } - .highlight .s { - color: #d14; } - .highlight .na { - color: #008080; } - .highlight .nb { - color: #0086B3; } - .highlight .nc { - color: #445588; - font-weight: bold; } - .highlight .no { - color: #008080; } - .highlight .ni { - color: #800080; } - .highlight .ne { - color: #990000; - font-weight: bold; } - .highlight .nf { - color: #990000; } - .highlight .nn { - color: #555555; } - .highlight .nt { - color: #000080; } - .highlight .nv { - color: #008080; } - .highlight .ow { - color: #000000; - font-weight: bold; } - .highlight .w { - color: #bbbbbb; } - .highlight .mf { - color: #009999; } - .highlight .mh { - color: #009999; } - .highlight .mi { - color: #009999; } - .highlight .mo { - color: #009999; } - .highlight .sb { - color: #d14; } - .highlight .sc { - color: #d14; } - .highlight .sd { - color: #d14; } - .highlight .s2 { - color: #d14; } - .highlight .se { - color: #d14; } - .highlight .sh { - color: #d14; } - .highlight .si { - color: #d14; } - .highlight .sx { - color: #d14; } - .highlight .sr { - color: #009926; } - .highlight .s1 { - color: #d14; } - .highlight .ss { - color: #990073; } - .highlight .bp { - color: #999999; } - .highlight .vc { - color: #008080; } - .highlight .vg { - color: #008080; } - .highlight .vi { - color: #008080; } - .highlight .il { - color: #009999; } diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/css/jazzy.css b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/css/jazzy.css deleted file mode 100644 index ff59f5f86..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/css/jazzy.css +++ /dev/null @@ -1,395 +0,0 @@ -*, *:before, *:after { - box-sizing: inherit; } - -body { - margin: 0; - background: #fff; - color: #333; - font: 16px/1.7 "Helvetica Neue", Helvetica, Arial, sans-serif; - letter-spacing: .2px; - -webkit-font-smoothing: antialiased; - box-sizing: border-box; } - -h1 { - font-size: 2rem; - font-weight: 700; - margin: 1.275em 0 0.6em; } - -h2 { - font-size: 1.75rem; - font-weight: 700; - margin: 1.275em 0 0.3em; } - -h3 { - font-size: 1.5rem; - font-weight: 700; - margin: 1em 0 0.3em; } - -h4 { - font-size: 1.25rem; - font-weight: 700; - margin: 1.275em 0 0.85em; } - -h5 { - font-size: 1rem; - font-weight: 700; - margin: 1.275em 0 0.85em; } - -h6 { - font-size: 1rem; - font-weight: 700; - margin: 1.275em 0 0.85em; - color: #777; } - -p { - margin: 0 0 1em; } - -ul, ol { - padding: 0 0 0 2em; - margin: 0 0 0.85em; } - -blockquote { - margin: 0 0 0.85em; - padding: 0 15px; - color: #858585; - border-left: 4px solid #e5e5e5; } - -img { - max-width: 100%; } - -a { - color: #4183c4; - text-decoration: none; } - a:hover, a:focus { - outline: 0; - text-decoration: underline; } - a.discouraged { - text-decoration: line-through; } - a.discouraged:hover, a.discouraged:focus { - text-decoration: underline line-through; } - -table { - background: #fff; - width: 100%; - border-collapse: collapse; - border-spacing: 0; - overflow: auto; - margin: 0 0 0.85em; } - -tr:nth-child(2n) { - background-color: #fbfbfb; } - -th, td { - padding: 6px 13px; - border: 1px solid #ddd; } - -pre { - margin: 0 0 1.275em; - padding: .85em 1em; - overflow: auto; - background: #f7f7f7; - font-size: .85em; - font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; } - -code { - font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; } - -.item-container p > code, .item-container li > code, .top-matter p > code, .top-matter li > code { - background: #f7f7f7; - padding: .2em; } - .item-container p > code:before, .item-container p > code:after, .item-container li > code:before, .item-container li > code:after, .top-matter p > code:before, .top-matter p > code:after, .top-matter li > code:before, .top-matter li > code:after { - letter-spacing: -.2em; - content: "\00a0"; } - -pre code { - padding: 0; - white-space: pre; } - -.content-wrapper { - display: flex; - flex-direction: column; } - @media (min-width: 768px) { - .content-wrapper { - flex-direction: row; } } -.header { - display: flex; - padding: 8px; - font-size: 0.875em; - background: #444; - color: #999; } - -.header-col { - margin: 0; - padding: 0 8px; } - -.header-col--primary { - flex: 1; } - -.header-link { - color: #fff; } - -.header-icon { - padding-right: 6px; - vertical-align: -4px; - height: 16px; } - -.breadcrumbs { - font-size: 0.875em; - padding: 8px 16px; - margin: 0; - background: #fbfbfb; - border-bottom: 1px solid #ddd; } - -.carat { - height: 10px; - margin: 0 5px; } - -.navigation { - order: 2; } - @media (min-width: 768px) { - .navigation { - order: 1; - width: 25%; - max-width: 300px; - padding-bottom: 64px; - overflow: hidden; - word-wrap: normal; - background: #fbfbfb; - border-right: 1px solid #ddd; } } -.nav-groups { - list-style-type: none; - padding-left: 0; } - -.nav-group-name { - border-bottom: 1px solid #ddd; - padding: 8px 0 8px 16px; } - -.nav-group-name-link { - color: #333; } - -.nav-group-tasks { - margin: 8px 0; - padding: 0 0 0 8px; } - -.nav-group-task { - font-size: 1em; - list-style-type: none; - white-space: nowrap; } - -.nav-group-task-link { - color: #808080; } - -.main-content { - order: 1; } - @media (min-width: 768px) { - .main-content { - order: 2; - flex: 1; - padding-bottom: 60px; } } -.section { - padding: 0 32px; - border-bottom: 1px solid #ddd; } - -.section-content { - max-width: 834px; - margin: 0 auto; - padding: 16px 0; } - -.section-name { - color: #666; - display: block; } - .section-name p { - margin-bottom: inherit; } - -.declaration .highlight { - overflow-x: initial; - padding: 8px 0; - margin: 0; - background-color: transparent; - border: none; } - -.task-group-section { - border-top: 1px solid #ddd; } - -.task-group { - padding-top: 0px; } - -.task-name-container a[name]:before { - content: ""; - display: block; } - -.section-name-container { - position: relative; } - .section-name-container .section-name-link { - position: absolute; - top: 0; - left: 0; - bottom: 0; - right: 0; - margin-bottom: 0; } - .section-name-container .section-name { - position: relative; - pointer-events: none; - z-index: 1; } - .section-name-container .section-name a { - pointer-events: auto; } - -.item-container { - padding: 0; } - -.item { - padding-top: 8px; - width: 100%; - list-style-type: none; } - .item a[name]:before { - content: ""; - display: block; } - .item .token, .item .direct-link { - display: inline-block; - text-indent: -20px; - padding-left: 3px; - margin-left: 20px; - font-size: 1rem; } - .item .declaration-note { - font-size: .85em; - color: #808080; - font-style: italic; } - -.pointer-container { - border-bottom: 1px solid #ddd; - left: -23px; - padding-bottom: 13px; - position: relative; - width: 110%; } - -.pointer { - left: 21px; - top: 7px; - display: block; - position: absolute; - width: 12px; - height: 12px; - border-left: 1px solid #ddd; - border-top: 1px solid #ddd; - background: #fff; - transform: rotate(45deg); } - -.height-container { - display: none; - position: relative; - width: 100%; - overflow: hidden; } - .height-container .section { - background: #fff; - border: 1px solid #ddd; - border-top-width: 0; - padding-top: 10px; - padding-bottom: 5px; - padding: 8px 16px; } - -.aside, .language { - padding: 6px 12px; - margin: 12px 0; - border-left: 5px solid #dddddd; - overflow-y: hidden; } - .aside .aside-title, .language .aside-title { - font-size: 9px; - letter-spacing: 2px; - text-transform: uppercase; - padding-bottom: 0; - margin: 0; - color: #aaa; - -webkit-user-select: none; } - .aside p:last-child, .language p:last-child { - margin-bottom: 0; } - -.language { - border-left: 5px solid #cde9f4; } - .language .aside-title { - color: #4183c4; } - -.aside-warning, .aside-deprecated, .aside-unavailable { - border-left: 5px solid #ff6666; } - .aside-warning .aside-title, .aside-deprecated .aside-title, .aside-unavailable .aside-title { - color: #ff0000; } - -.graybox { - border-collapse: collapse; - width: 100%; } - .graybox p { - margin: 0; - word-break: break-word; - min-width: 50px; } - .graybox td { - border: 1px solid #ddd; - padding: 5px 25px 5px 10px; - vertical-align: middle; } - .graybox tr td:first-of-type { - text-align: right; - padding: 7px; - vertical-align: top; - word-break: normal; - width: 40px; } - -.slightly-smaller { - font-size: 0.9em; } - -.footer { - padding: 8px 16px; - background: #444; - color: #ddd; - font-size: 0.8em; } - .footer p { - margin: 8px 0; } - .footer a { - color: #fff; } - -html.dash .header, html.dash .breadcrumbs, html.dash .navigation { - display: none; } - -html.dash .height-container { - display: block; } - -form[role=search] input { - font: 16px/1.7 "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 14px; - line-height: 24px; - padding: 0 10px; - margin: 0; - border: none; - border-radius: 1em; } - .loading form[role=search] input { - background: white url(../img/spinner.gif) center right 4px no-repeat; } - -form[role=search] .tt-menu { - margin: 0; - min-width: 300px; - background: #fbfbfb; - color: #333; - border: 1px solid #ddd; } - -form[role=search] .tt-highlight { - font-weight: bold; } - -form[role=search] .tt-suggestion { - font: 16px/1.7 "Helvetica Neue", Helvetica, Arial, sans-serif; - padding: 0 8px; } - form[role=search] .tt-suggestion span { - display: table-cell; - white-space: nowrap; } - form[role=search] .tt-suggestion .doc-parent-name { - width: 100%; - text-align: right; - font-weight: normal; - font-size: 0.9em; - padding-left: 16px; } - -form[role=search] .tt-suggestion:hover, -form[role=search] .tt-suggestion.tt-cursor { - cursor: pointer; - background-color: #4183c4; - color: #fff; } - -form[role=search] .tt-suggestion:hover .doc-parent-name, -form[role=search] .tt-suggestion.tt-cursor .doc-parent-name { - color: #fff; } diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/custom_rules.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/custom_rules.html deleted file mode 100644 index 6552c4b00..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/custom_rules.html +++ /dev/null @@ -1,343 +0,0 @@ - - - - custom_rules Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Custom Rules

- -

Create custom rules by providing a regex string. Optionally specify what syntax kinds to match against, the severity level, and what message to display.

- -
    -
  • Identifier: custom_rules
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: user-defined
  • -
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/cyclomatic_complexity.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/cyclomatic_complexity.html deleted file mode 100644 index b903e0347..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/cyclomatic_complexity.html +++ /dev/null @@ -1,396 +0,0 @@ - - - - cyclomatic_complexity Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Cyclomatic Complexity

- -

Complexity of function bodies should be limited.

- -
    -
  • Identifier: cyclomatic_complexity
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning: 10, error: 20, ignores_case_statements: false
  • -
-

Non Triggering Examples

-
func f1() {
-    if true {
-        for _ in 1..5 { }
-    }
-    if false { }
-}
-
-
func f(code: Int) -> Int {
-    switch code {
-    case 0: fallthrough
-    case 0: return 1
-    case 0: return 1
-    case 0: return 1
-    case 0: return 1
-    case 0: return 1
-    case 0: return 1
-    case 0: return 1
-    case 0: return 1
-    default: return 1
-    }
-}
-
-
func f1() {
-    if true {}; if true {}; if true {}; if true {}; if true {}; if true {}
-    func f2() {
-        if true {}; if true {}; if true {}; if true {}; if true {}
-    }
-}
-
-

Triggering Examples

-
↓func f1() {
-    if true {
-        if true {
-            if false {}
-        }
-    }
-    if false {}
-    let i = 0
-    switch i {
-        case 1: break
-        case 2: break
-        case 3: break
-        case 4: break
-        default: break
-    }
-    for _ in 1...5 {
-        guard true else {
-            return
-        }
-    }
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/deployment_target.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/deployment_target.html deleted file mode 100644 index c54c31e47..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/deployment_target.html +++ /dev/null @@ -1,395 +0,0 @@ - - - - deployment_target Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Deployment Target

- -

Availability checks or attributes shouldn’t be using older versions that are satisfied by the deployment target.

- -
    -
  • Identifier: deployment_target
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, iOS_deployment_target: 7.0, macOS_deployment_target: 10.9, watchOS_deployment_target: 1.0, tvOS_deployment_target: 9.0
  • -
-

Non Triggering Examples

-
@available(iOS 12.0, *)
-class A {}
-
-
@available(watchOS 4.0, *)
-class A {}
-
-
@available(swift 3.0.2)
-class A {}
-
-
class A {}
-
-
if #available(iOS 10.0, *) {}
-
-
if #available(iOS 10, *) {}
-
-
guard #available(iOS 12.0, *) else { return }
-
-

Triggering Examples

-
↓@available(iOS 6.0, *)
-class A {}
-
-
↓@available(iOS 7.0, *)
-class A {}
-
-
↓@available(iOS 6, *)
-class A {}
-
-
↓@available(iOS 6.0, macOS 10.12, *)
- class A {}
-
-
↓@available(macOS 10.12, iOS 6.0, *)
- class A {}
-
-
↓@available(macOS 10.7, *)
-class A {}
-
-
↓@available(OSX 10.7, *)
-class A {}
-
-
↓@available(watchOS 0.9, *)
-class A {}
-
-
↓@available(tvOS 8, *)
-class A {}
-
-
if ↓#available(iOS 6.0, *) {}
-
-
if ↓#available(iOS 6, *) {}
-
-
guard ↓#available(iOS 6.0, *) else { return }
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/discarded_notification_center_observer.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/discarded_notification_center_observer.html deleted file mode 100644 index 892fd5a9a..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/discarded_notification_center_observer.html +++ /dev/null @@ -1,387 +0,0 @@ - - - - discarded_notification_center_observer Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Discarded Notification Center Observer

- -

When registering for a notification using a block, the opaque observer that is returned should be stored so it can be removed later.

- -
    -
  • Identifier: discarded_notification_center_observer
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let foo = nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil) { }
-
-
-
let foo = nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { })
-
-
func foo() -> Any {
-   return nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { })
-}
-
-
-
var obs: [Any?] = []
-obs.append(nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { }))
-
-
-
var obs: [String: Any?] = []
-obs["foo"] = nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { })
-
-
var obs: [Any?] = []
-obs.append(nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { }))
-
-
-
func foo(_ notif: Any) {
-   obs.append(notif)
-}
-foo(nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { }))
-
-
-
var obs: [NSObjectProtocol] = [
-   nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { }),
-   nc.addObserver(forName: .CKAccountChanged, object: nil, queue: nil, using: { })
-]
-
-

Triggering Examples

-
↓nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil) { }
-
-
-
↓nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { })
-
-
-
@discardableResult func foo() -> Any {
-   return ↓nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { })
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/discouraged_assert.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/discouraged_assert.html deleted file mode 100644 index fb6cc388d..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/discouraged_assert.html +++ /dev/null @@ -1,363 +0,0 @@ - - - - discouraged_assert Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Discouraged Assert

- -

Prefer assertionFailure() and/or preconditionFailure() over assert(false)

- -
    -
  • Identifier: discouraged_assert
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
assert(true)
-
-
assert(true, "foobar")
-
-
assert(true, "foobar", file: "toto", line: 42)
-
-
assert(false || true)
-
-
XCTAssert(false)
-
-

Triggering Examples

-
↓assert(false)
-
-
↓assert(false, "foobar")
-
-
↓assert(false, "foobar", file: "toto", line: 42)
-
-
↓assert(   false    , "foobar")
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/discouraged_direct_init.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/discouraged_direct_init.html deleted file mode 100644 index f4b09fa5c..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/discouraged_direct_init.html +++ /dev/null @@ -1,377 +0,0 @@ - - - - discouraged_direct_init Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Discouraged Direct Initialization

- -

Discouraged direct initialization of types that can be harmful.

- -
    -
  • Identifier: discouraged_direct_init
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, types: [“Bundle”, “Bundle.init”, “UIDevice”, “UIDevice.init”]
  • -
-

Non Triggering Examples

-
let foo = UIDevice.current
-
-
let foo = Bundle.main
-
-
let foo = Bundle(path: "bar")
-
-
let foo = Bundle(identifier: "bar")
-
-
let foo = Bundle.init(path: "bar")
-
-
let foo = Bundle.init(identifier: "bar")
-
-

Triggering Examples

-
↓UIDevice()
-
-
↓Bundle()
-
-
let foo = ↓UIDevice()
-
-
let foo = ↓Bundle()
-
-
let foo = bar(bundle: ↓Bundle(), device: ↓UIDevice())
-
-
↓UIDevice.init()
-
-
↓Bundle.init()
-
-
let foo = ↓UIDevice.init()
-
-
let foo = ↓Bundle.init()
-
-
let foo = bar(bundle: ↓Bundle.init(), device: ↓UIDevice.init())
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/discouraged_none_name.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/discouraged_none_name.html deleted file mode 100644 index d4bf1779f..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/discouraged_none_name.html +++ /dev/null @@ -1,473 +0,0 @@ - - - - discouraged_none_name Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Discouraged None Name

- -

Discourages name cases/static members none, which can conflict with Optional<T>.none.

- -
    -
  • Identifier: discouraged_none_name
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
enum MyEnum {
-    case nOne
-}
-
-
enum MyEnum {
-    case _none
-}
-
-
enum MyEnum {
-    case none_
-}
-
-
enum MyEnum {
-    case none(Any)
-}
-
-
enum MyEnum {
-    case nonenone
-}
-
-
class MyClass {
-    class var nonenone: MyClass { MyClass() }
-}
-
-
class MyClass {
-    static var nonenone = MyClass()
-}
-
-
class MyClass {
-    static let nonenone = MyClass()
-}
-
-
struct MyStruct {
-    static var nonenone = MyStruct()
-}
-
-
struct MyStruct {
-    static let nonenone = MyStruct()
-}
-
-
struct MyStruct {
-    let none = MyStruct()
-}
-
-
struct MyStruct {
-    var none = MyStruct()
-}
-
-
class MyClass {
-    let none = MyClass()
-}
-
-
class MyClass {
-    var none = MyClass()
-}
-
-

Triggering Examples

-
enum MyEnum {
-    case ↓none
-}
-
-
enum MyEnum {
-    case a, ↓none
-}
-
-
enum MyEnum {
-    case ↓none, b
-}
-
-
enum MyEnum {
-    case a, ↓none, b
-}
-
-
enum MyEnum {
-    case a
-    case ↓none
-}
-
-
enum MyEnum {
-    case ↓none
-    case b
-}
-
-
enum MyEnum {
-    case a
-    case ↓none
-    case b
-}
-
-
class MyClass {
-    ↓static let none = MyClass()
-}
-
-
class MyClass {
-    ↓static let none: MyClass = MyClass()
-}
-
-
class MyClass {
-    ↓static var none: MyClass = MyClass()
-}
-
-
class MyClass {
-    ↓class var none: MyClass { MyClass() }
-}
-
-
struct MyStruct {
-    ↓static var none = MyStruct()
-}
-
-
struct MyStruct {
-    ↓static var none: MyStruct = MyStruct()
-}
-
-
struct MyStruct {
-    ↓static var none = MyStruct()
-}
-
-
struct MyStruct {
-    ↓static var none: MyStruct = MyStruct()
-}
-
-
struct MyStruct {
-    ↓static var a = MyStruct(), none = MyStruct()
-}
-
-
struct MyStruct {
-    ↓static var none = MyStruct(), a = MyStruct()
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/discouraged_object_literal.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/discouraged_object_literal.html deleted file mode 100644 index 8e17c170f..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/discouraged_object_literal.html +++ /dev/null @@ -1,361 +0,0 @@ - - - - discouraged_object_literal Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Discouraged Object Literal

- -

Prefer initializers over object literals.

- -
    -
  • Identifier: discouraged_object_literal
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, image_literal: true, color_literal: true
  • -
-

Non Triggering Examples

-
let image = UIImage(named: aVariable)
-
-
let image = UIImage(named: "interpolated \(variable)")
-
-
let color = UIColor(red: value, green: value, blue: value, alpha: 1)
-
-
let image = NSImage(named: aVariable)
-
-
let image = NSImage(named: "interpolated \(variable)")
-
-
let color = NSColor(red: value, green: value, blue: value, alpha: 1)
-
-

Triggering Examples

-
let image = ↓#imageLiteral(resourceName: "image.jpg")
-
-
let color = ↓#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/discouraged_optional_boolean.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/discouraged_optional_boolean.html deleted file mode 100644 index a33c52247..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/discouraged_optional_boolean.html +++ /dev/null @@ -1,727 +0,0 @@ - - - - discouraged_optional_boolean Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Discouraged Optional Boolean

- -

Prefer non-optional booleans over optional booleans.

- -
    -
  • Identifier: discouraged_optional_boolean
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
var foo: Bool
-
-
var foo: [String: Bool]
-
-
var foo: [Bool]
-
-
let foo: Bool = true
-
-
let foo: Bool = false
-
-
let foo: [String: Bool] = [:]
-
-
let foo: [Bool] = []
-
-
var foo: Bool { return true }
-
-
let foo: Bool { return false }()
-
-
func foo() -> Bool {}
-
-
func foo() -> [String: Bool] {}
-
-
func foo() -> ([Bool]) -> String {}
-
-
func foo(input: Bool = true) {}
-
-
func foo(input: [String: Bool] = [:]) {}
-
-
func foo(input: [Bool] = []) {}
-
-
class Foo {
-    func foo() -> Bool {}
-}
-
-
class Foo {
-    func foo() -> [String: Bool] {}
-}
-
-
class Foo {
-    func foo() -> ([Bool]) -> String {}
-}
-
-
struct Foo {
-    func foo() -> Bool {}
-}
-
-
struct Foo {
-    func foo() -> [String: Bool] {}
-}
-
-
struct Foo {
-    func foo() -> ([Bool]) -> String {}
-}
-
-
enum Foo {
-    func foo() -> Bool {}
-}
-
-
enum Foo {
-    func foo() -> [String: Bool] {}
-}
-
-
enum Foo {
-    func foo() -> ([Bool]) -> String {}
-}
-
-
class Foo {
-    func foo(input: Bool = true) {}
-}
-
-
class Foo {
-    func foo(input: [String: Bool] = [:]) {}
-}
-
-
class Foo {
-    func foo(input: [Bool] = []) {}
-}
-
-
struct Foo {
-    func foo(input: Bool = true) {}
-}
-
-
struct Foo {
-    func foo(input: [String: Bool] = [:]) {}
-}
-
-
struct Foo {
-    func foo(input: [Bool] = []) {}
-}
-
-
enum Foo {
-    func foo(input: Bool = true) {}
-}
-
-
enum Foo {
-    func foo(input: [String: Bool] = [:]) {}
-}
-
-
enum Foo {
-    func foo(input: [Bool] = []) {}
-}
-
-

Triggering Examples

-
var foo: ↓Bool?
-
-
var foo: [String: ↓Bool?]
-
-
var foo: [↓Bool?]
-
-
let foo: ↓Bool? = nil
-
-
let foo: [String: ↓Bool?] = [:]
-
-
let foo: [↓Bool?] = []
-
-
let foo = ↓Optional.some(false)
-
-
let foo = ↓Optional.some(true)
-
-
var foo: ↓Bool? { return nil }
-
-
let foo: ↓Bool? { return nil }()
-
-
func foo() -> ↓Bool? {}
-
-
func foo() -> [String: ↓Bool?] {}
-
-
func foo() -> [↓Bool?] {}
-
-
static func foo() -> ↓Bool? {}
-
-
static func foo() -> [String: ↓Bool?] {}
-
-
static func foo() -> [↓Bool?] {}
-
-
func foo() -> (↓Bool?) -> String {}
-
-
func foo() -> ([Int]) -> ↓Bool? {}
-
-
func foo(input: ↓Bool?) {}
-
-
func foo(input: [String: ↓Bool?]) {}
-
-
func foo(input: [↓Bool?]) {}
-
-
static func foo(input: ↓Bool?) {}
-
-
static func foo(input: [String: ↓Bool?]) {}
-
-
static func foo(input: [↓Bool?]) {}
-
-
class Foo {
-    var foo: ↓Bool?
-}
-
-
class Foo {
-    var foo: [String: ↓Bool?]
-}
-
-
class Foo {
-    let foo: ↓Bool? = nil
-}
-
-
class Foo {
-    let foo: [String: ↓Bool?] = [:]
-}
-
-
class Foo {
-    let foo: [↓Bool?] = []
-}
-
-
struct Foo {
-    var foo: ↓Bool?
-}
-
-
struct Foo {
-    var foo: [String: ↓Bool?]
-}
-
-
struct Foo {
-    let foo: ↓Bool? = nil
-}
-
-
struct Foo {
-    let foo: [String: ↓Bool?] = [:]
-}
-
-
struct Foo {
-    let foo: [↓Bool?] = []
-}
-
-
class Foo {
-    var foo: ↓Bool? { return nil }
-}
-
-
class Foo {
-    let foo: ↓Bool? { return nil }()
-}
-
-
struct Foo {
-    var foo: ↓Bool? { return nil }
-}
-
-
struct Foo {
-    let foo: ↓Bool? { return nil }()
-}
-
-
enum Foo {
-    var foo: ↓Bool? { return nil }
-}
-
-
enum Foo {
-    let foo: ↓Bool? { return nil }()
-}
-
-
class Foo {
-    func foo() -> ↓Bool? {}
-}
-
-
class Foo {
-    func foo() -> [String: ↓Bool?] {}
-}
-
-
class Foo {
-    func foo() -> [↓Bool?] {}
-}
-
-
class Foo {
-    static func foo() -> ↓Bool? {}
-}
-
-
class Foo {
-    static func foo() -> [String: ↓Bool?] {}
-}
-
-
class Foo {
-    static func foo() -> [↓Bool?] {}
-}
-
-
class Foo {
-    func foo() -> (↓Bool?) -> String {}
-}
-
-
class Foo {
-    func foo() -> ([Int]) -> ↓Bool? {}
-}
-
-
struct Foo {
-    func foo() -> ↓Bool? {}
-}
-
-
struct Foo {
-    func foo() -> [String: ↓Bool?] {}
-}
-
-
struct Foo {
-    func foo() -> [↓Bool?] {}
-}
-
-
struct Foo {
-    static func foo() -> ↓Bool? {}
-}
-
-
struct Foo {
-    static func foo() -> [String: ↓Bool?] {}
-}
-
-
struct Foo {
-    static func foo() -> [↓Bool?] {}
-}
-
-
struct Foo {
-    func foo() -> (↓Bool?) -> String {}
-}
-
-
struct Foo {
-    func foo() -> ([Int]) -> ↓Bool? {}
-}
-
-
enum Foo {
-    func foo() -> ↓Bool? {}
-}
-
-
enum Foo {
-    func foo() -> [String: ↓Bool?] {}
-}
-
-
enum Foo {
-    func foo() -> [↓Bool?] {}
-}
-
-
enum Foo {
-    static func foo() -> ↓Bool? {}
-}
-
-
enum Foo {
-    static func foo() -> [String: ↓Bool?] {}
-}
-
-
enum Foo {
-    static func foo() -> [↓Bool?] {}
-}
-
-
enum Foo {
-    func foo() -> (↓Bool?) -> String {}
-}
-
-
enum Foo {
-    func foo() -> ([Int]) -> ↓Bool? {}
-}
-
-
class Foo {
-    func foo(input: ↓Bool?) {}
-}
-
-
class Foo {
-    func foo(input: [String: ↓Bool?]) {}
-}
-
-
class Foo {
-    func foo(input: [↓Bool?]) {}
-}
-
-
class Foo {
-    static func foo(input: ↓Bool?) {}
-}
-
-
class Foo {
-    static func foo(input: [String: ↓Bool?]) {}
-}
-
-
class Foo {
-    static func foo(input: [↓Bool?]) {}
-}
-
-
struct Foo {
-    func foo(input: ↓Bool?) {}
-}
-
-
struct Foo {
-    func foo(input: [String: ↓Bool?]) {}
-}
-
-
struct Foo {
-    func foo(input: [↓Bool?]) {}
-}
-
-
struct Foo {
-    static func foo(input: ↓Bool?) {}
-}
-
-
struct Foo {
-    static func foo(input: [String: ↓Bool?]) {}
-}
-
-
struct Foo {
-    static func foo(input: [↓Bool?]) {}
-}
-
-
enum Foo {
-    func foo(input: ↓Bool?) {}
-}
-
-
enum Foo {
-    func foo(input: [String: ↓Bool?]) {}
-}
-
-
enum Foo {
-    func foo(input: [↓Bool?]) {}
-}
-
-
enum Foo {
-    static func foo(input: ↓Bool?) {}
-}
-
-
enum Foo {
-    static func foo(input: [String: ↓Bool?]) {}
-}
-
-
enum Foo {
-    static func foo(input: [↓Bool?]) {}
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/discouraged_optional_collection.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/discouraged_optional_collection.html deleted file mode 100644 index c13a79701..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/discouraged_optional_collection.html +++ /dev/null @@ -1,909 +0,0 @@ - - - - discouraged_optional_collection Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Discouraged Optional Collection

- -

Prefer empty collection over optional collection.

- -
    -
  • Identifier: discouraged_optional_collection
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
var foo: [Int]
-
-
var foo: [String: Int]
-
-
var foo: Set<String>
-
-
var foo: [String: [String: Int]]
-
-
let foo: [Int] = []
-
-
let foo: [String: Int] = [:]
-
-
let foo: Set<String> = []
-
-
let foo: [String: [String: Int]] = [:]
-
-
var foo: [Int] { return [] }
-
-
func foo() -> [Int] {}
-
-
func foo() -> [String: String] {}
-
-
func foo() -> Set<Int> {}
-
-
func foo() -> ([Int]) -> String {}
-
-
func foo(input: [String] = []) {}
-
-
func foo(input: [String: String] = [:]) {}
-
-
func foo(input: Set<String> = []) {}
-
-
class Foo {
-    func foo() -> [Int] {}
-}
-
-
class Foo {
-    func foo() -> [String: String] {}
-}
-
-
class Foo {
-    func foo() -> Set<Int> {}
-}
-
-
class Foo {
-    func foo() -> ([Int]) -> String {}
-}
-
-
struct Foo {
-    func foo() -> [Int] {}
-}
-
-
struct Foo {
-    func foo() -> [String: String] {}
-}
-
-
struct Foo {
-    func foo() -> Set<Int> {}
-}
-
-
struct Foo {
-    func foo() -> ([Int]) -> String {}
-}
-
-
enum Foo {
-    func foo() -> [Int] {}
-}
-
-
enum Foo {
-    func foo() -> [String: String] {}
-}
-
-
enum Foo {
-    func foo() -> Set<Int> {}
-}
-
-
enum Foo {
-    func foo() -> ([Int]) -> String {}
-}
-
-
class Foo {
-    func foo(input: [String] = []) {}
-}
-
-
class Foo {
-    func foo(input: [String: String] = [:]) {}
-}
-
-
class Foo {
-    func foo(input: Set<String> = []) {}
-}
-
-
struct Foo {
-    func foo(input: [String] = []) {}
-}
-
-
struct Foo {
-    func foo(input: [String: String] = [:]) {}
-}
-
-
struct Foo {
-    func foo(input: Set<String> = []) {}
-}
-
-
enum Foo {
-    func foo(input: [String] = []) {}
-}
-
-
enum Foo {
-    func foo(input: [String: String] = [:]) {}
-}
-
-
enum Foo {
-    func foo(input: Set<String> = []) {}
-}
-
-

Triggering Examples

-
↓var foo: [Int]?
-
-
↓var foo: [String: Int]?
-
-
↓var foo: Set<String>?
-
-
↓let foo: [Int]? = nil
-
-
↓let foo: [String: Int]? = nil
-
-
↓let foo: Set<String>? = nil
-
-
↓var foo: [Int]? { return nil }
-
-
↓let foo: [Int]? { return nil }()
-
-
func ↓foo() -> [T]? {}
-
-
func ↓foo() -> [String: String]? {}
-
-
func ↓foo() -> [String: [String: String]]? {}
-
-
func ↓foo() -> [String: [String: String]?] {}
-
-
func ↓foo() -> Set<Int>? {}
-
-
static func ↓foo() -> [T]? {}
-
-
static func ↓foo() -> [String: String]? {}
-
-
static func ↓foo() -> [String: [String: String]]? {}
-
-
static func ↓foo() -> [String: [String: String]?] {}
-
-
static func ↓foo() -> Set<Int>? {}
-
-
func ↓foo() -> ([Int]?) -> String {}
-
-
func ↓foo() -> ([Int]) -> [String]? {}
-
-
func foo(↓input: [String: String]?) {}
-
-
func foo(↓input: [String: [String: String]]?) {}
-
-
func foo(↓input: [String: [String: String]?]) {}
-
-
func foo(↓↓input: [String: [String: String]?]?) {}
-
-
func foo<K, V>(_ dict1: [K: V], ↓_ dict2: [K: V]?) -> [K: V]
-
-
func foo<K, V>(dict1: [K: V], ↓dict2: [K: V]?) -> [K: V]
-
-
static func foo(↓input: [String: String]?) {}
-
-
static func foo(↓input: [String: [String: String]]?) {}
-
-
static func foo(↓input: [String: [String: String]?]) {}
-
-
static func foo(↓↓input: [String: [String: String]?]?) {}
-
-
static func foo<K, V>(_ dict1: [K: V], ↓_ dict2: [K: V]?) -> [K: V]
-
-
static func foo<K, V>(dict1: [K: V], ↓dict2: [K: V]?) -> [K: V]
-
-
class Foo {
-    ↓var foo: [Int]?
-}
-
-
class Foo {
-    ↓var foo: [String: Int]?
-}
-
-
class Foo {
-    ↓var foo: Set<String>?
-}
-
-
class Foo {
-    ↓let foo: [Int]? = nil
-}
-
-
class Foo {
-    ↓let foo: [String: Int]? = nil
-}
-
-
class Foo {
-    ↓let foo: Set<String>? = nil
-}
-
-
struct Foo {
-    ↓var foo: [Int]?
-}
-
-
struct Foo {
-    ↓var foo: [String: Int]?
-}
-
-
struct Foo {
-    ↓var foo: Set<String>?
-}
-
-
struct Foo {
-    ↓let foo: [Int]? = nil
-}
-
-
struct Foo {
-    ↓let foo: [String: Int]? = nil
-}
-
-
struct Foo {
-    ↓let foo: Set<String>? = nil
-}
-
-
class Foo {
-    ↓var foo: [Int]? { return nil }
-}
-
-
class Foo {
-    ↓let foo: [Int]? { return nil }()
-}
-
-
class Foo {
-    ↓var foo: Set<String>? { return nil }
-}
-
-
class Foo {
-    ↓let foo: Set<String>? { return nil }()
-}
-
-
struct Foo {
-    ↓var foo: [Int]? { return nil }
-}
-
-
struct Foo {
-    ↓let foo: [Int]? { return nil }()
-}
-
-
struct Foo {
-    ↓var foo: Set<String>? { return nil }
-}
-
-
struct Foo {
-    ↓let foo: Set<String>? { return nil }()
-}
-
-
enum Foo {
-    ↓var foo: [Int]? { return nil }
-}
-
-
enum Foo {
-    ↓let foo: [Int]? { return nil }()
-}
-
-
enum Foo {
-    ↓var foo: Set<String>? { return nil }
-}
-
-
enum Foo {
-    ↓let foo: Set<String>? { return nil }()
-}
-
-
class Foo {
-    func ↓foo() -> [T]? {}
-}
-
-
class Foo {
-    func ↓foo() -> [String: String]? {}
-}
-
-
class Foo {
-    func ↓foo() -> [String: [String: String]]? {}
-}
-
-
class Foo {
-    func ↓foo() -> [String: [String: String]?] {}
-}
-
-
class Foo {
-    func ↓foo() -> Set<Int>? {}
-}
-
-
class Foo {
-    static func ↓foo() -> [T]? {}
-}
-
-
class Foo {
-    static func ↓foo() -> [String: String]? {}
-}
-
-
class Foo {
-    static func ↓foo() -> [String: [String: String]]? {}
-}
-
-
class Foo {
-    static func ↓foo() -> [String: [String: String]?] {}
-}
-
-
class Foo {
-    static func ↓foo() -> Set<Int>? {}
-}
-
-
class Foo {
-    func ↓foo() -> ([Int]?) -> String {}
-}
-
-
class Foo {
-    func ↓foo() -> ([Int]) -> [String]? {}
-}
-
-
struct Foo {
-    func ↓foo() -> [T]? {}
-}
-
-
struct Foo {
-    func ↓foo() -> [String: String]? {}
-}
-
-
struct Foo {
-    func ↓foo() -> [String: [String: String]]? {}
-}
-
-
struct Foo {
-    func ↓foo() -> [String: [String: String]?] {}
-}
-
-
struct Foo {
-    func ↓foo() -> Set<Int>? {}
-}
-
-
struct Foo {
-    static func ↓foo() -> [T]? {}
-}
-
-
struct Foo {
-    static func ↓foo() -> [String: String]? {}
-}
-
-
struct Foo {
-    static func ↓foo() -> [String: [String: String]]? {}
-}
-
-
struct Foo {
-    static func ↓foo() -> [String: [String: String]?] {}
-}
-
-
struct Foo {
-    static func ↓foo() -> Set<Int>? {}
-}
-
-
struct Foo {
-    func ↓foo() -> ([Int]?) -> String {}
-}
-
-
struct Foo {
-    func ↓foo() -> ([Int]) -> [String]? {}
-}
-
-
enum Foo {
-    func ↓foo() -> [T]? {}
-}
-
-
enum Foo {
-    func ↓foo() -> [String: String]? {}
-}
-
-
enum Foo {
-    func ↓foo() -> [String: [String: String]]? {}
-}
-
-
enum Foo {
-    func ↓foo() -> [String: [String: String]?] {}
-}
-
-
enum Foo {
-    func ↓foo() -> Set<Int>? {}
-}
-
-
enum Foo {
-    static func ↓foo() -> [T]? {}
-}
-
-
enum Foo {
-    static func ↓foo() -> [String: String]? {}
-}
-
-
enum Foo {
-    static func ↓foo() -> [String: [String: String]]? {}
-}
-
-
enum Foo {
-    static func ↓foo() -> [String: [String: String]?] {}
-}
-
-
enum Foo {
-    static func ↓foo() -> Set<Int>? {}
-}
-
-
enum Foo {
-    func ↓foo() -> ([Int]?) -> String {}
-}
-
-
enum Foo {
-    func ↓foo() -> ([Int]) -> [String]? {}
-}
-
-
class Foo {
-    func foo(↓input: [String: String]?) {}
-}
-
-
class Foo {
-    func foo(↓input: [String: [String: String]]?) {}
-}
-
-
class Foo {
-    func foo(↓input: [String: [String: String]?]) {}
-}
-
-
class Foo {
-    func foo(↓↓input: [String: [String: String]?]?) {}
-}
-
-
class Foo {
-    func foo<K, V>(_ dict1: [K: V], ↓_ dict2: [K: V]?) -> [K: V]
-}
-
-
class Foo {
-    func foo<K, V>(dict1: [K: V], ↓dict2: [K: V]?) -> [K: V]
-}
-
-
class Foo {
-    static func foo(↓input: [String: String]?) {}
-}
-
-
class Foo {
-    static func foo(↓input: [String: [String: String]]?) {}
-}
-
-
class Foo {
-    static func foo(↓input: [String: [String: String]?]) {}
-}
-
-
class Foo {
-    static func foo(↓↓input: [String: [String: String]?]?) {}
-}
-
-
class Foo {
-    static func foo<K, V>(_ dict1: [K: V], ↓_ dict2: [K: V]?) -> [K: V]
-}
-
-
class Foo {
-    static func foo<K, V>(dict1: [K: V], ↓dict2: [K: V]?) -> [K: V]
-}
-
-
struct Foo {
-    func foo(↓input: [String: String]?) {}
-}
-
-
struct Foo {
-    func foo(↓input: [String: [String: String]]?) {}
-}
-
-
struct Foo {
-    func foo(↓input: [String: [String: String]?]) {}
-}
-
-
struct Foo {
-    func foo(↓↓input: [String: [String: String]?]?) {}
-}
-
-
struct Foo {
-    func foo<K, V>(_ dict1: [K: V], ↓_ dict2: [K: V]?) -> [K: V]
-}
-
-
struct Foo {
-    func foo<K, V>(dict1: [K: V], ↓dict2: [K: V]?) -> [K: V]
-}
-
-
struct Foo {
-    static func foo(↓input: [String: String]?) {}
-}
-
-
struct Foo {
-    static func foo(↓input: [String: [String: String]]?) {}
-}
-
-
struct Foo {
-    static func foo(↓input: [String: [String: String]?]) {}
-}
-
-
struct Foo {
-    static func foo(↓↓input: [String: [String: String]?]?) {}
-}
-
-
struct Foo {
-    static func foo<K, V>(_ dict1: [K: V], ↓_ dict2: [K: V]?) -> [K: V]
-}
-
-
struct Foo {
-    static func foo<K, V>(dict1: [K: V], ↓dict2: [K: V]?) -> [K: V]
-}
-
-
enum Foo {
-    func foo(↓input: [String: String]?) {}
-}
-
-
enum Foo {
-    func foo(↓input: [String: [String: String]]?) {}
-}
-
-
enum Foo {
-    func foo(↓input: [String: [String: String]?]) {}
-}
-
-
enum Foo {
-    func foo(↓↓input: [String: [String: String]?]?) {}
-}
-
-
enum Foo {
-    func foo<K, V>(_ dict1: [K: V], ↓_ dict2: [K: V]?) -> [K: V]
-}
-
-
enum Foo {
-    func foo<K, V>(dict1: [K: V], ↓dict2: [K: V]?) -> [K: V]
-}
-
-
enum Foo {
-    static func foo(↓input: [String: String]?) {}
-}
-
-
enum Foo {
-    static func foo(↓input: [String: [String: String]]?) {}
-}
-
-
enum Foo {
-    static func foo(↓input: [String: [String: String]?]) {}
-}
-
-
enum Foo {
-    static func foo(↓↓input: [String: [String: String]?]?) {}
-}
-
-
enum Foo {
-    static func foo<K, V>(_ dict1: [K: V], ↓_ dict2: [K: V]?) -> [K: V]
-}
-
-
enum Foo {
-    static func foo<K, V>(dict1: [K: V], ↓dict2: [K: V]?) -> [K: V]
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/duplicate_enum_cases.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/duplicate_enum_cases.html deleted file mode 100644 index 4f40e334e..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/duplicate_enum_cases.html +++ /dev/null @@ -1,363 +0,0 @@ - - - - duplicate_enum_cases Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Duplicate Enum Cases

- -

Enum can’t contain multiple cases with the same name.

- -
    -
  • Identifier: duplicate_enum_cases
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: error
  • -
-

Non Triggering Examples

-
enum PictureImport {
-    case addImage(image: UIImage)
-    case addData(data: Data)
-}
-
-
enum A {
-    case add(image: UIImage)
-}
-enum B {
-    case add(image: UIImage)
-}
-
-

Triggering Examples

-
enum PictureImport {
-    case ↓add(image: UIImage)
-    case addURL(url: URL)
-    case ↓add(data: Data)
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/duplicate_imports.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/duplicate_imports.html deleted file mode 100644 index fc27a0705..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/duplicate_imports.html +++ /dev/null @@ -1,473 +0,0 @@ - - - - duplicate_imports Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Duplicate Imports

- -

Imports should be unique.

- -
    -
  • Identifier: duplicate_imports
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
import A
-import B
-import C
-
-
import A.B
-import A.C
-
-
@_implementationOnly import A
-@_implementationOnly import B
-
-
@testable import A
-@testable import B
-
-
#if DEBUG
-    @testable import KsApi
-#else
-    import KsApi
-#endif
-
-
import A // module
-import B // module
-
-
#if TEST
-func test() {
-}
-
-

Triggering Examples

-
import Foundation
-import Dispatch
-↓import Foundation
-
-
import Foundation
-↓import Foundation.NSString
-
-
@_implementationOnly import A
-@_implementationOnly import A
-
-
@testable import A
-@testable import A
-
-
↓import Foundation.NSString
-import Foundation
-
-
↓import A.B.C
-import A.B
-
-
import A.B
-↓import A.B.C
-
-
import A
-#if DEBUG
-    @testable import KsApi
-#else
-    import KsApi
-#endif
-↓import A
-
-
import A
-↓import typealias A.Foo
-
-
import A
-↓import struct A.Foo
-
-
import A
-↓import class A.Foo
-
-
import A
-↓import enum A.Foo
-
-
import A
-↓import protocol A.Foo
-
-
import A
-↓import let A.Foo
-
-
import A
-↓import var A.Foo
-
-
import A
-↓import func A.Foo
-
-
import A
-↓import typealias A.B.Foo
-
-
import A
-↓import struct A.B.Foo
-
-
import A
-↓import class A.B.Foo
-
-
import A
-↓import enum A.B.Foo
-
-
import A
-↓import protocol A.B.Foo
-
-
import A
-↓import let A.B.Foo
-
-
import A
-↓import var A.B.Foo
-
-
import A
-↓import func A.B.Foo
-
-
import A.B
-↓import typealias A.B.Foo
-
-
import A.B
-↓import struct A.B.Foo
-
-
import A.B
-↓import class A.B.Foo
-
-
import A.B
-↓import enum A.B.Foo
-
-
import A.B
-↓import protocol A.B.Foo
-
-
import A.B
-↓import let A.B.Foo
-
-
import A.B
-↓import var A.B.Foo
-
-
import A.B
-↓import func A.B.Foo
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/duplicated_key_in_dictionary_literal.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/duplicated_key_in_dictionary_literal.html deleted file mode 100644 index 26b57aca6..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/duplicated_key_in_dictionary_literal.html +++ /dev/null @@ -1,389 +0,0 @@ - - - - duplicated_key_in_dictionary_literal Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Duplicated Key in Dictionary Literal

- -

Dictionary literals with duplicated keys will crash in runtime.

- -
    -
  • Identifier: duplicated_key_in_dictionary_literal
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
    [
-        1: "1",
-        2: "2"
-    ]
-
-
    [
-        "1": 1,
-        "2": 2
-    ]
-
-
    [
-        foo: "1",
-        bar: "2"
-    ]
-
-

Triggering Examples

-
    [
-        1: "1",
-        2: "2",
-        ↓1: "one"
-    ]
-
-
    [
-        "1": 1,
-        "2": 2,
-        ↓"2": 2
-    ]
-
-
    [
-        foo: "1",
-        bar: "2",
-        baz: "3",
-        ↓foo: "4",
-        zaz: "5"
-    ]
-
-
    [
-        .one: "1",
-        .two: "2",
-        .three: "3",
-        ↓.one: "1",
-        .four: "4",
-        .five: "5"
-    ]
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/dynamic_inline.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/dynamic_inline.html deleted file mode 100644 index 255c75f4d..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/dynamic_inline.html +++ /dev/null @@ -1,377 +0,0 @@ - - - - dynamic_inline Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Dynamic Inline

- -

Avoid using ‘dynamic’ and ‘@inline(__always)’ together.

- -
    -
  • Identifier: dynamic_inline
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: error
  • -
-

Non Triggering Examples

-
class C {
-dynamic func f() {}}
-
-
class C {
-@inline(__always) func f() {}}
-
-
class C {
-@inline(never) dynamic func f() {}}
-
-

Triggering Examples

-
class C {
-@inline(__always) dynamic ↓func f() {}
-}
-
-
class C {
-@inline(__always) public dynamic ↓func f() {}
-}
-
-
class C {
-@inline(__always) dynamic internal ↓func f() {}
-}
-
-
class C {
-@inline(__always)
-dynamic ↓func f() {}
-}
-
-
class C {
-@inline(__always)
-dynamic
-↓func f() {}
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/empty_collection_literal.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/empty_collection_literal.html deleted file mode 100644 index 5d4460ab7..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/empty_collection_literal.html +++ /dev/null @@ -1,369 +0,0 @@ - - - - empty_collection_literal Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Empty Collection Literal

- -

Prefer checking isEmpty over comparing collection to an empty array or dictionary literal.

- -
    -
  • Identifier: empty_collection_literal
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
myArray = []
-
-
myArray.isEmpty
-
-
!myArray.isEmpty
-
-
myDict = [:]
-
-

Triggering Examples

-
myArray↓ == []
-
-
myArray↓ != []
-
-
myArray↓ == [ ]
-
-
myDict↓ == [:]
-
-
myDict↓ != [:]
-
-
myDict↓ == [: ]
-
-
myDict↓ == [ :]
-
-
myDict↓ == [ : ]
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/empty_count.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/empty_count.html deleted file mode 100644 index a746eb51f..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/empty_count.html +++ /dev/null @@ -1,396 +0,0 @@ - - - - empty_count Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Empty Count

- -

Prefer checking isEmpty over comparing count to zero.

- -
    -
  • Identifier: empty_count
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: error, only_after_dot: false
  • -
-

Non Triggering Examples

-
var count = 0
-
-
-
[Int]().isEmpty
-
-
-
[Int]().count > 1
-
-
-
[Int]().count == 1
-
-
-
[Int]().count == 0xff
-
-
-
[Int]().count == 0b01
-
-
-
[Int]().count == 0o07
-
-
-
discount == 0
-
-
-
order.discount == 0
-
-
-

Triggering Examples

-
[Int]().↓count == 0
-
-
-
[Int]().↓count > 0
-
-
-
[Int]().↓count != 0
-
-
-
[Int]().↓count == 0x0
-
-
-
[Int]().↓count == 0x00_00
-
-
-
[Int]().↓count == 0b00
-
-
-
[Int]().↓count == 0o00
-
-
-
↓count == 0
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/empty_enum_arguments.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/empty_enum_arguments.html deleted file mode 100644 index 9fcd09cd9..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/empty_enum_arguments.html +++ /dev/null @@ -1,434 +0,0 @@ - - - - empty_enum_arguments Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Empty Enum Arguments

- -

Arguments can be omitted when matching enums with associated values if they are not used.

- -
    -
  • Identifier: empty_enum_arguments
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
switch foo {
-case .bar: break
-}
-
-
switch foo {
-case .bar(let x): break
-}
-
-
switch foo {
-case let .bar(x): break
-}
-
-
switch (foo, bar) {
-case (_, _): break
-}
-
-
switch foo {
-case "bar".uppercased(): break
-}
-
-
switch (foo, bar) {
-case (_, _) where !something: break
-}
-
-
switch foo {
-case (let f as () -> String)?: break
-}
-
-
switch foo {
-default: break
-}
-
-
if case .bar = foo {
-}
-
-
guard case .bar = foo else {
-}
-
-
if foo == .bar() {}
-
-
guard foo == .bar() else { return }
-
-
if case .appStore = self.appInstaller, !UIDevice.isSimulator() {
-    viewController.present(self, animated: false)
-} else {
-    UIApplication.shared.open(self.appInstaller.url)
-}
-
-

Triggering Examples

-
switch foo {
-case .bar↓(_): break
-}
-
-
switch foo {
-case .bar↓(): break
-}
-
-
switch foo {
-case .bar↓(_), .bar2↓(_): break
-}
-
-
switch foo {
-case .bar↓() where method() > 2: break
-}
-
-
func example(foo: Foo) {
-    switch foo {
-    case case .bar↓(_):
-        break
-    }
-}
-
-
if case .bar↓(_) = foo {
-}
-
-
guard case .bar↓(_) = foo else {
-}
-
-
if case .bar↓() = foo {
-}
-
-
guard case .bar↓() = foo else {
-}
-
-
if case .appStore↓(_) = self.appInstaller, !UIDevice.isSimulator() {
-    viewController.present(self, animated: false)
-} else {
-    UIApplication.shared.open(self.appInstaller.url)
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/empty_parameters.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/empty_parameters.html deleted file mode 100644 index e1edb556b..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/empty_parameters.html +++ /dev/null @@ -1,375 +0,0 @@ - - - - empty_parameters Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Empty Parameters

- -

Prefer () -> over Void ->.

- -
    -
  • Identifier: empty_parameters
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let abc: () -> Void = {}
-
-
-
func foo(completion: () -> Void)
-
-
-
func foo(completion: () thows -> Void)
-
-
-
let foo: (ConfigurationTests) -> Void throws -> Void)
-
-
-
let foo: (ConfigurationTests) ->   Void throws -> Void)
-
-
-
let foo: (ConfigurationTests) ->Void throws -> Void)
-
-
-

Triggering Examples

-
let abc: ↓(Void) -> Void = {}
-
-
-
func foo(completion: ↓(Void) -> Void)
-
-
-
func foo(completion: ↓(Void) throws -> Void)
-
-
-
let foo: ↓(Void) -> () throws -> Void)
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/empty_parentheses_with_trailing_closure.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/empty_parentheses_with_trailing_closure.html deleted file mode 100644 index ee4eb4861..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/empty_parentheses_with_trailing_closure.html +++ /dev/null @@ -1,388 +0,0 @@ - - - - empty_parentheses_with_trailing_closure Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Empty Parentheses with Trailing Closure

- -

When using trailing closures, empty parentheses should be avoided after the method call.

- -
    -
  • Identifier: empty_parentheses_with_trailing_closure
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
[1, 2].map { $0 + 1 }
-
-
-
[1, 2].map({ $0 + 1 })
-
-
-
[1, 2].reduce(0) { $0 + $1 }
-
-
[1, 2].map { number in
- number + 1 
-}
-
-
-
let isEmpty = [1, 2].isEmpty()
-
-
-
UIView.animateWithDuration(0.3, animations: {
-   self.disableInteractionRightView.alpha = 0
-}, completion: { _ in
-   ()
-})
-
-

Triggering Examples

-
[1, 2].map↓() { $0 + 1 }
-
-
-
[1, 2].map↓( ) { $0 + 1 }
-
-
-
[1, 2].map↓() { number in
- number + 1 
-}
-
-
-
[1, 2].map↓(  ) { number in
- number + 1 
-}
-
-
-
func foo() -> [Int] {
-    return [1, 2].map↓() { $0 + 1 }
-}
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/empty_string.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/empty_string.html deleted file mode 100644 index 23f3f7d4c..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/empty_string.html +++ /dev/null @@ -1,357 +0,0 @@ - - - - empty_string Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Empty String

- -

Prefer checking isEmpty over comparing string to an empty string literal.

- -
    -
  • Identifier: empty_string
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
myString.isEmpty
-
-
!myString.isEmpty
-
-
"""
-foo==
-"""
-
-

Triggering Examples

-
myString↓ == ""
-
-
myString↓ != ""
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/empty_xctest_method.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/empty_xctest_method.html deleted file mode 100644 index 91dd10e06..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/empty_xctest_method.html +++ /dev/null @@ -1,468 +0,0 @@ - - - - empty_xctest_method Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Empty XCTest Method

- -

Empty XCTest method should be avoided.

- -
    -
  • Identifier: empty_xctest_method
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class TotoTests: XCTestCase {
-    var foobar: Foobar?
-
-    override func setUp() {
-        super.setUp()
-        foobar = Foobar()
-    }
-
-    override func tearDown() {
-        foobar = nil
-        super.tearDown()
-    }
-
-    func testFoo() {
-        XCTAssertTrue(foobar?.foo)
-    }
-
-    func testBar() {
-        // comment...
-
-        XCTAssertFalse(foobar?.bar)
-
-        // comment...
-    }
-}
-
-
class Foobar {
-    func setUp() {}
-
-    func tearDown() {}
-
-    func testFoo() {}
-}
-
-
class TotoTests: XCTestCase {
-    func setUp(with object: Foobar) {}
-
-    func tearDown(object: Foobar) {}
-
-    func testFoo(_ foo: Foobar) {}
-
-    func testBar(bar: (String) -> Int) {}
-}
-
-
class TotoTests: XCTestCase {
-    func testFoo() { XCTAssertTrue(foobar?.foo) }
-
-    func testBar() { XCTAssertFalse(foobar?.bar) }
-}
-
-

Triggering Examples

-
class TotoTests: XCTestCase {
-    override ↓func setUp() {
-    }
-
-    override ↓func tearDown() {
-
-    }
-
-    ↓func testFoo() {
-
-
-    }
-
-    ↓func testBar() {
-
-
-
-    }
-
-    func helperFunction() {
-    }
-}
-
-
class TotoTests: XCTestCase {
-    override ↓func setUp() {}
-
-    override ↓func tearDown() {}
-
-    ↓func testFoo() {}
-
-    func helperFunction() {}
-}
-
-
class TotoTests: XCTestCase {
-    override ↓func setUp() {
-        // comment...
-    }
-
-    override ↓func tearDown() {
-        // comment...
-        // comment...
-    }
-
-    ↓func testFoo() {
-        // comment...
-
-        // comment...
-
-        // comment...
-    }
-
-    ↓func testBar() {
-        /*
-         * comment...
-         *
-         * comment...
-         *
-         * comment...
-         */
-    }
-
-    func helperFunction() {
-    }
-}
-
-
class FooTests: XCTestCase {
-    override ↓func setUp() {}
-}
-
-class BarTests: XCTestCase {
-    ↓func testFoo() {}
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/enum_case_associated_values_count.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/enum_case_associated_values_count.html deleted file mode 100644 index 28a0c751b..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/enum_case_associated_values_count.html +++ /dev/null @@ -1,363 +0,0 @@ - - - - enum_case_associated_values_count Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Enum Case Associated Values Count

- -

Number of associated values in an enum case should be low

- -
    -
  • Identifier: enum_case_associated_values_count
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning: 5, error: 6
  • -
-

Non Triggering Examples

-
enum Employee {
-    case fullTime(name: String, retirement: Date, designation: String, contactNumber: Int)
-    case partTime(name: String, age: Int, contractEndDate: Date)
-}
-
-
enum Barcode {
-    case upc(Int, Int, Int, Int)
-}
-
-

Triggering Examples

-
enum Employee {
-    case ↓fullTime(name: String, retirement: Date, age: Int, designation: String, contactNumber: Int)
-    case ↓partTime(name: String, contractEndDate: Date, age: Int, designation: String, contactNumber: Int)
-}
-
-
enum Barcode {
-    case ↓upc(Int, Int, Int, Int, Int, Int)
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/expiring_todo.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/expiring_todo.html deleted file mode 100644 index ce752b262..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/expiring_todo.html +++ /dev/null @@ -1,384 +0,0 @@ - - - - expiring_todo Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

ExpiringTodo

- -

TODOs and FIXMEs should be resolved prior to their expiry date.

- -
    -
  • Identifier: expiring_todo
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: (approaching_expiry_severity) warning, (reached_or_passed_expiry_severity) error
  • -
-

Non Triggering Examples

-
// notaTODO:
-
-
-
// notaFIXME:
-
-
-
// TODO: [12/31/9999]
-
-
-
// TODO(note)
-
-
-
// FIXME(note)
-
-
-
/* FIXME: */
-
-
-
/* TODO: */
-
-
-
/** FIXME: */
-
-
-
/** TODO: */
-
-
-

Triggering Examples

-
// TODO: [10/14/2019]
-
-
-
// FIXME: [10/14/2019]
-
-
-
// FIXME: [1/14/2019]
-
-
-
// FIXME: [10/4/2019]
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/explicit_acl.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/explicit_acl.html deleted file mode 100644 index ce0eedb9b..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/explicit_acl.html +++ /dev/null @@ -1,437 +0,0 @@ - - - - explicit_acl Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Explicit ACL

- -

All declarations should specify Access Control Level keywords explicitly.

- -
    -
  • Identifier: explicit_acl
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
internal enum A {}
-
-
-
public final class B {}
-
-
-
private struct C {}
-
-
-
internal enum A {
- internal enum B {}
-}
-
-
internal final class Foo {}
-
-
internal
-class Foo {
-  private let bar = 5
-}
-
-
internal func a() { let a =  }
-
-
-
private func a() { func innerFunction() { } }
-
-
private enum Foo { enum Bar { } }
-
-
private struct C { let d = 5 }
-
-
internal protocol A {
-  func b()
-}
-
-
internal protocol A {
-  var b: Int
-}
-
-
internal class A { deinit {} }
-
-
extension A: Equatable {}
-
-
extension A {}
-
-
extension Foo {
-    internal func bar() {}
-}
-
-
internal enum Foo {
-    case bar
-}
-
-
extension Foo {
-    public var isValid: Bool {
-        let result = true
-        return result
-    }
-}
-
-
extension Foo {
-    private var isValid: Bool {
-        get {
-            return true
-        }
-        set(newValue) {
-            print(newValue)
-        }
-    }
-}
-
-

Triggering Examples

-
↓enum A {}
-
-
-
final ↓class B {}
-
-
-
internal struct C { ↓let d = 5 }
-
-
-
public struct C { ↓let d = 5 }
-
-
-
func a() {}
-
-
-
internal let a = 0
-↓func b() {}
-
-
-
extension Foo {
-    ↓func bar() {}
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/explicit_enum_raw_value.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/explicit_enum_raw_value.html deleted file mode 100644 index 1399a4232..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/explicit_enum_raw_value.html +++ /dev/null @@ -1,391 +0,0 @@ - - - - explicit_enum_raw_value Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Explicit Enum Raw Value

- -

Enums should be explicitly assigned their raw values.

- -
    -
  • Identifier: explicit_enum_raw_value
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
enum Numbers {
-  case int(Int)
-  case short(Int16)
-}
-
-
enum Numbers: Int {
-  case one = 1
-  case two = 2
-}
-
-
enum Numbers: Double {
-  case one = 1.1
-  case two = 2.2
-}
-
-
enum Numbers: String {
-  case one = "one"
-  case two = "two"
-}
-
-
protocol Algebra {}
-enum Numbers: Algebra {
-  case one
-}
-
-

Triggering Examples

-
enum Numbers: Int {
-  case one = 10, ↓two, three = 30
-}
-
-
enum Numbers: NSInteger {
-  case ↓one
-}
-
-
enum Numbers: String {
-  case ↓one
-  case ↓two
-}
-
-
enum Numbers: String {
-   case ↓one, two = "two"
-}
-
-
enum Numbers: Decimal {
-  case ↓one, ↓two
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/explicit_init.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/explicit_init.html deleted file mode 100644 index b77cf07d7..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/explicit_init.html +++ /dev/null @@ -1,377 +0,0 @@ - - - - explicit_init Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Explicit Init

- -

Explicitly calling .init() should be avoided.

- -
    -
  • Identifier: explicit_init
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
import Foundation; class C: NSObject { override init() { super.init() }}
-
-
struct S { let n: Int }; extension S { init() { self.init(n: 1) } }
-
-
[1].flatMap(String.init)
-
-
[String.self].map { $0.init(1) }
-
-
[String.self].map { type in type.init(1) }
-
-
Observable.zip(obs1, obs2, resultSelector: MyType.init).asMaybe()
-
-
Observable.zip(
-  obs1,
-  obs2,
-  resultSelector: MyType.init
-).asMaybe()
-
-

Triggering Examples

-
[1].flatMap{String↓.init($0)}
-
-
[String.self].map { Type in Type↓.init(1) }
-
-
func foo() -> [String] {
-  return [1].flatMap { String↓.init($0) }
-}
-
-
Observable.zip(
-  obs1,
-  obs2,
-  resultSelector: { MyType.init($0, $1) }
-).asMaybe()
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/explicit_self.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/explicit_self.html deleted file mode 100644 index c962c20e6..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/explicit_self.html +++ /dev/null @@ -1,416 +0,0 @@ - - - - explicit_self Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Explicit Self

- -

Instance variables and functions should be explicitly accessed with ‘self.’.

- -
    -
  • Identifier: explicit_self
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: Yes
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
struct A {
-    func f1() {}
-    func f2() {
-        self.f1()
-    }
-}
-
-
struct A {
-    let p1: Int
-    func f1() {
-        _ = self.p1
-    }
-}
-
-
@propertyWrapper
-struct Wrapper<Value> {
-    let wrappedValue: Value
-    var projectedValue: [Value] {
-        [self.wrappedValue]
-    }
-}
-struct A {
-    @Wrapper var p1: Int
-    func f1() {
-        self.$p1
-        self._p1
-    }
-}
-func f1() {
-    A(p1: 10).$p1
-}
-
-

Triggering Examples

-
struct A {
-    func f1() {}
-    func f2() {
-        ↓f1()
-    }
-}
-
-
struct A {
-    let p1: Int
-    func f1() {
-        _ = ↓p1
-    }
-}
-
-
struct A {
-    func f1(a b: Int) {}
-    func f2() {
-        ↓f1(a: 0)
-    }
-}
-
-
@propertyWrapper
-struct Wrapper<Value> {
-    let wrappedValue: Value
-    var projectedValue: [Value] {
-        [self.wrappedValue]
-    }
-}
-struct A {
-    @Wrapper var p1: Int
-    func f1() {
-        ↓$p1
-        ↓_p1
-    }
-}
-func f1() {
-    A(p1: 10).$p1
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/explicit_top_level_acl.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/explicit_top_level_acl.html deleted file mode 100644 index 25a1c0cfb..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/explicit_top_level_acl.html +++ /dev/null @@ -1,386 +0,0 @@ - - - - explicit_top_level_acl Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Explicit Top Level ACL

- -

Top-level declarations should specify Access Control Level keywords explicitly.

- -
    -
  • Identifier: explicit_top_level_acl
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
internal enum A {}
-
-
-
public final class B {}
-
-
-
private struct C {}
-
-
-
internal enum A {
- enum B {}
-}
-
-
internal final class Foo {}
-
-
internal
-class Foo {}
-
-
internal func a() {}
-
-
-
extension A: Equatable {}
-
-
extension A {}
-
-

Triggering Examples

-
enum A {}
-
-
-
final class B {}
-
-
-
struct C {}
-
-
-
func a() {}
-
-
-
internal let a = 0
-func b() {}
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/explicit_type_interface.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/explicit_type_interface.html deleted file mode 100644 index ae54e51b5..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/explicit_type_interface.html +++ /dev/null @@ -1,385 +0,0 @@ - - - - explicit_type_interface Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Explicit Type Interface

- -

Properties should have a type interface

- -
    -
  • Identifier: explicit_type_interface
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, excluded: [], allow_redundancy: false
  • -
-

Non Triggering Examples

-
class Foo {
-  var myVar: Int? = 0
-}
-
-
class Foo {
-  let myVar: Int? = 0
-}
-
-
class Foo {
-  static var myVar: Int? = 0
-}
-
-
class Foo {
-  class var myVar: Int? = 0
-}
-
-

Triggering Examples

-
class Foo {
-  ↓var myVar = 0
-}
-
-
class Foo {
-  ↓let mylet = 0
-}
-
-
class Foo {
-  ↓static var myStaticVar = 0
-}
-
-
class Foo {
-  ↓class var myClassVar = 0
-}
-
-
class Foo {
-  ↓let myVar = Int(0)
-}
-
-
class Foo {
-  ↓let myVar = Set<Int>(0)
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/extension_access_modifier.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/extension_access_modifier.html deleted file mode 100644 index d8821ec49..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/extension_access_modifier.html +++ /dev/null @@ -1,408 +0,0 @@ - - - - extension_access_modifier Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Extension Access Modifier

- -

Prefer to use extension access modifiers

- -
    -
  • Identifier: extension_access_modifier
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
extension Foo: SomeProtocol {
-  public var bar: Int { return 1 }
-}
-
-
extension Foo {
-  private var bar: Int { return 1 }
-  public var baz: Int { return 1 }
-}
-
-
extension Foo {
-  private var bar: Int { return 1 }
-  public func baz() {}
-}
-
-
extension Foo {
-  var bar: Int { return 1 }
-  var baz: Int { return 1 }
-}
-
-
public extension Foo {
-  var bar: Int { return 1 }
-  var baz: Int { return 1 }
-}
-
-
extension Foo {
-  private bar: Int { return 1 }
-  private baz: Int { return 1 }
-}
-
-
extension Foo {
-  open bar: Int { return 1 }
-  open baz: Int { return 1 }
-}
-
-
extension Foo {
-    func setup() {}
-    public func update() {}
-}
-
-

Triggering Examples

-
↓extension Foo {
-   public var bar: Int { return 1 }
-   public var baz: Int { return 1 }
-}
-
-
↓extension Foo {
-   public var bar: Int { return 1 }
-   public func baz() {}
-}
-
-
public extension Foo {
-   public ↓func bar() {}
-   public ↓func baz() {}
-}
-
-
↓extension Foo {
-   public var bar: Int {
-      let value = 1
-      return value
-   }
-
-   public var baz: Int { return 1 }
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/fallthrough.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/fallthrough.html deleted file mode 100644 index 7e2b2fff0..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/fallthrough.html +++ /dev/null @@ -1,357 +0,0 @@ - - - - fallthrough Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Fallthrough

- -

Fallthrough should be avoided.

- -
    -
  • Identifier: fallthrough
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
switch foo {
-case .bar, .bar2, .bar3:
-  something()
-}
-
-

Triggering Examples

-
switch foo {
-case .bar:
-  ↓fallthrough
-case .bar2:
-  something()
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/fatal_error_message.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/fatal_error_message.html deleted file mode 100644 index 42547427a..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/fatal_error_message.html +++ /dev/null @@ -1,361 +0,0 @@ - - - - fatal_error_message Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Fatal Error Message

- -

A fatalError call should have a message.

- -
    -
  • Identifier: fatal_error_message
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
func foo() {
-  fatalError("Foo")
-}
-
-
func foo() {
-  fatalError(x)
-}
-
-

Triggering Examples

-
func foo() {
-  ↓fatalError("")
-}
-
-
func foo() {
-  ↓fatalError()
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/file_header.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/file_header.html deleted file mode 100644 index 9b74c4193..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/file_header.html +++ /dev/null @@ -1,366 +0,0 @@ - - - - file_header Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

File Header

- -

Header comments should be consistent with project patterns. The SWIFTLINT_CURRENT_FILENAME placeholder can optionally be used in the required and forbidden patterns. It will be replaced by the real file name.

- -
    -
  • Identifier: file_header
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, required_string: None, required_pattern: None, forbidden_string: None, forbidden_pattern: None
  • -
-

Non Triggering Examples

-
let foo = "Copyright"
-
-
let foo = 2 // Copyright
-
-
let foo = 2
- // Copyright
-
-

Triggering Examples

-
// ↓Copyright
-
-
-
//
-// ↓Copyright
-
-
//
-//  FileHeaderRule.swift
-//  SwiftLint
-//
-//  Created by Marcelo Fabri on 27/11/16.
-//  ↓Copyright © 2016 Realm. All rights reserved.
-//
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/file_length.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/file_length.html deleted file mode 100644 index 150df2141..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/file_length.html +++ /dev/null @@ -1,1957 +0,0 @@ - - - - file_length Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

File Length

- -

Files should not span too many lines.

- -
    -
  • Identifier: file_length
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning: 400, error: 1000, ignore_comment_only_lines: false
  • -
-

Non Triggering Examples

-
print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-
-
-

Triggering Examples

-
print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-
-
-
print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-//
-
-
-
print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/file_name.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/file_name.html deleted file mode 100644 index cbb21e76d..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/file_name.html +++ /dev/null @@ -1,343 +0,0 @@ - - - - file_name Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

File Name

- -

File name should match a type or extension declared in the file (if any).

- -
    -
  • Identifier: file_name
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: (severity) warning, excluded: [“LinuxMain.swift”, “main.swift”], prefix_pattern: , suffix_pattern: +.*, nested_type_separator: .
  • -
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/file_name_no_space.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/file_name_no_space.html deleted file mode 100644 index cb9c7d799..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/file_name_no_space.html +++ /dev/null @@ -1,343 +0,0 @@ - - - - file_name_no_space Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

File Name No Space

- -

File name should not contain any whitespace.

- -
    -
  • Identifier: file_name_no_space
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: (severity) warning, excluded: []
  • -
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/file_types_order.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/file_types_order.html deleted file mode 100644 index 0add043a2..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/file_types_order.html +++ /dev/null @@ -1,521 +0,0 @@ - - - - file_types_order Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

File Types Order

- -

Specifies how the types within a file should be ordered.

- -
    -
  • Identifier: file_types_order
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, order: [[SwiftLintFramework.FileType.supportingType], [SwiftLintFramework.FileType.mainType], [SwiftLintFramework.FileType.extension], [SwiftLintFramework.FileType.previewProvider]]
  • -
-

Non Triggering Examples

-
// Supporting Types
-protocol TestViewControllerDelegate {
-    func didPressTrackedButton()
-}
-
-// Main Type
-class TestViewController: UIViewController {
-    // Type Aliases
-    typealias CompletionHandler = ((TestEnum) -> Void)
-
-    // Subtypes
-    class TestClass {
-        // 10 lines
-    }
-
-    struct TestStruct {
-        // 3 lines
-    }
-
-    enum TestEnum {
-        // 5 lines
-    }
-
-    // Stored Type Properties
-    static let cellIdentifier: String = "AmazingCell"
-
-    // Stored Instance Properties
-    var shouldLayoutView1: Bool!
-    weak var delegate: TestViewControllerDelegate?
-    private var hasLayoutedView1: Bool = false
-    private var hasLayoutedView2: Bool = false
-
-    // Computed Instance Properties
-    private var hasAnyLayoutedView: Bool {
-         return hasLayoutedView1 || hasLayoutedView2
-    }
-
-    // IBOutlets
-    @IBOutlet private var view1: UIView!
-    @IBOutlet private var view2: UIView!
-
-    // Initializers
-    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
-        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
-    }
-
-    required init?(coder aDecoder: NSCoder) {
-        fatalError("init(coder:) has not been implemented")
-    }
-
-    // Type Methods
-    static func makeViewController() -> TestViewController {
-        // some code
-    }
-
-    // Life-Cycle Methods
-    override func viewDidLoad() {
-        super.viewDidLoad()
-    }
-
-    override func viewDidLayoutSubviews() {
-        super.viewDidLayoutSubviews()
-    }
-
-    // IBActions
-    @IBAction func goNextButtonPressed() {
-        goToNextVc()
-        delegate?.didPressTrackedButton()
-    }
-
-    @objc
-    func goToRandomVcButtonPressed() {
-        goToRandomVc()
-    }
-
-    // MARK: Other Methods
-    func goToNextVc() { /* TODO */ }
-
-    func goToInfoVc() { /* TODO */ }
-
-    func goToRandomVc() {
-        let viewCtrl = getRandomVc()
-        present(viewCtrl, animated: true)
-    }
-
-    private func getRandomVc() -> UIViewController { return UIViewController() }
-
-    // Subscripts
-    subscript(_ someIndexThatIsNotEvenUsed: Int) -> String {
-        get {
-            return "This is just a test"
-        }
-
-        set {
-            log.warning("Just a test", newValue)
-        }
-    }
-}
-
-// Extensions
-extension TestViewController: UITableViewDataSource {
-    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
-        return 1
-    }
-}
-
-
// Only extensions
-extension Foo {}
-extension Bar {
-}
-
-
struct ContentView: View {
-    var body: some View {
-        Text("Hello, World!")
-    }
-}
-
-struct ContentView_Previews: PreviewProvider {
-    static var previews: some View { ContentView() }
-}
-
-

Triggering Examples

-
↓class TestViewController: UIViewController {}
-
-// Supporting Types
-protocol TestViewControllerDelegate {
-    func didPressTrackedButton()
-}
-
-
// Extensions
-↓extension TestViewController: UITableViewDataSource {
-    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
-        return 1
-    }
-}
-
-class TestViewController: UIViewController {}
-
-
// Supporting Types
-protocol TestViewControllerDelegate {
-    func didPressTrackedButton()
-}
-
-↓class TestViewController: UIViewController {}
-
-// Supporting Types
-protocol TestViewControllerDelegate {
-    func didPressTrackedButton()
-}
-
-
// Supporting Types
-protocol TestViewControllerDelegate {
-    func didPressTrackedButton()
-}
-
-// Extensions
-↓extension TestViewController: UITableViewDataSource {
-    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
-        return 1
-    }
-}
-
-class TestViewController: UIViewController {}
-
-// Extensions
-extension TestViewController: UITableViewDataSource {
-    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
-        return 1
-    }
-}
-
-
// Preview Provider
-↓struct ContentView_Previews: PreviewProvider {}
-
-// Main Type
-struct ContentView: View {}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/first_where.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/first_where.html deleted file mode 100644 index 8a2764345..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/first_where.html +++ /dev/null @@ -1,385 +0,0 @@ - - - - first_where Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

First Where

- -

Prefer using .first(where:) over .filter { }.first in collections.

- -
    -
  • Identifier: first_where
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
kinds.filter(excludingKinds.contains).isEmpty && kinds.first == .identifier
-
-
-
myList.first(where: { $0 % 2 == 0 })
-
-
-
match(pattern: pattern).filter { $0.first == .identifier }
-
-
-
(myList.filter { $0 == 1 }.suffix(2)).first
-
-
-
collection.filter("stringCol = '3'").first
-
-
realm?.objects(User.self).filter(NSPredicate(format: "email ==[c] %@", email)).first
-
-
if let pause = timeTracker.pauses.filter("beginDate < %@", beginDate).first { print(pause) }
-
-

Triggering Examples

-
↓myList.filter { $0 % 2 == 0 }.first
-
-
-
↓myList.filter({ $0 % 2 == 0 }).first
-
-
-
↓myList.map { $0 + 1 }.filter({ $0 % 2 == 0 }).first
-
-
-
↓myList.map { $0 + 1 }.filter({ $0 % 2 == 0 }).first?.something()
-
-
-
↓myList.filter(someFunction).first
-
-
-
↓myList.filter({ $0 % 2 == 0 })
-.first
-
-
-
(↓myList.filter { $0 == 1 }).first
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/flatmap_over_map_reduce.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/flatmap_over_map_reduce.html deleted file mode 100644 index e7a1de0df..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/flatmap_over_map_reduce.html +++ /dev/null @@ -1,351 +0,0 @@ - - - - flatmap_over_map_reduce Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

FlatMap over map and reduce

- -

Prefer flatMap over map followed by reduce([], +).

- -
    -
  • Identifier: flatmap_over_map_reduce
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let foo = bar.map { $0.count }.reduce(0, +)
-
-
let foo = bar.flatMap { $0.array }
-
-

Triggering Examples

-
let foo = ↓bar.map { $0.array }.reduce([], +)
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/for_where.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/for_where.html deleted file mode 100644 index 99795e8f0..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/for_where.html +++ /dev/null @@ -1,393 +0,0 @@ - - - - for_where Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

For Where

- -

where clauses are preferred over a single if inside a for.

- -
    -
  • Identifier: for_where
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
for user in users where user.id == 1 { }
-
-
for user in users {
-  if let id = user.id { }
-}
-
-
for user in users {
-  if var id = user.id { }
-}
-
-
for user in users {
-  if user.id == 1 { } else { }
-}
-
-
for user in users {
-  if user.id == 1 {
-  } else if user.id == 2 { }
-}
-
-
for user in users {
-  if user.id == 1 { }
-  print(user)
-}
-
-
for user in users {
-  let id = user.id
-  if id == 1 { }
-}
-
-
for user in users {
-  if user.id == 1 { }
-  return true
-}
-
-
for user in users {
-  if user.id == 1 && user.age > 18 { }
-}
-
-
for (index, value) in array.enumerated() {
-  if case .valueB(_) = value {
-    return index
-  }
-}
-
-

Triggering Examples

-
for user in users {
-  ↓if user.id == 1 { return true }
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/force_cast.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/force_cast.html deleted file mode 100644 index d3f7f45e5..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/force_cast.html +++ /dev/null @@ -1,351 +0,0 @@ - - - - force_cast Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Force Cast

- -

Force casts should be avoided.

- -
    -
  • Identifier: force_cast
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: error
  • -
-

Non Triggering Examples

-
NSNumber() as? Int
-
-
-

Triggering Examples

-
NSNumber() ↓as! Int
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/force_try.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/force_try.html deleted file mode 100644 index 41050fa07..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/force_try.html +++ /dev/null @@ -1,353 +0,0 @@ - - - - force_try Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Force Try

- -

Force tries should be avoided.

- -
    -
  • Identifier: force_try
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: error
  • -
-

Non Triggering Examples

-
func a() throws {}
-do {
-  try a()
-} catch {}
-
-

Triggering Examples

-
func a() throws {}
-↓try! a()
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/force_unwrapping.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/force_unwrapping.html deleted file mode 100644 index 83d509b4f..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/force_unwrapping.html +++ /dev/null @@ -1,411 +0,0 @@ - - - - force_unwrapping Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Force Unwrapping

- -

Force unwrapping should be avoided.

- -
    -
  • Identifier: force_unwrapping
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
if let url = NSURL(string: query)
-
-
navigationController?.pushViewController(viewController, animated: true)
-
-
let s as! Test
-
-
try! canThrowErrors()
-
-
let object: Any!
-
-
@IBOutlet var constraints: [NSLayoutConstraint]!
-
-
setEditing(!editing, animated: true)
-
-
navigationController.setNavigationBarHidden(!navigationController.navigationBarHidden, animated: true)
-
-
if addedToPlaylist && (!self.selectedFilters.isEmpty || self.searchBar?.text?.isEmpty == false) {}
-
-
print("\(xVar)!")
-
-
var test = (!bar)
-
-
var a: [Int]!
-
-
private var myProperty: (Void -> Void)!
-
-
func foo(_ options: [AnyHashable: Any]!) {
-
-
func foo() -> [Int]!
-
-
func foo() -> [AnyHashable: Any]!
-
-
func foo() -> [Int]! { return [] }
-
-
return self
-
-

Triggering Examples

-
let url = NSURL(string: query)↓!
-
-
navigationController↓!.pushViewController(viewController, animated: true)
-
-
let unwrapped = optional↓!
-
-
return cell↓!
-
-
let url = NSURL(string: "http://www.google.com")↓!
-
-
let dict = ["Boooo": "👻"]func bla() -> String { return dict["Boooo"]↓! }
-
-
let dict = ["Boooo": "👻"]func bla() -> String { return dict["Boooo"]↓!.contains("B") }
-
-
let a = dict["abc"]↓!.contains("B")
-
-
dict["abc"]↓!.bar("B")
-
-
if dict["a"]↓!!!! {
-
-
var foo: [Bool]! = dict["abc"]↓!
-
-
context("abc") {
-  var foo: [Bool]! = dict["abc"]↓!
-}
-
-
open var computed: String { return foo.bar↓! }
-
-
return self↓!
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/function_body_length.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/function_body_length.html deleted file mode 100644 index 7cc226786..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/function_body_length.html +++ /dev/null @@ -1,343 +0,0 @@ - - - - function_body_length Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Function Body Length

- -

Functions bodies should not span too many lines.

- -
    -
  • Identifier: function_body_length
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning: 40, error: 100
  • -
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/function_default_parameter_at_end.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/function_default_parameter_at_end.html deleted file mode 100644 index 62a90a71b..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/function_default_parameter_at_end.html +++ /dev/null @@ -1,371 +0,0 @@ - - - - function_default_parameter_at_end Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Function Default Parameter at End

- -

Prefer to locate parameters with defaults toward the end of the parameter list.

- -
    -
  • Identifier: function_default_parameter_at_end
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
func foo(baz: String, bar: Int = 0) {}
-
-
func foo(x: String, y: Int = 0, z: CGFloat = 0) {}
-
-
func foo(bar: String, baz: Int = 0, z: () -> Void) {}
-
-
func foo(bar: String, z: () -> Void, baz: Int = 0) {}
-
-
func foo(bar: Int = 0) {}
-
-
func foo() {}
-
-
class A: B {
-  override func foo(bar: Int = 0, baz: String) {}
-
-
func foo(bar: Int = 0, completion: @escaping CompletionHandler) {}
-
-
func foo(a: Int, b: CGFloat = 0) {
-  let block = { (error: Error?) in }
-}
-
-
func foo(a: String, b: String? = nil,
-         c: String? = nil, d: @escaping AlertActionHandler = { _ in }) {}
-
-

Triggering Examples

-
↓func foo(bar: Int = 0, baz: String) {}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/function_parameter_count.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/function_parameter_count.html deleted file mode 100644 index 9d4908d68..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/function_parameter_count.html +++ /dev/null @@ -1,376 +0,0 @@ - - - - function_parameter_count Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Function Parameter Count

- -

Number of function parameters should be low.

- -
    -
  • Identifier: function_parameter_count
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning: 5, error: 8ignores_default_parameters: true
  • -
-

Non Triggering Examples

-
init(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-
-
init (a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-
-
`init`(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-
-
init?(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-
-
init?<T>(a: T, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-
-
init?<T: String>(a: T, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-
-
func f2(p1: Int, p2: Int) { }
-
-
func f(a: Int, b: Int, c: Int, d: Int, x: Int = 42) {}
-
-
func f(a: [Int], b: Int, c: Int, d: Int, f: Int) -> [Int] {
-    let s = a.flatMap { $0 as? [String: Int] } ?? []}}
-
-
override func f(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-
-

Triggering Examples

-
↓func f(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-
-
↓func initialValue(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-
-
↓func f(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int = 2, g: Int) {}
-
-
struct Foo {
-    init(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-    ↓func bar(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/generic_type_name.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/generic_type_name.html deleted file mode 100644 index 52f8d1f46..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/generic_type_name.html +++ /dev/null @@ -1,453 +0,0 @@ - - - - generic_type_name Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Generic Type Name

- -

Generic type name should only contain alphanumeric characters, start with an uppercase character and span between 1 and 20 characters in length.

- -
    -
  • Identifier: generic_type_name
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: (min_length) w/e: 1/0, (max_length) w/e: 20/1000, excluded: [], allowed_symbols: [], validates_start_with_lowercase: true
  • -
-

Non Triggering Examples

-
func foo<T>() {}
-
-
-
func foo<T>() -> T {}
-
-
-
func foo<T, U>(param: U) -> T {}
-
-
-
func foo<T: Hashable, U: Rule>(param: U) -> T {}
-
-
-
struct Foo<T> {}
-
-
-
class Foo<T> {}
-
-
-
enum Foo<T> {}
-
-
-
func run(_ options: NoOptions<CommandantError<()>>) {}
-
-
-
func foo(_ options: Set<type>) {}
-
-
-
func < <T: Comparable>(lhs: T?, rhs: T?) -> Bool
-
-
-
func configureWith(data: Either<MessageThread, (project: Project, backing: Backing)>)
-
-
-
typealias StringDictionary<T> = Dictionary<String, T>
-
-
-
typealias BackwardTriple<T1, T2, T3> = (T3, T2, T1)
-
-
-
typealias DictionaryOfStrings<T : Hashable> = Dictionary<T, String>
-
-
-

Triggering Examples

-
func foo<↓T_Foo>() {}
-
-
-
func foo<T, ↓U_Foo>(param: U_Foo) -> T {}
-
-
-
func foo<↓TTTTTTTTTTTTTTTTTTTTT>() {}
-
-
-
func foo<↓type>() {}
-
-
-
typealias StringDictionary<↓T_Foo> = Dictionary<String, T_Foo>
-
-
-
typealias BackwardTriple<T1, ↓T2_Bar, T3> = (T3, T2_Bar, T1)
-
-
-
typealias DictionaryOfStrings<↓T_Foo: Hashable> = Dictionary<T_Foo, String>
-
-
-
class Foo<↓T_Foo> {}
-
-
-
class Foo<T, ↓U_Foo> {}
-
-
-
class Foo<↓T_Foo, ↓U_Foo> {}
-
-
-
class Foo<↓TTTTTTTTTTTTTTTTTTTTT> {}
-
-
-
class Foo<↓type> {}
-
-
-
struct Foo<↓T_Foo> {}
-
-
-
struct Foo<T, ↓U_Foo> {}
-
-
-
struct Foo<↓T_Foo, ↓U_Foo> {}
-
-
-
struct Foo<↓TTTTTTTTTTTTTTTTTTTTT> {}
-
-
-
struct Foo<↓type> {}
-
-
-
enum Foo<↓T_Foo> {}
-
-
-
enum Foo<T, ↓U_Foo> {}
-
-
-
enum Foo<↓T_Foo, ↓U_Foo> {}
-
-
-
enum Foo<↓TTTTTTTTTTTTTTTTTTTTT> {}
-
-
-
enum Foo<↓type> {}
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/ibinspectable_in_extension.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/ibinspectable_in_extension.html deleted file mode 100644 index 47571e6b1..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/ibinspectable_in_extension.html +++ /dev/null @@ -1,353 +0,0 @@ - - - - ibinspectable_in_extension Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

IBInspectable in Extension

- -

Extensions shouldn’t add @IBInspectable properties.

- -
    -
  • Identifier: ibinspectable_in_extension
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class Foo {
-  @IBInspectable private var x: Int
-}
-
-

Triggering Examples

-
extension Foo {
-  @IBInspectable private var x: Int
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/identical_operands.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/identical_operands.html deleted file mode 100644 index 9682defd3..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/identical_operands.html +++ /dev/null @@ -1,749 +0,0 @@ - - - - identical_operands Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Identical Operands

- -

Comparing two identical operands is likely a mistake.

- -
    -
  • Identifier: identical_operands
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
1 == 2
-
-
foo == bar
-
-
prefixedFoo == foo
-
-
foo.aProperty == foo.anotherProperty
-
-
self.aProperty == self.anotherProperty
-
-
"1 == 1"
-
-
self.aProperty == aProperty
-
-
lhs.aProperty == rhs.aProperty
-
-
lhs.identifier == rhs.identifier
-
-
i == index
-
-
$0 == 0
-
-
keyValues?.count ?? 0 == 0
-
-
string == string.lowercased()
-
-
let num: Int? = 0
-_ = num != nil && num == num?.byteSwapped
-
-
num == num!.byteSwapped
-
-
1 != 2
-
-
foo != bar
-
-
prefixedFoo != foo
-
-
foo.aProperty != foo.anotherProperty
-
-
self.aProperty != self.anotherProperty
-
-
"1 != 1"
-
-
self.aProperty != aProperty
-
-
lhs.aProperty != rhs.aProperty
-
-
lhs.identifier != rhs.identifier
-
-
i != index
-
-
$0 != 0
-
-
keyValues?.count ?? 0 != 0
-
-
string != string.lowercased()
-
-
let num: Int? = 0
-_ = num != nil && num != num?.byteSwapped
-
-
num != num!.byteSwapped
-
-
1 === 2
-
-
foo === bar
-
-
prefixedFoo === foo
-
-
foo.aProperty === foo.anotherProperty
-
-
self.aProperty === self.anotherProperty
-
-
"1 === 1"
-
-
self.aProperty === aProperty
-
-
lhs.aProperty === rhs.aProperty
-
-
lhs.identifier === rhs.identifier
-
-
i === index
-
-
$0 === 0
-
-
keyValues?.count ?? 0 === 0
-
-
string === string.lowercased()
-
-
let num: Int? = 0
-_ = num != nil && num === num?.byteSwapped
-
-
num === num!.byteSwapped
-
-
1 !== 2
-
-
foo !== bar
-
-
prefixedFoo !== foo
-
-
foo.aProperty !== foo.anotherProperty
-
-
self.aProperty !== self.anotherProperty
-
-
"1 !== 1"
-
-
self.aProperty !== aProperty
-
-
lhs.aProperty !== rhs.aProperty
-
-
lhs.identifier !== rhs.identifier
-
-
i !== index
-
-
$0 !== 0
-
-
keyValues?.count ?? 0 !== 0
-
-
string !== string.lowercased()
-
-
let num: Int? = 0
-_ = num != nil && num !== num?.byteSwapped
-
-
num !== num!.byteSwapped
-
-
1 > 2
-
-
foo > bar
-
-
prefixedFoo > foo
-
-
foo.aProperty > foo.anotherProperty
-
-
self.aProperty > self.anotherProperty
-
-
"1 > 1"
-
-
self.aProperty > aProperty
-
-
lhs.aProperty > rhs.aProperty
-
-
lhs.identifier > rhs.identifier
-
-
i > index
-
-
$0 > 0
-
-
keyValues?.count ?? 0 > 0
-
-
string > string.lowercased()
-
-
let num: Int? = 0
-_ = num != nil && num > num?.byteSwapped
-
-
num > num!.byteSwapped
-
-
1 >= 2
-
-
foo >= bar
-
-
prefixedFoo >= foo
-
-
foo.aProperty >= foo.anotherProperty
-
-
self.aProperty >= self.anotherProperty
-
-
"1 >= 1"
-
-
self.aProperty >= aProperty
-
-
lhs.aProperty >= rhs.aProperty
-
-
lhs.identifier >= rhs.identifier
-
-
i >= index
-
-
$0 >= 0
-
-
keyValues?.count ?? 0 >= 0
-
-
string >= string.lowercased()
-
-
let num: Int? = 0
-_ = num != nil && num >= num?.byteSwapped
-
-
num >= num!.byteSwapped
-
-
1 < 2
-
-
foo < bar
-
-
prefixedFoo < foo
-
-
foo.aProperty < foo.anotherProperty
-
-
self.aProperty < self.anotherProperty
-
-
"1 < 1"
-
-
self.aProperty < aProperty
-
-
lhs.aProperty < rhs.aProperty
-
-
lhs.identifier < rhs.identifier
-
-
i < index
-
-
$0 < 0
-
-
keyValues?.count ?? 0 < 0
-
-
string < string.lowercased()
-
-
let num: Int? = 0
-_ = num != nil && num < num?.byteSwapped
-
-
num < num!.byteSwapped
-
-
1 <= 2
-
-
foo <= bar
-
-
prefixedFoo <= foo
-
-
foo.aProperty <= foo.anotherProperty
-
-
self.aProperty <= self.anotherProperty
-
-
"1 <= 1"
-
-
self.aProperty <= aProperty
-
-
lhs.aProperty <= rhs.aProperty
-
-
lhs.identifier <= rhs.identifier
-
-
i <= index
-
-
$0 <= 0
-
-
keyValues?.count ?? 0 <= 0
-
-
string <= string.lowercased()
-
-
let num: Int? = 0
-_ = num != nil && num <= num?.byteSwapped
-
-
num <= num!.byteSwapped
-
-
func evaluate(_ mode: CommandMode) -> Result<AutoCorrectOptions, CommandantError<CommandantError<()>>>
-
-
let array = Array<Array<Int>>()
-
-
guard Set(identifiers).count != identifiers.count else { return }
-
-
expect("foo") == "foo"
-
-
type(of: model).cachePrefix == cachePrefix
-
-
histogram[156].0 == 0x003B8D96 && histogram[156].1 == 1
-
-

Triggering Examples

-
↓1 == 1
-
-
↓foo == foo
-
-
↓foo.aProperty == foo.aProperty
-
-
↓self.aProperty == self.aProperty
-
-
↓$0 == $0
-
-
↓a?.b == a?.b
-
-
if (↓elem == elem) {}
-
-
XCTAssertTrue(↓s3 == s3)
-
-
if let tab = tabManager.selectedTab, ↓tab.webView == tab.webView
-
-
↓1 != 1
-
-
↓foo != foo
-
-
↓foo.aProperty != foo.aProperty
-
-
↓self.aProperty != self.aProperty
-
-
↓$0 != $0
-
-
↓a?.b != a?.b
-
-
if (↓elem != elem) {}
-
-
XCTAssertTrue(↓s3 != s3)
-
-
if let tab = tabManager.selectedTab, ↓tab.webView != tab.webView
-
-
↓1 === 1
-
-
↓foo === foo
-
-
↓foo.aProperty === foo.aProperty
-
-
↓self.aProperty === self.aProperty
-
-
↓$0 === $0
-
-
↓a?.b === a?.b
-
-
if (↓elem === elem) {}
-
-
XCTAssertTrue(↓s3 === s3)
-
-
if let tab = tabManager.selectedTab, ↓tab.webView === tab.webView
-
-
↓1 !== 1
-
-
↓foo !== foo
-
-
↓foo.aProperty !== foo.aProperty
-
-
↓self.aProperty !== self.aProperty
-
-
↓$0 !== $0
-
-
↓a?.b !== a?.b
-
-
if (↓elem !== elem) {}
-
-
XCTAssertTrue(↓s3 !== s3)
-
-
if let tab = tabManager.selectedTab, ↓tab.webView !== tab.webView
-
-
↓1 > 1
-
-
↓foo > foo
-
-
↓foo.aProperty > foo.aProperty
-
-
↓self.aProperty > self.aProperty
-
-
↓$0 > $0
-
-
↓a?.b > a?.b
-
-
if (↓elem > elem) {}
-
-
XCTAssertTrue(↓s3 > s3)
-
-
if let tab = tabManager.selectedTab, ↓tab.webView > tab.webView
-
-
↓1 >= 1
-
-
↓foo >= foo
-
-
↓foo.aProperty >= foo.aProperty
-
-
↓self.aProperty >= self.aProperty
-
-
↓$0 >= $0
-
-
↓a?.b >= a?.b
-
-
if (↓elem >= elem) {}
-
-
XCTAssertTrue(↓s3 >= s3)
-
-
if let tab = tabManager.selectedTab, ↓tab.webView >= tab.webView
-
-
↓1 < 1
-
-
↓foo < foo
-
-
↓foo.aProperty < foo.aProperty
-
-
↓self.aProperty < self.aProperty
-
-
↓$0 < $0
-
-
↓a?.b < a?.b
-
-
if (↓elem < elem) {}
-
-
XCTAssertTrue(↓s3 < s3)
-
-
if let tab = tabManager.selectedTab, ↓tab.webView < tab.webView
-
-
↓1 <= 1
-
-
↓foo <= foo
-
-
↓foo.aProperty <= foo.aProperty
-
-
↓self.aProperty <= self.aProperty
-
-
↓$0 <= $0
-
-
↓a?.b <= a?.b
-
-
if (↓elem <= elem) {}
-
-
XCTAssertTrue(↓s3 <= s3)
-
-
if let tab = tabManager.selectedTab, ↓tab.webView <= tab.webView
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/identifier_name.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/identifier_name.html deleted file mode 100644 index c9e6e8de1..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/identifier_name.html +++ /dev/null @@ -1,395 +0,0 @@ - - - - identifier_name Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Identifier Name

- -

Identifier names should only contain alphanumeric characters and start with a lowercase character or should only contain capital letters. In an exception to the above, variable names may start with a capital letter when they are declared static and immutable. Variable names should not be too long or too short.

- -
    -
  • Identifier: identifier_name
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: (min_length) w/e: 3/2, (max_length) w/e: 40/60, excluded: [“id”], allowed_symbols: [], validates_start_with_lowercase: true
  • -
-

Non Triggering Examples

-
let myLet = 0
-
-
var myVar = 0
-
-
private let _myLet = 0
-
-
class Abc { static let MyLet = 0 }
-
-
let URL: NSURL? = nil
-
-
let XMLString: String? = nil
-
-
override var i = 0
-
-
enum Foo { case myEnum }
-
-
func isOperator(name: String) -> Bool
-
-
func typeForKind(_ kind: SwiftDeclarationKind) -> String
-
-
func == (lhs: SyntaxToken, rhs: SyntaxToken) -> Bool
-
-
override func IsOperator(name: String) -> Bool
-
-
enum Foo { case `private` }
-
-
enum Foo { case value(String) }
-
-

Triggering Examples

-
↓let MyLet = 0
-
-
↓let _myLet = 0
-
-
private ↓let myLet_ = 0
-
-
↓let myExtremelyVeryVeryVeryVeryVeryVeryLongLet = 0
-
-
↓var myExtremelyVeryVeryVeryVeryVeryVeryLongVar = 0
-
-
private ↓let _myExtremelyVeryVeryVeryVeryVeryVeryLongLet = 0
-
-
↓let i = 0
-
-
↓var aa = 0
-
-
private ↓let _i = 0
-
-
↓func IsOperator(name: String) -> Bool
-
-
enum Foo { case ↓MyEnum }
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/img/carat.png b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/img/carat.png deleted file mode 100755 index 29d2f7fd4955fca6bc6fb740e0373a2c358c398e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 274 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRo!3HEV4DF?Wlw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6JlqAi{-jv*Ddl5#RKJQ5NTUZgiPI4RUKGIKU?u8L&ndhX1t za+0CMVUnT(Gnb}ei=c~x==tMH^F1_tBocXwcoSWoO-SZY-o>!8%^=Bms)(~h;m_U( zXNixk28L}0LS5-jKyq@#2gyS|J&f#pGCLkTc<@2s1dqeyqJ*Rc0tSIETAgmODY;(s z2y|Mcp&2}7rpBprBBB~1qM1`N+}4SoxYVPqsXi&l`rxZp{(w0iSy$Nv5*Vy!RapG^ S^0y4=eg;ohKbLh*2~7a!Pg}VF diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/img/dash.png b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/img/dash.png deleted file mode 100755 index 6f694c7a012b417908da3687a0a39aa182e91c74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1338 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 diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/implicit_getter.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/implicit_getter.html deleted file mode 100644 index 4352c9f30..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/implicit_getter.html +++ /dev/null @@ -1,555 +0,0 @@ - - - - implicit_getter Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Implicit Getter

- -

Computed read-only properties and subscripts should avoid using the get keyword.

- -
    -
  • Identifier: implicit_getter
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class Foo {
-    var foo: Int {
-        get { return 3 }
-        set { _abc = newValue }
-    }
-}
-
-
class Foo {
-    var foo: Int {
-        return 20
-    }
-}
-
-
class Foo {
-    static var foo: Int {
-        return 20
-    }
-}
-
-
class Foo {
-    static var foo: Int {
-        get { return 3 }
-        set { _abc = newValue }
-    }
-}
-
-
class Foo {
-    var foo: Int
-}
-
-
class Foo {
-    var foo: Int {
-        return getValueFromDisk()
-    }
-}
-
-
class Foo {
-    var foo: String {
-        return "get"
-    }
-}
-
-
protocol Foo {
-    var foo: Int { get }
-
-
protocol Foo {
-    var foo: Int { get set }
-}
-
-
class Foo {
-    var foo: Int {
-        struct Bar {
-            var bar: Int {
-                get { return 1 }
-                set { _ = newValue }
-            }
-        }
-
-        return Bar().bar
-    }
-}
-
-
var _objCTaggedPointerBits: UInt {
-    @inline(__always) get { return 0 }
-}
-
-
var next: Int? {
-    mutating get {
-        defer { self.count += 1 }
-        return self.count
-    }
-}
-
-
extension Foo {
-    var bar: Bool {
-        get { _bar }
-        set { self._bar = newValue }
-    }
-}
-
-
extension Foo {
-    var bar: Bool {
-        get { _bar }
-        set(newValue) { self._bar = newValue }
-    }
-}
-
-
extension Float {
-    var clamped: Float {
-        set {
-            self = min(1, max(0, newValue))
-        }
-        get {
-            min(1, max(0, self))
-        }
-    }
-}
-
-
extension Reactive where Base: UITapGestureRecognizer {
-    var tapped: CocoaAction<Base>? {
-        get {
-            return associatedAction.withValue { $0.flatMap { $0.action } }
-        }
-        nonmutating set {
-            setAction(newValue)
-        }
-    }
-}
-
-
extension Test {
-    var foo: Bool {
-        get {
-            bar?.boolValue ?? true // Comment mentioning word set which triggers violation
-        }
-        set {
-            bar = NSNumber(value: newValue as Bool)
-        }
-    }
-}
-
-
class Foo {
-    subscript(i: Int) -> Int {
-        return 20
-    }
-}
-
-
class Foo {
-    subscript(i: Int) -> Int {
-        get { return 3 }
-        set { _abc = newValue }
-    }
-}
-
-
protocol Foo {
-    subscript(i: Int) -> Int { get }
-}
-
-
protocol Foo {
-    subscript(i: Int) -> Int { get set }
-}
-
-
class DatabaseEntity {
-    var isSynced: Bool {
-        get async {
-            await database.isEntitySynced(self)
-        }
-    }
-}
-
-
struct Test {
-    subscript(value: Int) -> Int {
-        get throws {
-            if value == 0 {
-                throw NSError()
-            } else {
-                return value
-            }
-        }
-    }
-}
-
-

Triggering Examples

-
class Foo {
-    var foo: Int {
-        ↓get {
-            return 20
-        }
-    }
-}
-
-
class Foo {
-    var foo: Int {
-        ↓get{ return 20 }
-    }
-}
-
-
class Foo {
-    static var foo: Int {
-        ↓get {
-            return 20
-        }
-    }
-}
-
-
var foo: Int {
-    ↓get { return 20 }
-}
-
-
class Foo {
-    @objc func bar() {}
-    var foo: Int {
-        ↓get {
-            return 20
-        }
-    }
-}
-
-
extension Foo {
-    var bar: Bool {
-        ↓get { _bar }
-    }
-}
-
-
class Foo {
-    subscript(i: Int) -> Int {
-        ↓get {
-            return 20
-        }
-    }
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/implicit_return.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/implicit_return.html deleted file mode 100644 index f75535cee..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/implicit_return.html +++ /dev/null @@ -1,429 +0,0 @@ - - - - implicit_return Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Implicit Return

- -

Prefer implicit returns in closures, functions and getters.

- -
    -
  • Identifier: implicit_return
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, included: [closure, function, getter]
  • -
-

Non Triggering Examples

-
if foo {
-  return 0
-}
-
-
foo.map { $0 + 1 }
-
-
foo.map({ $0 + 1 })
-
-
foo.map { value in value + 1 }
-
-
[1, 2].first(where: {
-    true
-})
-
-
func foo() -> Int {
-    0
-}
-
-
class Foo {
-    func foo() -> Int { 0 }
-}
-
-
func fetch() -> Data? {
-    do {
-        return try loadData()
-    } catch {
-        return nil
-    }
-}
-
-
var foo: Bool { true }
-
-
class Foo {
-    var bar: Int {
-        get {
-            0
-        }
-    }
-}
-
-
class Foo {
-    static var bar: Int {
-        0
-    }
-}
-
-

Triggering Examples

-
foo.map { value in
-    return value + 1
-}
-
-
foo.map {
-    return $0 + 1
-}
-
-
foo.map({ return $0 + 1})
-
-
[1, 2].first(where: {
-    return true
-})
-
-
func foo() -> Int {
-    return 0
-}
-
-
class Foo {
-    func foo() -> Int { return 0 }
-}
-
-
var foo: Bool { return true }
-
-
class Foo {
-    var bar: Int {
-        get {
-            return 0
-        }
-    }
-}
-
-
class Foo {
-    static var bar: Int {
-        return 0
-    }
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/implicitly_unwrapped_optional.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/implicitly_unwrapped_optional.html deleted file mode 100644 index 25f428208..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/implicitly_unwrapped_optional.html +++ /dev/null @@ -1,379 +0,0 @@ - - - - implicitly_unwrapped_optional Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Implicitly Unwrapped Optional

- -

Implicitly unwrapped optionals should be avoided when possible.

- -
    -
  • Identifier: implicitly_unwrapped_optional
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, mode: allExceptIBOutlets
  • -
-

Non Triggering Examples

-
@IBOutlet private var label: UILabel!
-
-
@IBOutlet var label: UILabel!
-
-
@IBOutlet var label: [UILabel!]
-
-
if !boolean {}
-
-
let int: Int? = 42
-
-
let int: Int? = nil
-
-

Triggering Examples

-
let label: UILabel!
-
-
let IBOutlet: UILabel!
-
-
let labels: [UILabel!]
-
-
var ints: [Int!] = [42, nil, 42]
-
-
let label: IBOutlet!
-
-
let int: Int! = 42
-
-
let int: Int! = nil
-
-
var int: Int! = 42
-
-
let int: ImplicitlyUnwrappedOptional<Int>
-
-
let collection: AnyCollection<Int!>
-
-
func foo(int: Int!) {}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/inclusive_language.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/inclusive_language.html deleted file mode 100644 index d8e2e6168..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/inclusive_language.html +++ /dev/null @@ -1,379 +0,0 @@ - - - - inclusive_language Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Inclusive Language

- -

Identifiers should use inclusive language that avoids discrimination against groups of people based on race, gender, or socioeconomic status

- -
    -
  • Identifier: inclusive_language
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, additional_terms: [], override_terms: [], override_allowed_terms: []
  • -
-

Non Triggering Examples

-
let foo = "abc"
-
-
enum AllowList {
-    case foo, bar
-}
-
-
func updateAllowList(add: String) {}
-
-
enum WalletItemType {
-    case visa
-    case mastercard
-}
-
-
func chargeMasterCard(_ card: Card) {}
-
-

Triggering Examples

-
let ↓slave = "abc"
-
-
enum ↓BlackList {
-    case foo, bar
-}
-
-
func ↓updateWhiteList(add: String) {}
-
-
enum ListType {
-    case ↓whitelist
-    case ↓blacklist
-}
-
-
↓init(master: String, slave: String) {}
-
-
final class FooBar {
-    func register<↓Master, ↓Slave>(one: Master, two: Slave) {}
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/indentation_width.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/indentation_width.html deleted file mode 100644 index f7766dc2b..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/indentation_width.html +++ /dev/null @@ -1,383 +0,0 @@ - - - - indentation_width Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Indentation Width

- -

Indent code using either one tab or the configured amount of spaces, unindent to match previous indentations. Don’t indent the first line.

- -
    -
  • Identifier: indentation_width
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: severity: warning, indentation_width: 4, include_comments: true
  • -
-

Non Triggering Examples

-
firstLine
-secondLine
-
-
firstLine
-    secondLine
-
-
firstLine
-    secondLine
-        thirdLine
-
-        fourthLine
-
-
firstLine
-    secondLine
-        thirdLine
-//test
-        fourthLine
-
-
firstLine
-    secondLine
-        thirdLine
-fourthLine
-
-

Triggering Examples

-
    firstLine
-
-
firstLine
-        secondLine
-
-
firstLine
-    secondLine
-
-            fourthLine
-
-
firstLine
-    secondLine
-        thirdLine
- fourthLine
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/index.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/index.html deleted file mode 100644 index f6e7a2054..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/index.html +++ /dev/null @@ -1,929 +0,0 @@ - - - - SwiftLintFramework Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

SwiftLint

- -

A tool to enforce Swift style and conventions, loosely based on the now archived GitHub Swift Style Guide. SwiftLint enforces the style guide rules that are generally accepted by the Swift community. These rules are well described in popular style guides like Ray Wenderlich’s Swift Style Guide.

- -

SwiftLint hooks into Clang and -SourceKit to use the -AST representation -of your source files for more accurate results.

- -

Build Status -codecov.io

- -

- -

This project adheres to the Contributor Covenant Code of Conduct. -By participating, you are expected to uphold this code. Please report -unacceptable behavior to info@realm.io.

- -
-

Language Switch: 中文, 한국어.

-
-

Installation

-

Using Homebrew:

-
brew install swiftlint
-
-

Using CocoaPods:

- -

Simply add the following line to your Podfile:

-
pod 'SwiftLint'
-
- -

This will download the SwiftLint binaries and dependencies in Pods/ during your next -pod install execution and will allow you to invoke it via ${PODS_ROOT}/SwiftLint/swiftlint -in your Script Build Phases.

- -

This is the recommended way to install a specific version of SwiftLint since it supports -installing a pinned version rather than simply the latest (which is the case with Homebrew).

- -

Note that this will add the SwiftLint binaries, its dependencies’ binaries and the Swift binary -library distribution to the Pods/ directory, so checking in this directory to SCM such as -git is discouraged.

-

Using Mint:

-
$ mint install realm/SwiftLint
-
-

Using a pre-built package:

- -

You can also install SwiftLint by downloading SwiftLint.pkg from the -latest GitHub release and -running it.

-

Installing from source:

- -

You can also build and install from source by cloning this project and running -make install (Xcode 13 or later).

-

Usage

-

Presentation

- -

To get a high-level overview of recommended ways to integrate SwiftLint into your project, -we encourage you to watch this presentation or read the transcript:

- -

Presentation

-

Xcode

- -

Integrate SwiftLint into your Xcode project to get warnings and errors displayed -in the issue navigator.

- -

To do this select the project in the file navigator, then select the primary app -target, and go to Build Phases. Click the + and select “New Run Script Phase”. -Insert the following as the script:

- -

- -

If you installed SwiftLint via Homebrew on Apple Silicon, you might experience this warning:

- -
-

warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint

-
- -

That is because Homebrew on Apple Silicon installs the binaries into the /opt/homebrew/bin -folder by default. To instruct Xcode where to find SwiftLint, you can either add -/opt/homebrew/bin to the PATH environment variable in your build phase

-
export PATH="$PATH:/opt/homebrew/bin"
-if which swiftlint > /dev/null; then
-  swiftlint
-else
-  echo "warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint"
-fi
-
- -

or you can create a symbolic link in /usr/local/bin pointing to the actual binary:

-
ln -s /opt/homebrew/bin/swiftlint /usr/local/bin
-
- -

You might want to move your SwiftLint phase directly before the ‘Compile Sources’ -step to detect errors quickly before compiling. However, SwiftLint is designed -to run on valid Swift code that cleanly completes the compiler’s parsing stage. -So running SwiftLint before ‘Compile Sources’ might yield some incorrect -results.

- -

If you wish to fix violations as well, your script could run -swiftlint --fix && swiftlint instead of just swiftlint. This will mean -that all correctable violations are fixed, while ensuring warnings show up in -your project for remaining violations.

- -

If you’ve installed SwiftLint via CocoaPods the script should look like this:

-
"${PODS_ROOT}/SwiftLint/swiftlint"
-
-

Format on Save Xcode Plugin

- -

To run swiftlint --fix on save in Xcode, install the -SwiftLintXcode plugin from Alcatraz.

- -

⚠️This plugin will not work with Xcode 8 or later without disabling SIP. -This is not recommended.

-

AppCode

- -

To integrate SwiftLint with AppCode, install -this plugin and configure -SwiftLint’s installed path in the plugin’s preferences. -The fix action is available via ⌥⏎.

-

Atom

- -

To integrate SwiftLint with Atom, install the -linter-swiftlint package from -APM.

-

Visual Studio Code

- -

To integrate SwiftLint with vscode, install the -vscode-swiftlint extension from the marketplace.

-

fastlane

- -

You can use the official swiftlint fastlane action to run SwiftLint as part of your fastlane process.

-
swiftlint(
-    mode: :lint,                            # SwiftLint mode: :lint (default) or :autocorrect
-    executable: "Pods/SwiftLint/swiftlint", # The SwiftLint binary path (optional). Important if you've installed it via CocoaPods
-    path: "/path/to/lint",                  # Specify path to lint (optional)
-    output_file: "swiftlint.result.json",   # The path of the output file (optional)
-    reporter: "json",                       # The custom reporter to use (optional)
-    config_file: ".swiftlint-ci.yml",       # The path of the configuration file (optional)
-    files: [                                # List of files to process (optional)
-        "AppDelegate.swift",
-        "path/to/project/Model.swift"
-    ],
-    ignore_exit_status: true,               # Allow fastlane to continue even if SwiftLint returns a non-zero exit status (Default: false)
-    quiet: true,                            # Don't print status logs like 'Linting ' & 'Done linting' (Default: false)
-    strict: true                            # Fail on warnings? (Default: false)
-)
-
-

Docker

- -

swiftlint is also available as a Docker image using Ubuntu. -So just the first time you need to pull the docker image using the next command:

-
docker pull ghcr.io/realm/swiftlint:latest
-
- -

Then following times, you just run swiftlint inside of the docker like:

-
docker run -it -v `pwd`:`pwd` -w `pwd` ghcr.io/realm/swiftlint:latest
-
- -

This will execute swiftlint in the folder where you are right now (pwd), showing an output like:

-
$ docker run -it -v `pwd`:`pwd` -w `pwd` ghcr.io/realm/swiftlint:latest
-Linting Swift files in current working directory
-Linting 'RuleDocumentation.swift' (1/490)
-...
-Linting 'YamlSwiftLintTests.swift' (490/490)
-Done linting! Found 0 violations, 0 serious in 490 files.
-
- -

Here you have more documentation about the usage of Docker Images.

-

Command Line

-
$ swiftlint help
-OVERVIEW: A tool to enforce Swift style and conventions.
-
-USAGE: swiftlint <subcommand>
-
-OPTIONS:
-  --version               Show the version.
-  -h, --help              Show help information.
-
-SUBCOMMANDS:
-  analyze                 Run analysis rules
-  docs                    Open SwiftLint documentation website in the default web browser
-  generate-docs           Generates markdown documentation for all rules
-  lint (default)          Print lint warnings and errors
-  rules                   Display the list of rules and their identifiers
-  version                 Display the current version of SwiftLint
-
-  See 'swiftlint help <subcommand>' for detailed help.
-
- -

Run swiftlint in the directory containing the Swift files to lint. Directories -will be searched recursively.

- -

To specify a list of files when using lint or analyze -(like the list of files modified by Xcode specified by the -ExtraBuildPhase Xcode -plugin, or modified files in the working tree based on git ls-files -m), you -can do so by passing the option --use-script-input-files and setting the -following instance variables: SCRIPT_INPUT_FILE_COUNT and -SCRIPT_INPUT_FILE_0, SCRIPT_INPUT_FILE_1…SCRIPT_INPUT_FILE_{SCRIPT_INPUT_FILE_COUNT - 1}.

- -

These are same environment variables set for input files to -custom Xcode script phases.

-

Working With Multiple Swift Versions

- -

SwiftLint hooks into SourceKit so it continues working even as Swift evolves!

- -

This also keeps SwiftLint lean, as it doesn’t need to ship with a full Swift -compiler, it just communicates with the official one you already have installed -on your machine.

- -

You should always run SwiftLint with the same toolchain you use to compile your -code.

- -

You may want to override SwiftLint’s default Swift toolchain if you have -multiple toolchains or Xcodes installed.

- -

Here’s the order in which SwiftLint determines which Swift toolchain to use:

- -
    -
  • $XCODE_DEFAULT_TOOLCHAIN_OVERRIDE
  • -
  • $TOOLCHAIN_DIR or $TOOLCHAINS
  • -
  • xcrun -find swift
  • -
  • /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain
  • -
  • /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain
  • -
  • ~/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain
  • -
  • ~/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain
  • -
- -

sourcekitd.framework is expected to be found in the usr/lib/ subdirectory of -the value passed in the paths above.

- -

You may also set the TOOLCHAINS environment variable to the reverse-DNS -notation that identifies a Swift toolchain version:

-
$ TOOLCHAINS=com.apple.dt.toolchain.Swift_2_3 swiftlint --fix
-
- -

On Linux, SourceKit is expected to be located in -/usr/lib/libsourcekitdInProc.so or specified by the LINUX_SOURCEKIT_LIB_PATH -environment variable.

-

pre-commit

- -

SwiftLint can be run as a pre-commit hook. -Once installed, add this to the -.pre-commit-config.yaml in the root of your repository:

-
repos:
-  - repo: https://github.com/realm/SwiftLint
-    rev: 0.44.0
-    hooks:
-      - id: swiftlint
-
- -

Adjust rev to the SwiftLint version of your choice.

-

Rules

- -

Over 200 rules are included in SwiftLint and the Swift community (that’s you!) -continues to contribute more over time. -Pull requests are encouraged.

- -

You can find an updated list of rules and more information about them -here.

- -

You can also check Source/SwiftLintFramework/Rules -directory to see their implementation.

-

Opt-In Rules

- -

opt_in_rules are disabled by default (i.e., you have to explicitly enable them -in your configuration file).

- -

Guidelines on when to mark a rule as opt-in:

- -
    -
  • A rule that can have many false positives (e.g. empty_count)
  • -
  • A rule that is too slow
  • -
  • A rule that is not general consensus or is only useful in some cases -(e.g. force_unwrapping)
  • -
-

Disable rules in code

- -

Rules can be disabled with a comment inside a source file with the following -format:

- -

// swiftlint:disable <rule1> [<rule2> <rule3>...]

- -

The rules will be disabled until the end of the file or until the linter sees a -matching enable comment:

- -

// swiftlint:enable <rule1> [<rule2> <rule3>...]

- -

For example:

-
// swiftlint:disable colon
-let noWarning :String = "" // No warning about colons immediately after variable names!
-// swiftlint:enable colon
-let hasWarning :String = "" // Warning generated about colons immediately after variable names
-
- -

Including the all keyword will disable all rules until the linter sees a matching enable comment:

- -

// swiftlint:disable all -// swiftlint:enable all

- -

For example:

-
// swiftlint:disable all
-let noWarning :String = "" // No warning about colons immediately after variable names!
-let i = "" // Also no warning about short identifier names
-// swiftlint:enable all
-let hasWarning :String = "" // Warning generated about colons immediately after variable names
-let y = "" // Warning generated about short identifier names
-
- -

It’s also possible to modify a disable or enable command by appending -:previous, :this or :next for only applying the command to the previous, -this (current) or next line respectively.

- -

For example:

-
// swiftlint:disable:next force_cast
-let noWarning = NSNumber() as! Int
-let hasWarning = NSNumber() as! Int
-let noWarning2 = NSNumber() as! Int // swiftlint:disable:this force_cast
-let noWarning3 = NSNumber() as! Int
-// swiftlint:disable:previous force_cast
-
- -

Run swiftlint rules to print a list of all available rules and their -identifiers.

-

Configuration

- -

Configure SwiftLint by adding a .swiftlint.yml file from the directory you’ll -run SwiftLint from. The following parameters can be configured:

- -

Rule inclusion:

- -
    -
  • disabled_rules: Disable rules from the default enabled set.
  • -
  • opt_in_rules: Enable rules not from the default set.
  • -
  • only_rules: Only the rules specified in this list will be enabled. -Cannot be specified alongside disabled_rules or opt_in_rules.
  • -
  • analyzer_rules: This is an entirely separate list of rules that are only -run by the analyze command. All analyzer rules are opt-in, so this is the -only configurable rule list, there are no equivalents for disabled_rules -only_rules.
  • -
-
# By default, SwiftLint uses a set of sensible default rules you can adjust:
-disabled_rules: # rule identifiers turned on by default to exclude from running
-  - colon
-  - comma
-  - control_statement
-opt_in_rules: # some rules are turned off by default, so you need to opt-in
-  - empty_count # Find all the available rules by running: `swiftlint rules`
-
-# Alternatively, specify all rules explicitly by uncommenting this option:
-# only_rules: # delete `disabled_rules` & `opt_in_rules` if using this
-#   - empty_parameters
-#   - vertical_whitespace
-
-included: # paths to include during linting. `--path` is ignored if present.
-  - Source
-excluded: # paths to ignore during linting. Takes precedence over `included`.
-  - Carthage
-  - Pods
-  - Source/ExcludedFolder
-  - Source/ExcludedFile.swift
-  - Source/*/ExcludedFile.swift # Exclude files with a wildcard
-analyzer_rules: # Rules run by `swiftlint analyze`
-  - explicit_self
-
-# configurable rules can be customized from this configuration file
-# binary rules can set their severity level
-force_cast: warning # implicitly
-force_try:
-  severity: warning # explicitly
-# rules that have both warning and error levels, can set just the warning level
-# implicitly
-line_length: 110
-# they can set both implicitly with an array
-type_body_length:
-  - 300 # warning
-  - 400 # error
-# or they can set both explicitly
-file_length:
-  warning: 500
-  error: 1200
-# naming rules can set warnings/errors for min_length and max_length
-# additionally they can set excluded names
-type_name:
-  min_length: 4 # only warning
-  max_length: # warning and error
-    warning: 40
-    error: 50
-  excluded: iPhone # excluded via string
-  allowed_symbols: ["_"] # these are allowed in type names
-identifier_name:
-  min_length: # only min_length
-    error: 4 # only error
-  excluded: # excluded via string array
-    - id
-    - URL
-    - GlobalAPIKey
-reporter: "xcode" # reporter type (xcode, json, csv, checkstyle, codeclimate, junit, html, emoji, sonarqube, markdown, github-actions-logging)
-
- -

You can also use environment variables in your configuration file, -by using ${SOME_VARIABLE} in a string.

-

Defining Custom Rules

- -

You can define custom regex-based rules in your configuration file using the -following syntax:

-
custom_rules:
-  pirates_beat_ninjas: # rule identifier
-    included: ".*\\.swift" # regex that defines paths to include during linting. optional.
-    excluded: ".*Test\\.swift" # regex that defines paths to exclude during linting. optional
-    name: "Pirates Beat Ninjas" # rule name. optional.
-    regex: "([nN]inja)" # matching pattern
-    capture_group: 0 # number of regex capture group to highlight the rule violation at. optional.
-    match_kinds: # SyntaxKinds to match. optional.
-      - comment
-      - identifier
-    message: "Pirates are better than ninjas." # violation message. optional.
-    severity: error # violation severity. optional.
-  no_hiding_in_strings:
-    regex: "([nN]inja)"
-    match_kinds: string
-
- -

This is what the output would look like:

- -

- -

You can filter the matches by providing one or more match_kinds, which will -reject matches that include syntax kinds that are not present in this list. Here -are all the possible syntax kinds:

- -
    -
  • argument
  • -
  • attribute.builtin
  • -
  • attribute.id
  • -
  • buildconfig.id
  • -
  • buildconfig.keyword
  • -
  • comment
  • -
  • comment.mark
  • -
  • comment.url
  • -
  • doccomment
  • -
  • doccomment.field
  • -
  • identifier
  • -
-

Keyword

- keyword - -
    -
  • number
  • -
  • objectliteral
  • -
  • placeholder
  • -
  • string
  • -
  • string_interpolation_anchor
  • -
  • typeidentifier
  • -
- -

If using custom rules in combination with only_rules, make sure to add -custom_rules as an item under only_rules.

-

Auto-correct

- -

SwiftLint can automatically correct certain violations. Files on disk are -overwritten with a corrected version.

- -

Please make sure to have backups of these files before running -swiftlint --fix, otherwise important data may be lost.

- -

Standard linting is disabled while correcting because of the high likelihood of -violations (or their offsets) being incorrect after modifying a file while -applying corrections.

-

Analyze

- -

The swiftlint analyze command can lint Swift files using the -full type-checked AST. The compiler log path containing the clean swiftc build -command invocation (incremental builds will fail) must be passed to analyze -via the --compiler-log-path flag. -e.g. --compiler-log-path /path/to/xcodebuild.log

- -

This can be obtained by

- -
    -
  1. Cleaning DerivedData (incremental builds won’t work with analyze)
  2. -
  3. Running xcodebuild -workspace {WORKSPACE}.xcworkspace -scheme {SCHEME} > xcodebuild.log
  4. -
  5. Running swiftlint analyze --compiler-log-path xcodebuild.log
  6. -
- -

Analyzer rules tend to be considerably slower than lint rules.

-

Using Multiple Configuration Files

- -

SwiftLint offers a variety of ways to include multiple configuration files. -Multiple configuration files get merged into one single configuration that is then applied -just as a single configuration file would get applied.

- -

There are quite a lot of use cases where using multiple configuration files could be helpful:

- -

For instance, one could use a team-wide shared SwiftLint configuration while allowing overrrides -in each project via a child configuration file.

- -

Team-Wide Configuration:

-
disabled_rules:
-- force_cast
-
- -

Project-Specific Configuration:

-
opt_in_rules:
-- force_cast
-
-

Child / Parent Configs (Locally)

- -

You can specify a child_config and / or a parent_config reference within a configuration file. -These references should be local paths relative to the folder of the configuration file they are specified in. -This even works recursively, as long as there are no cycles and no ambiguities.

- -

A child config is treated as a refinement and therefore has a higher priority, -while a parent config is considered a base with lower priority in case of conflicts.

- -

Here’s an example, assuming you have the following file structure:

-
ProjectRoot
-    |_ .swiftlint.yml
-    |_ .swiftlint_refinement.yml
-    |_ Base
-        |_ .swiftlint_base.yml
-
- -

To include both the refinement and the base file, your .swiftlint.yml should look like this:

-
child_config: .swiftlint_refinement.yml
-parent_config: Base/.swiftlint_base.yml
-
- -

When merging parent and child configs, included and excluded configurations -are processed carefully to account for differences in the directory location -of the containing configuration files.

-

Child / Parent Configs (Remote)

- -

Just as you can provide local child_config / parent_config references, instead of -referencing local paths, you can just put urls that lead to configuration files. -In order for SwiftLint to detect these remote references, they must start with http:// or https://.

- -

The referenced remote configuration files may even recursively reference other -remote configuration files, but aren’t allowed to include local references.

- -

Using a remote reference, your .swiftlint.yml could look like this:

-
parent_config: https://myteamserver.com/our-base-swiftlint-config.yml
-
- -

Every time you run SwiftLint and have an Internet connection, SwiftLint tries to get a new version of -every remote configuration that is referenced. If this request times out, a cached version is -used if available. If there is no cached version available, SwiftLint fails – but no worries, a cached version -should be there once SwiftLint has run successfully at least once.

- -

If needed, the timeouts for the remote configuration fetching can be specified manually via the -configuration file(s) using the remote_timeout / remote_timeout_if_cached specifiers. -These values default to 2 / 1 second(s).

-

Command Line

- -

Instead of just providing one configuration file when running SwiftLint via the command line, -you can also pass a hierarchy, where the first configuration is treated as a parent, -while the last one is treated as the highest-priority child.

- -

A simple example including just two configuration files looks like this:

- -

swiftlint --config .swiftlint.yml --config .swiftlint_child.yml

-

Nested Configurations

- -

In addition to a main configuration (the .swiftlint.yml file in the root folder), -you can put other configuration files named .swiftlint.yml into the directory structure -that then get merged as a child config, but only with an effect for those files -that are within the same directory as the config or in a deeper directory where -there isn’t another configuration file. In other words: Nested configurations don’t work -recursively – there’s a maximum number of one nested configuration per file -that may be applied in addition to the main configuration.

- -

.swiftlint.yml files are only considered as a nested configuration if they have not been -used to build the main configuration already (e. g. by having been referenced via something -like child_config: Folder/.swiftlint.yml). Also, parent_config / child_config -specifications of nested configurations are getting ignored because there’s no sense to that.

- -

If one (or more) SwiftLint file(s) are explicitly specified via the --config parameter, -that configuration will be treated as an override, no matter whether there exist -other .swiftlint.yml files somewhere within the directory. So if you want to use -use nested configurations, you can’t use the -- config parameter.

-

License

- -

MIT licensed.

-

About

- -

- -

SwiftLint is maintained and funded by Realm Inc. The names and logos for -Realm are trademarks of Realm Inc.

- -

We :heart: open source software! -See our other open source projects, -read our blog, or say hi on twitter -(@realm).

- -

- -

Our thanks to MacStadium for providing a Mac Mini to run our performance -tests.

- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/inert_defer.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/inert_defer.html deleted file mode 100644 index 80c993306..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/inert_defer.html +++ /dev/null @@ -1,374 +0,0 @@ - - - - inert_defer Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Inert Defer

- -

If defer is at the end of its parent scope, it will be executed right where it is anyway.

- -
    -
  • Identifier: inert_defer
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
func example3() {
-    defer { /* deferred code */ }
-
-    print("other code")
-}
-
-
func example4() {
-    if condition {
-        defer { /* deferred code */ }
-        print("other code")
-    }
-}
-
-

Triggering Examples

-
func example0() {
-    ↓defer { /* deferred code */ }
-}
-
-
func example1() {
-    ↓defer { /* deferred code */ }
-    // comment
-}
-
-
func example2() {
-    if condition {
-        ↓defer { /* deferred code */ }
-        // comment
-    }
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/is_disjoint.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/is_disjoint.html deleted file mode 100644 index 4e4a7530a..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/is_disjoint.html +++ /dev/null @@ -1,357 +0,0 @@ - - - - is_disjoint Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Is Disjoint

- -

Prefer using Set.isDisjoint(with:) over Set.intersection(_:).isEmpty.

- -
    -
  • Identifier: is_disjoint
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
_ = Set(syntaxKinds).isDisjoint(with: commentAndStringKindsSet)
-
-
let isObjc = !objcAttributes.isDisjoint(with: dictionary.enclosedSwiftAttributes)
-
-
_ = Set(syntaxKinds).intersection(commentAndStringKindsSet)
-
-
_ = !objcAttributes.intersection(dictionary.enclosedSwiftAttributes)
-
-

Triggering Examples

-
_ = Set(syntaxKinds).↓intersection(commentAndStringKindsSet).isEmpty
-
-
let isObjc = !objcAttributes.↓intersection(dictionary.enclosedSwiftAttributes).isEmpty
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/joined_default_parameter.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/joined_default_parameter.html deleted file mode 100644 index 4b3a2ee9e..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/joined_default_parameter.html +++ /dev/null @@ -1,360 +0,0 @@ - - - - joined_default_parameter Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Joined Default Parameter

- -

Discouraged explicit usage of the default separator.

- -
    -
  • Identifier: joined_default_parameter
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let foo = bar.joined()
-
-
let foo = bar.joined(separator: ",")
-
-
let foo = bar.joined(separator: toto)
-
-

Triggering Examples

-
let foo = bar.joined(↓separator: "")
-
-
let foo = bar.filter(toto)
-             .joined(↓separator: ""),
-
-
func foo() -> String {
-  return ["1", "2"].joined(↓separator: "")
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/js/jazzy.js b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/js/jazzy.js deleted file mode 100755 index 1e55d6ef0..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/js/jazzy.js +++ /dev/null @@ -1,70 +0,0 @@ -window.jazzy = {'docset': false} -if (typeof window.dash != 'undefined') { - document.documentElement.className += ' dash' - window.jazzy.docset = true -} -if (navigator.userAgent.match(/xcode/i)) { - document.documentElement.className += ' xcode' - window.jazzy.docset = true -} - -function toggleItem($link, $content) { - var animationDuration = 300; - $link.toggleClass('token-open'); - $content.slideToggle(animationDuration); -} - -function itemLinkToContent($link) { - return $link.parent().parent().next(); -} - -// On doc load + hash-change, open any targetted item -function openCurrentItemIfClosed() { - if (window.jazzy.docset) { - return; - } - var $link = $(`a[name="${location.hash.substring(1)}"]`).nextAll('.token'); - $content = itemLinkToContent($link); - if ($content.is(':hidden')) { - toggleItem($link, $content); - } -} - -$(openCurrentItemIfClosed); -$(window).on('hashchange', openCurrentItemIfClosed); - -// On item link ('token') click, toggle its discussion -$('.token').on('click', function(event) { - if (window.jazzy.docset) { - return; - } - var $link = $(this); - toggleItem($link, itemLinkToContent($link)); - - // Keeps the document from jumping to the hash. - var href = $link.attr('href'); - if (history.pushState) { - history.pushState({}, '', href); - } else { - location.hash = href; - } - event.preventDefault(); -}); - -// Clicks on links to the current, closed, item need to open the item -$("a:not('.token')").on('click', function() { - if (location == this.href) { - openCurrentItemIfClosed(); - } -}); - -// KaTeX rendering -if ("katex" in window) { - $($('.math').each( (_, element) => { - katex.render(element.textContent, element, { - displayMode: $(element).hasClass('m-block'), - throwOnError: false, - trust: true - }); - })) -} diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/js/jazzy.search.js b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/js/jazzy.search.js deleted file mode 100644 index e3d1ab905..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/js/jazzy.search.js +++ /dev/null @@ -1,70 +0,0 @@ -$(function(){ - var $typeahead = $('[data-typeahead]'); - var $form = $typeahead.parents('form'); - var searchURL = $form.attr('action'); - - function displayTemplate(result) { - return result.name; - } - - function suggestionTemplate(result) { - var t = '
'; - t += '' + result.name + ''; - if (result.parent_name) { - t += '' + result.parent_name + ''; - } - t += '
'; - return t; - } - - $typeahead.one('focus', function() { - $form.addClass('loading'); - - $.getJSON(searchURL).then(function(searchData) { - const searchIndex = lunr(function() { - this.ref('url'); - this.field('name'); - this.field('abstract'); - for (const [url, doc] of Object.entries(searchData)) { - this.add({url: url, name: doc.name, abstract: doc.abstract}); - } - }); - - $typeahead.typeahead( - { - highlight: true, - minLength: 3, - autoselect: true - }, - { - limit: 10, - display: displayTemplate, - templates: { suggestion: suggestionTemplate }, - source: function(query, sync) { - const lcSearch = query.toLowerCase(); - const results = searchIndex.query(function(q) { - q.term(lcSearch, { boost: 100 }); - q.term(lcSearch, { - boost: 10, - wildcard: lunr.Query.wildcard.TRAILING - }); - }).map(function(result) { - var doc = searchData[result.ref]; - doc.url = result.ref; - return doc; - }); - sync(results); - } - } - ); - $form.removeClass('loading'); - $typeahead.trigger('focus'); - }); - }); - - var baseURL = searchURL.slice(0, -"search.json".length); - - $typeahead.on('typeahead:select', function(e, result) { - window.location = baseURL + result.url; - }); -}); diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/js/jquery.min.js b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/js/jquery.min.js deleted file mode 100644 index b0614034a..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/js/jquery.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 00){var c=e.utils.clone(r)||{};c.position=[a,l],c.index=s.length,s.push(new e.Token(i.slice(a,o),c))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);t!=-1&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:sa?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length&&(o["final"]=!0),n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(0!=s.editsRemaining){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(0==s.str.length&&(u["final"]=!0),n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&n.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),1==s.str.length&&(s.node["final"]=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length&&(l["final"]=!0),n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c,h=s.str.charAt(0),d=s.str.charAt(1);d in s.node.edges?c=s.node.edges[d]:(c=new e.TokenSet,s.node.edges[d]=c),1==s.str.length&&(c["final"]=!0),n.push({node:c,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=0,s=t.length;n=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){for(var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t,r){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&r<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}(); diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/js/typeahead.jquery.js b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/js/typeahead.jquery.js deleted file mode 100644 index 3a2d2ab03..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/js/typeahead.jquery.js +++ /dev/null @@ -1,1694 +0,0 @@ -/*! - * typeahead.js 1.3.1 - * https://github.com/corejavascript/typeahead.js - * Copyright 2013-2020 Twitter, Inc. and other contributors; Licensed MIT - */ - - -(function(root, factory) { - if (typeof define === "function" && define.amd) { - define([ "jquery" ], function(a0) { - return factory(a0); - }); - } else if (typeof module === "object" && module.exports) { - module.exports = factory(require("jquery")); - } else { - factory(root["jQuery"]); - } -})(this, function($) { - var _ = function() { - "use strict"; - return { - isMsie: function() { - return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2] : false; - }, - isBlankString: function(str) { - return !str || /^\s*$/.test(str); - }, - escapeRegExChars: function(str) { - return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); - }, - isString: function(obj) { - return typeof obj === "string"; - }, - isNumber: function(obj) { - return typeof obj === "number"; - }, - isArray: $.isArray, - isFunction: $.isFunction, - isObject: $.isPlainObject, - isUndefined: function(obj) { - return typeof obj === "undefined"; - }, - isElement: function(obj) { - return !!(obj && obj.nodeType === 1); - }, - isJQuery: function(obj) { - return obj instanceof $; - }, - toStr: function toStr(s) { - return _.isUndefined(s) || s === null ? "" : s + ""; - }, - bind: $.proxy, - each: function(collection, cb) { - $.each(collection, reverseArgs); - function reverseArgs(index, value) { - return cb(value, index); - } - }, - map: $.map, - filter: $.grep, - every: function(obj, test) { - var result = true; - if (!obj) { - return result; - } - $.each(obj, function(key, val) { - if (!(result = test.call(null, val, key, obj))) { - return false; - } - }); - return !!result; - }, - some: function(obj, test) { - var result = false; - if (!obj) { - return result; - } - $.each(obj, function(key, val) { - if (result = test.call(null, val, key, obj)) { - return false; - } - }); - return !!result; - }, - mixin: $.extend, - identity: function(x) { - return x; - }, - clone: function(obj) { - return $.extend(true, {}, obj); - }, - getIdGenerator: function() { - var counter = 0; - return function() { - return counter++; - }; - }, - templatify: function templatify(obj) { - return $.isFunction(obj) ? obj : template; - function template() { - return String(obj); - } - }, - defer: function(fn) { - setTimeout(fn, 0); - }, - debounce: function(func, wait, immediate) { - var timeout, result; - return function() { - var context = this, args = arguments, later, callNow; - later = function() { - timeout = null; - if (!immediate) { - result = func.apply(context, args); - } - }; - callNow = immediate && !timeout; - clearTimeout(timeout); - timeout = setTimeout(later, wait); - if (callNow) { - result = func.apply(context, args); - } - return result; - }; - }, - throttle: function(func, wait) { - var context, args, timeout, result, previous, later; - previous = 0; - later = function() { - previous = new Date(); - timeout = null; - result = func.apply(context, args); - }; - return function() { - var now = new Date(), remaining = wait - (now - previous); - context = this; - args = arguments; - if (remaining <= 0) { - clearTimeout(timeout); - timeout = null; - previous = now; - result = func.apply(context, args); - } else if (!timeout) { - timeout = setTimeout(later, remaining); - } - return result; - }; - }, - stringify: function(val) { - return _.isString(val) ? val : JSON.stringify(val); - }, - guid: function() { - function _p8(s) { - var p = (Math.random().toString(16) + "000000000").substr(2, 8); - return s ? "-" + p.substr(0, 4) + "-" + p.substr(4, 4) : p; - } - return "tt-" + _p8() + _p8(true) + _p8(true) + _p8(); - }, - noop: function() {} - }; - }(); - var WWW = function() { - "use strict"; - var defaultClassNames = { - wrapper: "twitter-typeahead", - input: "tt-input", - hint: "tt-hint", - menu: "tt-menu", - dataset: "tt-dataset", - suggestion: "tt-suggestion", - selectable: "tt-selectable", - empty: "tt-empty", - open: "tt-open", - cursor: "tt-cursor", - highlight: "tt-highlight" - }; - return build; - function build(o) { - var www, classes; - classes = _.mixin({}, defaultClassNames, o); - www = { - css: buildCss(), - classes: classes, - html: buildHtml(classes), - selectors: buildSelectors(classes) - }; - return { - css: www.css, - html: www.html, - classes: www.classes, - selectors: www.selectors, - mixin: function(o) { - _.mixin(o, www); - } - }; - } - function buildHtml(c) { - return { - wrapper: '', - menu: '
' - }; - } - function buildSelectors(classes) { - var selectors = {}; - _.each(classes, function(v, k) { - selectors[k] = "." + v; - }); - return selectors; - } - function buildCss() { - var css = { - wrapper: { - position: "relative", - display: "inline-block" - }, - hint: { - position: "absolute", - top: "0", - left: "0", - borderColor: "transparent", - boxShadow: "none", - opacity: "1" - }, - input: { - position: "relative", - verticalAlign: "top", - backgroundColor: "transparent" - }, - inputWithNoHint: { - position: "relative", - verticalAlign: "top" - }, - menu: { - position: "absolute", - top: "100%", - left: "0", - zIndex: "100", - display: "none" - }, - ltr: { - left: "0", - right: "auto" - }, - rtl: { - left: "auto", - right: " 0" - } - }; - if (_.isMsie()) { - _.mixin(css.input, { - backgroundImage: "url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)" - }); - } - return css; - } - }(); - var EventBus = function() { - "use strict"; - var namespace, deprecationMap; - namespace = "typeahead:"; - deprecationMap = { - render: "rendered", - cursorchange: "cursorchanged", - select: "selected", - autocomplete: "autocompleted" - }; - function EventBus(o) { - if (!o || !o.el) { - $.error("EventBus initialized without el"); - } - this.$el = $(o.el); - } - _.mixin(EventBus.prototype, { - _trigger: function(type, args) { - var $e = $.Event(namespace + type); - this.$el.trigger.call(this.$el, $e, args || []); - return $e; - }, - before: function(type) { - var args, $e; - args = [].slice.call(arguments, 1); - $e = this._trigger("before" + type, args); - return $e.isDefaultPrevented(); - }, - trigger: function(type) { - var deprecatedType; - this._trigger(type, [].slice.call(arguments, 1)); - if (deprecatedType = deprecationMap[type]) { - this._trigger(deprecatedType, [].slice.call(arguments, 1)); - } - } - }); - return EventBus; - }(); - var EventEmitter = function() { - "use strict"; - var splitter = /\s+/, nextTick = getNextTick(); - return { - onSync: onSync, - onAsync: onAsync, - off: off, - trigger: trigger - }; - function on(method, types, cb, context) { - var type; - if (!cb) { - return this; - } - types = types.split(splitter); - cb = context ? bindContext(cb, context) : cb; - this._callbacks = this._callbacks || {}; - while (type = types.shift()) { - this._callbacks[type] = this._callbacks[type] || { - sync: [], - async: [] - }; - this._callbacks[type][method].push(cb); - } - return this; - } - function onAsync(types, cb, context) { - return on.call(this, "async", types, cb, context); - } - function onSync(types, cb, context) { - return on.call(this, "sync", types, cb, context); - } - function off(types) { - var type; - if (!this._callbacks) { - return this; - } - types = types.split(splitter); - while (type = types.shift()) { - delete this._callbacks[type]; - } - return this; - } - function trigger(types) { - var type, callbacks, args, syncFlush, asyncFlush; - if (!this._callbacks) { - return this; - } - types = types.split(splitter); - args = [].slice.call(arguments, 1); - while ((type = types.shift()) && (callbacks = this._callbacks[type])) { - syncFlush = getFlush(callbacks.sync, this, [ type ].concat(args)); - asyncFlush = getFlush(callbacks.async, this, [ type ].concat(args)); - syncFlush() && nextTick(asyncFlush); - } - return this; - } - function getFlush(callbacks, context, args) { - return flush; - function flush() { - var cancelled; - for (var i = 0, len = callbacks.length; !cancelled && i < len; i += 1) { - cancelled = callbacks[i].apply(context, args) === false; - } - return !cancelled; - } - } - function getNextTick() { - var nextTickFn; - if (window.setImmediate) { - nextTickFn = function nextTickSetImmediate(fn) { - setImmediate(function() { - fn(); - }); - }; - } else { - nextTickFn = function nextTickSetTimeout(fn) { - setTimeout(function() { - fn(); - }, 0); - }; - } - return nextTickFn; - } - function bindContext(fn, context) { - return fn.bind ? fn.bind(context) : function() { - fn.apply(context, [].slice.call(arguments, 0)); - }; - } - }(); - var highlight = function(doc) { - "use strict"; - var defaults = { - node: null, - pattern: null, - tagName: "strong", - className: null, - wordsOnly: false, - caseSensitive: false, - diacriticInsensitive: false - }; - var accented = { - A: "[AaªÀ-Åà-åĀ-ąǍǎȀ-ȃȦȧᴬᵃḀḁẚẠ-ảₐ℀℁℻⒜Ⓐⓐ㍱-㍴㎀-㎄㎈㎉㎩-㎯㏂㏊㏟㏿Aa]", - B: "[BbᴮᵇḂ-ḇℬ⒝Ⓑⓑ㍴㎅-㎇㏃㏈㏔㏝Bb]", - C: "[CcÇçĆ-čᶜ℀ℂ℃℅℆ℭⅭⅽ⒞Ⓒⓒ㍶㎈㎉㎝㎠㎤㏄-㏇Cc]", - D: "[DdĎďDŽ-džDZ-dzᴰᵈḊ-ḓⅅⅆⅮⅾ⒟Ⓓⓓ㋏㍲㍷-㍹㎗㎭-㎯㏅㏈Dd]", - E: "[EeÈ-Ëè-ëĒ-ěȄ-ȇȨȩᴱᵉḘ-ḛẸ-ẽₑ℡ℯℰⅇ⒠Ⓔⓔ㉐㋍㋎Ee]", - F: "[FfᶠḞḟ℉ℱ℻⒡Ⓕⓕ㎊-㎌㎙ff-fflFf]", - G: "[GgĜ-ģǦǧǴǵᴳᵍḠḡℊ⒢Ⓖⓖ㋌㋍㎇㎍-㎏㎓㎬㏆㏉㏒㏿Gg]", - H: "[HhĤĥȞȟʰᴴḢ-ḫẖℋ-ℎ⒣Ⓗⓗ㋌㍱㎐-㎔㏊㏋㏗Hh]", - I: "[IiÌ-Ïì-ïĨ-İIJijǏǐȈ-ȋᴵᵢḬḭỈ-ịⁱℐℑℹⅈⅠ-ⅣⅥ-ⅨⅪⅫⅰ-ⅳⅵ-ⅸⅺⅻ⒤Ⓘⓘ㍺㏌㏕fiffiIi]", - J: "[JjIJ-ĵLJ-njǰʲᴶⅉ⒥ⒿⓙⱼJj]", - K: "[KkĶķǨǩᴷᵏḰ-ḵK⒦Ⓚⓚ㎄㎅㎉㎏㎑㎘㎞㎢㎦㎪㎸㎾㏀㏆㏍-㏏Kk]", - L: "[LlĹ-ŀLJ-ljˡᴸḶḷḺ-ḽℒℓ℡Ⅼⅼ⒧Ⓛⓛ㋏㎈㎉㏐-㏓㏕㏖㏿flfflLl]", - M: "[MmᴹᵐḾ-ṃ℠™ℳⅯⅿ⒨Ⓜⓜ㍷-㍹㎃㎆㎎㎒㎖㎙-㎨㎫㎳㎷㎹㎽㎿㏁㏂㏎㏐㏔-㏖㏘㏙㏞㏟Mm]", - N: "[NnÑñŃ-ʼnNJ-njǸǹᴺṄ-ṋⁿℕ№⒩Ⓝⓝ㎁㎋㎚㎱㎵㎻㏌㏑Nn]", - O: "[OoºÒ-Öò-öŌ-őƠơǑǒǪǫȌ-ȏȮȯᴼᵒỌ-ỏₒ℅№ℴ⒪Ⓞⓞ㍵㏇㏒㏖Oo]", - P: "[PpᴾᵖṔ-ṗℙ⒫Ⓟⓟ㉐㍱㍶㎀㎊㎩-㎬㎰㎴㎺㏋㏗-㏚Pp]", - Q: "[Qqℚ⒬Ⓠⓠ㏃Qq]", - R: "[RrŔ-řȐ-ȓʳᴿᵣṘ-ṛṞṟ₨ℛ-ℝ⒭Ⓡⓡ㋍㍴㎭-㎯㏚㏛Rr]", - S: "[SsŚ-šſȘșˢṠ-ṣ₨℁℠⒮Ⓢⓢ㎧㎨㎮-㎳㏛㏜stSs]", - T: "[TtŢ-ťȚțᵀᵗṪ-ṱẗ℡™⒯Ⓣⓣ㉐㋏㎔㏏ſtstTt]", - U: "[UuÙ-Üù-üŨ-ųƯưǓǔȔ-ȗᵁᵘᵤṲ-ṷỤ-ủ℆⒰Ⓤⓤ㍳㍺Uu]", - V: "[VvᵛᵥṼ-ṿⅣ-Ⅷⅳ-ⅷ⒱Ⓥⓥⱽ㋎㍵㎴-㎹㏜㏞Vv]", - W: "[WwŴŵʷᵂẀ-ẉẘ⒲Ⓦⓦ㎺-㎿㏝Ww]", - X: "[XxˣẊ-ẍₓ℻Ⅸ-Ⅻⅸ-ⅻ⒳Ⓧⓧ㏓Xx]", - Y: "[YyÝýÿŶ-ŸȲȳʸẎẏẙỲ-ỹ⒴Ⓨⓨ㏉Yy]", - Z: "[ZzŹ-žDZ-dzᶻẐ-ẕℤℨ⒵Ⓩⓩ㎐-㎔Zz]" - }; - return function hightlight(o) { - var regex; - o = _.mixin({}, defaults, o); - if (!o.node || !o.pattern) { - return; - } - o.pattern = _.isArray(o.pattern) ? o.pattern : [ o.pattern ]; - regex = getRegex(o.pattern, o.caseSensitive, o.wordsOnly, o.diacriticInsensitive); - traverse(o.node, hightlightTextNode); - function hightlightTextNode(textNode) { - var match, patternNode, wrapperNode; - if (match = regex.exec(textNode.data)) { - wrapperNode = doc.createElement(o.tagName); - o.className && (wrapperNode.className = o.className); - patternNode = textNode.splitText(match.index); - patternNode.splitText(match[0].length); - wrapperNode.appendChild(patternNode.cloneNode(true)); - textNode.parentNode.replaceChild(wrapperNode, patternNode); - } - return !!match; - } - function traverse(el, hightlightTextNode) { - var childNode, TEXT_NODE_TYPE = 3; - for (var i = 0; i < el.childNodes.length; i++) { - childNode = el.childNodes[i]; - if (childNode.nodeType === TEXT_NODE_TYPE) { - i += hightlightTextNode(childNode) ? 1 : 0; - } else { - traverse(childNode, hightlightTextNode); - } - } - } - }; - function accent_replacer(chr) { - return accented[chr.toUpperCase()] || chr; - } - function getRegex(patterns, caseSensitive, wordsOnly, diacriticInsensitive) { - var escapedPatterns = [], regexStr; - for (var i = 0, len = patterns.length; i < len; i++) { - var escapedWord = _.escapeRegExChars(patterns[i]); - if (diacriticInsensitive) { - escapedWord = escapedWord.replace(/\S/g, accent_replacer); - } - escapedPatterns.push(escapedWord); - } - regexStr = wordsOnly ? "\\b(" + escapedPatterns.join("|") + ")\\b" : "(" + escapedPatterns.join("|") + ")"; - return caseSensitive ? new RegExp(regexStr) : new RegExp(regexStr, "i"); - } - }(window.document); - var Input = function() { - "use strict"; - var specialKeyCodeMap; - specialKeyCodeMap = { - 9: "tab", - 27: "esc", - 37: "left", - 39: "right", - 13: "enter", - 38: "up", - 40: "down" - }; - function Input(o, www) { - var id; - o = o || {}; - if (!o.input) { - $.error("input is missing"); - } - www.mixin(this); - this.$hint = $(o.hint); - this.$input = $(o.input); - this.$menu = $(o.menu); - id = this.$input.attr("id") || _.guid(); - this.$menu.attr("id", id + "_listbox"); - this.$hint.attr({ - "aria-hidden": true - }); - this.$input.attr({ - "aria-owns": id + "_listbox", - role: "combobox", - "aria-autocomplete": "list", - "aria-expanded": false - }); - this.query = this.$input.val(); - this.queryWhenFocused = this.hasFocus() ? this.query : null; - this.$overflowHelper = buildOverflowHelper(this.$input); - this._checkLanguageDirection(); - if (this.$hint.length === 0) { - this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = _.noop; - } - this.onSync("cursorchange", this._updateDescendent); - } - Input.normalizeQuery = function(str) { - return _.toStr(str).replace(/^\s*/g, "").replace(/\s{2,}/g, " "); - }; - _.mixin(Input.prototype, EventEmitter, { - _onBlur: function onBlur() { - this.resetInputValue(); - this.trigger("blurred"); - }, - _onFocus: function onFocus() { - this.queryWhenFocused = this.query; - this.trigger("focused"); - }, - _onKeydown: function onKeydown($e) { - var keyName = specialKeyCodeMap[$e.which || $e.keyCode]; - this._managePreventDefault(keyName, $e); - if (keyName && this._shouldTrigger(keyName, $e)) { - this.trigger(keyName + "Keyed", $e); - } - }, - _onInput: function onInput() { - this._setQuery(this.getInputValue()); - this.clearHintIfInvalid(); - this._checkLanguageDirection(); - }, - _managePreventDefault: function managePreventDefault(keyName, $e) { - var preventDefault; - switch (keyName) { - case "up": - case "down": - preventDefault = !withModifier($e); - break; - - default: - preventDefault = false; - } - preventDefault && $e.preventDefault(); - }, - _shouldTrigger: function shouldTrigger(keyName, $e) { - var trigger; - switch (keyName) { - case "tab": - trigger = !withModifier($e); - break; - - default: - trigger = true; - } - return trigger; - }, - _checkLanguageDirection: function checkLanguageDirection() { - var dir = (this.$input.css("direction") || "ltr").toLowerCase(); - if (this.dir !== dir) { - this.dir = dir; - this.$hint.attr("dir", dir); - this.trigger("langDirChanged", dir); - } - }, - _setQuery: function setQuery(val, silent) { - var areEquivalent, hasDifferentWhitespace; - areEquivalent = areQueriesEquivalent(val, this.query); - hasDifferentWhitespace = areEquivalent ? this.query.length !== val.length : false; - this.query = val; - if (!silent && !areEquivalent) { - this.trigger("queryChanged", this.query); - } else if (!silent && hasDifferentWhitespace) { - this.trigger("whitespaceChanged", this.query); - } - }, - _updateDescendent: function updateDescendent(event, id) { - this.$input.attr("aria-activedescendant", id); - }, - bind: function() { - var that = this, onBlur, onFocus, onKeydown, onInput; - onBlur = _.bind(this._onBlur, this); - onFocus = _.bind(this._onFocus, this); - onKeydown = _.bind(this._onKeydown, this); - onInput = _.bind(this._onInput, this); - this.$input.on("blur.tt", onBlur).on("focus.tt", onFocus).on("keydown.tt", onKeydown); - if (!_.isMsie() || _.isMsie() > 9) { - this.$input.on("input.tt", onInput); - } else { - this.$input.on("keydown.tt keypress.tt cut.tt paste.tt", function($e) { - if (specialKeyCodeMap[$e.which || $e.keyCode]) { - return; - } - _.defer(_.bind(that._onInput, that, $e)); - }); - } - return this; - }, - focus: function focus() { - this.$input.focus(); - }, - blur: function blur() { - this.$input.blur(); - }, - getLangDir: function getLangDir() { - return this.dir; - }, - getQuery: function getQuery() { - return this.query || ""; - }, - setQuery: function setQuery(val, silent) { - this.setInputValue(val); - this._setQuery(val, silent); - }, - hasQueryChangedSinceLastFocus: function hasQueryChangedSinceLastFocus() { - return this.query !== this.queryWhenFocused; - }, - getInputValue: function getInputValue() { - return this.$input.val(); - }, - setInputValue: function setInputValue(value) { - this.$input.val(value); - this.clearHintIfInvalid(); - this._checkLanguageDirection(); - }, - resetInputValue: function resetInputValue() { - this.setInputValue(this.query); - }, - getHint: function getHint() { - return this.$hint.val(); - }, - setHint: function setHint(value) { - this.$hint.val(value); - }, - clearHint: function clearHint() { - this.setHint(""); - }, - clearHintIfInvalid: function clearHintIfInvalid() { - var val, hint, valIsPrefixOfHint, isValid; - val = this.getInputValue(); - hint = this.getHint(); - valIsPrefixOfHint = val !== hint && hint.indexOf(val) === 0; - isValid = val !== "" && valIsPrefixOfHint && !this.hasOverflow(); - !isValid && this.clearHint(); - }, - hasFocus: function hasFocus() { - return this.$input.is(":focus"); - }, - hasOverflow: function hasOverflow() { - var constraint = this.$input.width() - 2; - this.$overflowHelper.text(this.getInputValue()); - return this.$overflowHelper.width() >= constraint; - }, - isCursorAtEnd: function() { - var valueLength, selectionStart, range; - valueLength = this.$input.val().length; - selectionStart = this.$input[0].selectionStart; - if (_.isNumber(selectionStart)) { - return selectionStart === valueLength; - } else if (document.selection) { - range = document.selection.createRange(); - range.moveStart("character", -valueLength); - return valueLength === range.text.length; - } - return true; - }, - destroy: function destroy() { - this.$hint.off(".tt"); - this.$input.off(".tt"); - this.$overflowHelper.remove(); - this.$hint = this.$input = this.$overflowHelper = $("
"); - }, - setAriaExpanded: function setAriaExpanded(value) { - this.$input.attr("aria-expanded", value); - } - }); - return Input; - function buildOverflowHelper($input) { - return $('').css({ - position: "absolute", - visibility: "hidden", - whiteSpace: "pre", - fontFamily: $input.css("font-family"), - fontSize: $input.css("font-size"), - fontStyle: $input.css("font-style"), - fontVariant: $input.css("font-variant"), - fontWeight: $input.css("font-weight"), - wordSpacing: $input.css("word-spacing"), - letterSpacing: $input.css("letter-spacing"), - textIndent: $input.css("text-indent"), - textRendering: $input.css("text-rendering"), - textTransform: $input.css("text-transform") - }).insertAfter($input); - } - function areQueriesEquivalent(a, b) { - return Input.normalizeQuery(a) === Input.normalizeQuery(b); - } - function withModifier($e) { - return $e.altKey || $e.ctrlKey || $e.metaKey || $e.shiftKey; - } - }(); - var Dataset = function() { - "use strict"; - var keys, nameGenerator; - keys = { - dataset: "tt-selectable-dataset", - val: "tt-selectable-display", - obj: "tt-selectable-object" - }; - nameGenerator = _.getIdGenerator(); - function Dataset(o, www) { - o = o || {}; - o.templates = o.templates || {}; - o.templates.notFound = o.templates.notFound || o.templates.empty; - if (!o.source) { - $.error("missing source"); - } - if (!o.node) { - $.error("missing node"); - } - if (o.name && !isValidName(o.name)) { - $.error("invalid dataset name: " + o.name); - } - www.mixin(this); - this.highlight = !!o.highlight; - this.name = _.toStr(o.name || nameGenerator()); - this.limit = o.limit || 5; - this.displayFn = getDisplayFn(o.display || o.displayKey); - this.templates = getTemplates(o.templates, this.displayFn); - this.source = o.source.__ttAdapter ? o.source.__ttAdapter() : o.source; - this.async = _.isUndefined(o.async) ? this.source.length > 2 : !!o.async; - this._resetLastSuggestion(); - this.$el = $(o.node).attr("role", "presentation").addClass(this.classes.dataset).addClass(this.classes.dataset + "-" + this.name); - } - Dataset.extractData = function extractData(el) { - var $el = $(el); - if ($el.data(keys.obj)) { - return { - dataset: $el.data(keys.dataset) || "", - val: $el.data(keys.val) || "", - obj: $el.data(keys.obj) || null - }; - } - return null; - }; - _.mixin(Dataset.prototype, EventEmitter, { - _overwrite: function overwrite(query, suggestions) { - suggestions = suggestions || []; - if (suggestions.length) { - this._renderSuggestions(query, suggestions); - } else if (this.async && this.templates.pending) { - this._renderPending(query); - } else if (!this.async && this.templates.notFound) { - this._renderNotFound(query); - } else { - this._empty(); - } - this.trigger("rendered", suggestions, false, this.name); - }, - _append: function append(query, suggestions) { - suggestions = suggestions || []; - if (suggestions.length && this.$lastSuggestion.length) { - this._appendSuggestions(query, suggestions); - } else if (suggestions.length) { - this._renderSuggestions(query, suggestions); - } else if (!this.$lastSuggestion.length && this.templates.notFound) { - this._renderNotFound(query); - } - this.trigger("rendered", suggestions, true, this.name); - }, - _renderSuggestions: function renderSuggestions(query, suggestions) { - var $fragment; - $fragment = this._getSuggestionsFragment(query, suggestions); - this.$lastSuggestion = $fragment.children().last(); - this.$el.html($fragment).prepend(this._getHeader(query, suggestions)).append(this._getFooter(query, suggestions)); - }, - _appendSuggestions: function appendSuggestions(query, suggestions) { - var $fragment, $lastSuggestion; - $fragment = this._getSuggestionsFragment(query, suggestions); - $lastSuggestion = $fragment.children().last(); - this.$lastSuggestion.after($fragment); - this.$lastSuggestion = $lastSuggestion; - }, - _renderPending: function renderPending(query) { - var template = this.templates.pending; - this._resetLastSuggestion(); - template && this.$el.html(template({ - query: query, - dataset: this.name - })); - }, - _renderNotFound: function renderNotFound(query) { - var template = this.templates.notFound; - this._resetLastSuggestion(); - template && this.$el.html(template({ - query: query, - dataset: this.name - })); - }, - _empty: function empty() { - this.$el.empty(); - this._resetLastSuggestion(); - }, - _getSuggestionsFragment: function getSuggestionsFragment(query, suggestions) { - var that = this, fragment; - fragment = document.createDocumentFragment(); - _.each(suggestions, function getSuggestionNode(suggestion) { - var $el, context; - context = that._injectQuery(query, suggestion); - $el = $(that.templates.suggestion(context)).data(keys.dataset, that.name).data(keys.obj, suggestion).data(keys.val, that.displayFn(suggestion)).addClass(that.classes.suggestion + " " + that.classes.selectable); - fragment.appendChild($el[0]); - }); - this.highlight && highlight({ - className: this.classes.highlight, - node: fragment, - pattern: query - }); - return $(fragment); - }, - _getFooter: function getFooter(query, suggestions) { - return this.templates.footer ? this.templates.footer({ - query: query, - suggestions: suggestions, - dataset: this.name - }) : null; - }, - _getHeader: function getHeader(query, suggestions) { - return this.templates.header ? this.templates.header({ - query: query, - suggestions: suggestions, - dataset: this.name - }) : null; - }, - _resetLastSuggestion: function resetLastSuggestion() { - this.$lastSuggestion = $(); - }, - _injectQuery: function injectQuery(query, obj) { - return _.isObject(obj) ? _.mixin({ - _query: query - }, obj) : obj; - }, - update: function update(query) { - var that = this, canceled = false, syncCalled = false, rendered = 0; - this.cancel(); - this.cancel = function cancel() { - canceled = true; - that.cancel = $.noop; - that.async && that.trigger("asyncCanceled", query, that.name); - }; - this.source(query, sync, async); - !syncCalled && sync([]); - function sync(suggestions) { - if (syncCalled) { - return; - } - syncCalled = true; - suggestions = (suggestions || []).slice(0, that.limit); - rendered = suggestions.length; - that._overwrite(query, suggestions); - if (rendered < that.limit && that.async) { - that.trigger("asyncRequested", query, that.name); - } - } - function async(suggestions) { - suggestions = suggestions || []; - if (!canceled && rendered < that.limit) { - that.cancel = $.noop; - var idx = Math.abs(rendered - that.limit); - rendered += idx; - that._append(query, suggestions.slice(0, idx)); - that.async && that.trigger("asyncReceived", query, that.name); - } - } - }, - cancel: $.noop, - clear: function clear() { - this._empty(); - this.cancel(); - this.trigger("cleared"); - }, - isEmpty: function isEmpty() { - return this.$el.is(":empty"); - }, - destroy: function destroy() { - this.$el = $("
"); - } - }); - return Dataset; - function getDisplayFn(display) { - display = display || _.stringify; - return _.isFunction(display) ? display : displayFn; - function displayFn(obj) { - return obj[display]; - } - } - function getTemplates(templates, displayFn) { - return { - notFound: templates.notFound && _.templatify(templates.notFound), - pending: templates.pending && _.templatify(templates.pending), - header: templates.header && _.templatify(templates.header), - footer: templates.footer && _.templatify(templates.footer), - suggestion: templates.suggestion ? userSuggestionTemplate : suggestionTemplate - }; - function userSuggestionTemplate(context) { - var template = templates.suggestion; - return $(template(context)).attr("id", _.guid()); - } - function suggestionTemplate(context) { - return $('
').attr("id", _.guid()).text(displayFn(context)); - } - } - function isValidName(str) { - return /^[_a-zA-Z0-9-]+$/.test(str); - } - }(); - var Menu = function() { - "use strict"; - function Menu(o, www) { - var that = this; - o = o || {}; - if (!o.node) { - $.error("node is required"); - } - www.mixin(this); - this.$node = $(o.node); - this.query = null; - this.datasets = _.map(o.datasets, initializeDataset); - function initializeDataset(oDataset) { - var node = that.$node.find(oDataset.node).first(); - oDataset.node = node.length ? node : $("
").appendTo(that.$node); - return new Dataset(oDataset, www); - } - } - _.mixin(Menu.prototype, EventEmitter, { - _onSelectableClick: function onSelectableClick($e) { - this.trigger("selectableClicked", $($e.currentTarget)); - }, - _onRendered: function onRendered(type, dataset, suggestions, async) { - this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()); - this.trigger("datasetRendered", dataset, suggestions, async); - }, - _onCleared: function onCleared() { - this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()); - this.trigger("datasetCleared"); - }, - _propagate: function propagate() { - this.trigger.apply(this, arguments); - }, - _allDatasetsEmpty: function allDatasetsEmpty() { - return _.every(this.datasets, _.bind(function isDatasetEmpty(dataset) { - var isEmpty = dataset.isEmpty(); - this.$node.attr("aria-expanded", !isEmpty); - return isEmpty; - }, this)); - }, - _getSelectables: function getSelectables() { - return this.$node.find(this.selectors.selectable); - }, - _removeCursor: function _removeCursor() { - var $selectable = this.getActiveSelectable(); - $selectable && $selectable.removeClass(this.classes.cursor); - }, - _ensureVisible: function ensureVisible($el) { - var elTop, elBottom, nodeScrollTop, nodeHeight; - elTop = $el.position().top; - elBottom = elTop + $el.outerHeight(true); - nodeScrollTop = this.$node.scrollTop(); - nodeHeight = this.$node.height() + parseInt(this.$node.css("paddingTop"), 10) + parseInt(this.$node.css("paddingBottom"), 10); - if (elTop < 0) { - this.$node.scrollTop(nodeScrollTop + elTop); - } else if (nodeHeight < elBottom) { - this.$node.scrollTop(nodeScrollTop + (elBottom - nodeHeight)); - } - }, - bind: function() { - var that = this, onSelectableClick; - onSelectableClick = _.bind(this._onSelectableClick, this); - this.$node.on("click.tt", this.selectors.selectable, onSelectableClick); - this.$node.on("mouseover", this.selectors.selectable, function() { - that.setCursor($(this)); - }); - this.$node.on("mouseleave", function() { - that._removeCursor(); - }); - _.each(this.datasets, function(dataset) { - dataset.onSync("asyncRequested", that._propagate, that).onSync("asyncCanceled", that._propagate, that).onSync("asyncReceived", that._propagate, that).onSync("rendered", that._onRendered, that).onSync("cleared", that._onCleared, that); - }); - return this; - }, - isOpen: function isOpen() { - return this.$node.hasClass(this.classes.open); - }, - open: function open() { - this.$node.scrollTop(0); - this.$node.addClass(this.classes.open); - }, - close: function close() { - this.$node.attr("aria-expanded", false); - this.$node.removeClass(this.classes.open); - this._removeCursor(); - }, - setLanguageDirection: function setLanguageDirection(dir) { - this.$node.attr("dir", dir); - }, - selectableRelativeToCursor: function selectableRelativeToCursor(delta) { - var $selectables, $oldCursor, oldIndex, newIndex; - $oldCursor = this.getActiveSelectable(); - $selectables = this._getSelectables(); - oldIndex = $oldCursor ? $selectables.index($oldCursor) : -1; - newIndex = oldIndex + delta; - newIndex = (newIndex + 1) % ($selectables.length + 1) - 1; - newIndex = newIndex < -1 ? $selectables.length - 1 : newIndex; - return newIndex === -1 ? null : $selectables.eq(newIndex); - }, - setCursor: function setCursor($selectable) { - this._removeCursor(); - if ($selectable = $selectable && $selectable.first()) { - $selectable.addClass(this.classes.cursor); - this._ensureVisible($selectable); - } - }, - getSelectableData: function getSelectableData($el) { - return $el && $el.length ? Dataset.extractData($el) : null; - }, - getActiveSelectable: function getActiveSelectable() { - var $selectable = this._getSelectables().filter(this.selectors.cursor).first(); - return $selectable.length ? $selectable : null; - }, - getTopSelectable: function getTopSelectable() { - var $selectable = this._getSelectables().first(); - return $selectable.length ? $selectable : null; - }, - update: function update(query) { - var isValidUpdate = query !== this.query; - if (isValidUpdate) { - this.query = query; - _.each(this.datasets, updateDataset); - } - return isValidUpdate; - function updateDataset(dataset) { - dataset.update(query); - } - }, - empty: function empty() { - _.each(this.datasets, clearDataset); - this.query = null; - this.$node.addClass(this.classes.empty); - function clearDataset(dataset) { - dataset.clear(); - } - }, - destroy: function destroy() { - this.$node.off(".tt"); - this.$node = $("
"); - _.each(this.datasets, destroyDataset); - function destroyDataset(dataset) { - dataset.destroy(); - } - } - }); - return Menu; - }(); - var Status = function() { - "use strict"; - function Status(options) { - this.$el = $("", { - role: "status", - "aria-live": "polite" - }).css({ - position: "absolute", - padding: "0", - border: "0", - height: "1px", - width: "1px", - "margin-bottom": "-1px", - "margin-right": "-1px", - overflow: "hidden", - clip: "rect(0 0 0 0)", - "white-space": "nowrap" - }); - options.$input.after(this.$el); - _.each(options.menu.datasets, _.bind(function(dataset) { - if (dataset.onSync) { - dataset.onSync("rendered", _.bind(this.update, this)); - dataset.onSync("cleared", _.bind(this.cleared, this)); - } - }, this)); - } - _.mixin(Status.prototype, { - update: function update(event, suggestions) { - var length = suggestions.length; - var words; - if (length === 1) { - words = { - result: "result", - is: "is" - }; - } else { - words = { - result: "results", - is: "are" - }; - } - this.$el.text(length + " " + words.result + " " + words.is + " available, use up and down arrow keys to navigate."); - }, - cleared: function() { - this.$el.text(""); - } - }); - return Status; - }(); - var DefaultMenu = function() { - "use strict"; - var s = Menu.prototype; - function DefaultMenu() { - Menu.apply(this, [].slice.call(arguments, 0)); - } - _.mixin(DefaultMenu.prototype, Menu.prototype, { - open: function open() { - !this._allDatasetsEmpty() && this._show(); - return s.open.apply(this, [].slice.call(arguments, 0)); - }, - close: function close() { - this._hide(); - return s.close.apply(this, [].slice.call(arguments, 0)); - }, - _onRendered: function onRendered() { - if (this._allDatasetsEmpty()) { - this._hide(); - } else { - this.isOpen() && this._show(); - } - return s._onRendered.apply(this, [].slice.call(arguments, 0)); - }, - _onCleared: function onCleared() { - if (this._allDatasetsEmpty()) { - this._hide(); - } else { - this.isOpen() && this._show(); - } - return s._onCleared.apply(this, [].slice.call(arguments, 0)); - }, - setLanguageDirection: function setLanguageDirection(dir) { - this.$node.css(dir === "ltr" ? this.css.ltr : this.css.rtl); - return s.setLanguageDirection.apply(this, [].slice.call(arguments, 0)); - }, - _hide: function hide() { - this.$node.hide(); - }, - _show: function show() { - this.$node.css("display", "block"); - } - }); - return DefaultMenu; - }(); - var Typeahead = function() { - "use strict"; - function Typeahead(o, www) { - var onFocused, onBlurred, onEnterKeyed, onTabKeyed, onEscKeyed, onUpKeyed, onDownKeyed, onLeftKeyed, onRightKeyed, onQueryChanged, onWhitespaceChanged; - o = o || {}; - if (!o.input) { - $.error("missing input"); - } - if (!o.menu) { - $.error("missing menu"); - } - if (!o.eventBus) { - $.error("missing event bus"); - } - www.mixin(this); - this.eventBus = o.eventBus; - this.minLength = _.isNumber(o.minLength) ? o.minLength : 1; - this.input = o.input; - this.menu = o.menu; - this.enabled = true; - this.autoselect = !!o.autoselect; - this.active = false; - this.input.hasFocus() && this.activate(); - this.dir = this.input.getLangDir(); - this._hacks(); - this.menu.bind().onSync("selectableClicked", this._onSelectableClicked, this).onSync("asyncRequested", this._onAsyncRequested, this).onSync("asyncCanceled", this._onAsyncCanceled, this).onSync("asyncReceived", this._onAsyncReceived, this).onSync("datasetRendered", this._onDatasetRendered, this).onSync("datasetCleared", this._onDatasetCleared, this); - onFocused = c(this, "activate", "open", "_onFocused"); - onBlurred = c(this, "deactivate", "_onBlurred"); - onEnterKeyed = c(this, "isActive", "isOpen", "_onEnterKeyed"); - onTabKeyed = c(this, "isActive", "isOpen", "_onTabKeyed"); - onEscKeyed = c(this, "isActive", "_onEscKeyed"); - onUpKeyed = c(this, "isActive", "open", "_onUpKeyed"); - onDownKeyed = c(this, "isActive", "open", "_onDownKeyed"); - onLeftKeyed = c(this, "isActive", "isOpen", "_onLeftKeyed"); - onRightKeyed = c(this, "isActive", "isOpen", "_onRightKeyed"); - onQueryChanged = c(this, "_openIfActive", "_onQueryChanged"); - onWhitespaceChanged = c(this, "_openIfActive", "_onWhitespaceChanged"); - this.input.bind().onSync("focused", onFocused, this).onSync("blurred", onBlurred, this).onSync("enterKeyed", onEnterKeyed, this).onSync("tabKeyed", onTabKeyed, this).onSync("escKeyed", onEscKeyed, this).onSync("upKeyed", onUpKeyed, this).onSync("downKeyed", onDownKeyed, this).onSync("leftKeyed", onLeftKeyed, this).onSync("rightKeyed", onRightKeyed, this).onSync("queryChanged", onQueryChanged, this).onSync("whitespaceChanged", onWhitespaceChanged, this).onSync("langDirChanged", this._onLangDirChanged, this); - } - _.mixin(Typeahead.prototype, { - _hacks: function hacks() { - var $input, $menu; - $input = this.input.$input || $("
"); - $menu = this.menu.$node || $("
"); - $input.on("blur.tt", function($e) { - var active, isActive, hasActive; - active = document.activeElement; - isActive = $menu.is(active); - hasActive = $menu.has(active).length > 0; - if (_.isMsie() && (isActive || hasActive)) { - $e.preventDefault(); - $e.stopImmediatePropagation(); - _.defer(function() { - $input.focus(); - }); - } - }); - $menu.on("mousedown.tt", function($e) { - $e.preventDefault(); - }); - }, - _onSelectableClicked: function onSelectableClicked(type, $el) { - this.select($el); - }, - _onDatasetCleared: function onDatasetCleared() { - this._updateHint(); - }, - _onDatasetRendered: function onDatasetRendered(type, suggestions, async, dataset) { - this._updateHint(); - if (this.autoselect) { - var cursorClass = this.selectors.cursor.substr(1); - this.menu.$node.find(this.selectors.suggestion).first().addClass(cursorClass); - } - this.eventBus.trigger("render", suggestions, async, dataset); - }, - _onAsyncRequested: function onAsyncRequested(type, dataset, query) { - this.eventBus.trigger("asyncrequest", query, dataset); - }, - _onAsyncCanceled: function onAsyncCanceled(type, dataset, query) { - this.eventBus.trigger("asynccancel", query, dataset); - }, - _onAsyncReceived: function onAsyncReceived(type, dataset, query) { - this.eventBus.trigger("asyncreceive", query, dataset); - }, - _onFocused: function onFocused() { - this._minLengthMet() && this.menu.update(this.input.getQuery()); - }, - _onBlurred: function onBlurred() { - if (this.input.hasQueryChangedSinceLastFocus()) { - this.eventBus.trigger("change", this.input.getQuery()); - } - }, - _onEnterKeyed: function onEnterKeyed(type, $e) { - var $selectable; - if ($selectable = this.menu.getActiveSelectable()) { - if (this.select($selectable)) { - $e.preventDefault(); - $e.stopPropagation(); - } - } else if (this.autoselect) { - if (this.select(this.menu.getTopSelectable())) { - $e.preventDefault(); - $e.stopPropagation(); - } - } - }, - _onTabKeyed: function onTabKeyed(type, $e) { - var $selectable; - if ($selectable = this.menu.getActiveSelectable()) { - this.select($selectable) && $e.preventDefault(); - } else if (this.autoselect) { - if ($selectable = this.menu.getTopSelectable()) { - this.autocomplete($selectable) && $e.preventDefault(); - } - } - }, - _onEscKeyed: function onEscKeyed() { - this.close(); - }, - _onUpKeyed: function onUpKeyed() { - this.moveCursor(-1); - }, - _onDownKeyed: function onDownKeyed() { - this.moveCursor(+1); - }, - _onLeftKeyed: function onLeftKeyed() { - if (this.dir === "rtl" && this.input.isCursorAtEnd()) { - this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable()); - } - }, - _onRightKeyed: function onRightKeyed() { - if (this.dir === "ltr" && this.input.isCursorAtEnd()) { - this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable()); - } - }, - _onQueryChanged: function onQueryChanged(e, query) { - this._minLengthMet(query) ? this.menu.update(query) : this.menu.empty(); - }, - _onWhitespaceChanged: function onWhitespaceChanged() { - this._updateHint(); - }, - _onLangDirChanged: function onLangDirChanged(e, dir) { - if (this.dir !== dir) { - this.dir = dir; - this.menu.setLanguageDirection(dir); - } - }, - _openIfActive: function openIfActive() { - this.isActive() && this.open(); - }, - _minLengthMet: function minLengthMet(query) { - query = _.isString(query) ? query : this.input.getQuery() || ""; - return query.length >= this.minLength; - }, - _updateHint: function updateHint() { - var $selectable, data, val, query, escapedQuery, frontMatchRegEx, match; - $selectable = this.menu.getTopSelectable(); - data = this.menu.getSelectableData($selectable); - val = this.input.getInputValue(); - if (data && !_.isBlankString(val) && !this.input.hasOverflow()) { - query = Input.normalizeQuery(val); - escapedQuery = _.escapeRegExChars(query); - frontMatchRegEx = new RegExp("^(?:" + escapedQuery + ")(.+$)", "i"); - match = frontMatchRegEx.exec(data.val); - match && this.input.setHint(val + match[1]); - } else { - this.input.clearHint(); - } - }, - isEnabled: function isEnabled() { - return this.enabled; - }, - enable: function enable() { - this.enabled = true; - }, - disable: function disable() { - this.enabled = false; - }, - isActive: function isActive() { - return this.active; - }, - activate: function activate() { - if (this.isActive()) { - return true; - } else if (!this.isEnabled() || this.eventBus.before("active")) { - return false; - } else { - this.active = true; - this.eventBus.trigger("active"); - return true; - } - }, - deactivate: function deactivate() { - if (!this.isActive()) { - return true; - } else if (this.eventBus.before("idle")) { - return false; - } else { - this.active = false; - this.close(); - this.eventBus.trigger("idle"); - return true; - } - }, - isOpen: function isOpen() { - return this.menu.isOpen(); - }, - open: function open() { - if (!this.isOpen() && !this.eventBus.before("open")) { - this.input.setAriaExpanded(true); - this.menu.open(); - this._updateHint(); - this.eventBus.trigger("open"); - } - return this.isOpen(); - }, - close: function close() { - if (this.isOpen() && !this.eventBus.before("close")) { - this.input.setAriaExpanded(false); - this.menu.close(); - this.input.clearHint(); - this.input.resetInputValue(); - this.eventBus.trigger("close"); - } - return !this.isOpen(); - }, - setVal: function setVal(val) { - this.input.setQuery(_.toStr(val)); - }, - getVal: function getVal() { - return this.input.getQuery(); - }, - select: function select($selectable) { - var data = this.menu.getSelectableData($selectable); - if (data && !this.eventBus.before("select", data.obj, data.dataset)) { - this.input.setQuery(data.val, true); - this.eventBus.trigger("select", data.obj, data.dataset); - this.close(); - return true; - } - return false; - }, - autocomplete: function autocomplete($selectable) { - var query, data, isValid; - query = this.input.getQuery(); - data = this.menu.getSelectableData($selectable); - isValid = data && query !== data.val; - if (isValid && !this.eventBus.before("autocomplete", data.obj, data.dataset)) { - this.input.setQuery(data.val); - this.eventBus.trigger("autocomplete", data.obj, data.dataset); - return true; - } - return false; - }, - moveCursor: function moveCursor(delta) { - var query, $candidate, data, suggestion, datasetName, cancelMove, id; - query = this.input.getQuery(); - $candidate = this.menu.selectableRelativeToCursor(delta); - data = this.menu.getSelectableData($candidate); - suggestion = data ? data.obj : null; - datasetName = data ? data.dataset : null; - id = $candidate ? $candidate.attr("id") : null; - this.input.trigger("cursorchange", id); - cancelMove = this._minLengthMet() && this.menu.update(query); - if (!cancelMove && !this.eventBus.before("cursorchange", suggestion, datasetName)) { - this.menu.setCursor($candidate); - if (data) { - if (typeof data.val === "string") { - this.input.setInputValue(data.val); - } - } else { - this.input.resetInputValue(); - this._updateHint(); - } - this.eventBus.trigger("cursorchange", suggestion, datasetName); - return true; - } - return false; - }, - destroy: function destroy() { - this.input.destroy(); - this.menu.destroy(); - } - }); - return Typeahead; - function c(ctx) { - var methods = [].slice.call(arguments, 1); - return function() { - var args = [].slice.call(arguments); - _.each(methods, function(method) { - return ctx[method].apply(ctx, args); - }); - }; - } - }(); - (function() { - "use strict"; - var old, keys, methods; - old = $.fn.typeahead; - keys = { - www: "tt-www", - attrs: "tt-attrs", - typeahead: "tt-typeahead" - }; - methods = { - initialize: function initialize(o, datasets) { - var www; - datasets = _.isArray(datasets) ? datasets : [].slice.call(arguments, 1); - o = o || {}; - www = WWW(o.classNames); - return this.each(attach); - function attach() { - var $input, $wrapper, $hint, $menu, defaultHint, defaultMenu, eventBus, input, menu, status, typeahead, MenuConstructor; - _.each(datasets, function(d) { - d.highlight = !!o.highlight; - }); - $input = $(this); - $wrapper = $(www.html.wrapper); - $hint = $elOrNull(o.hint); - $menu = $elOrNull(o.menu); - defaultHint = o.hint !== false && !$hint; - defaultMenu = o.menu !== false && !$menu; - defaultHint && ($hint = buildHintFromInput($input, www)); - defaultMenu && ($menu = $(www.html.menu).css(www.css.menu)); - $hint && $hint.val(""); - $input = prepInput($input, www); - if (defaultHint || defaultMenu) { - $wrapper.css(www.css.wrapper); - $input.css(defaultHint ? www.css.input : www.css.inputWithNoHint); - $input.wrap($wrapper).parent().prepend(defaultHint ? $hint : null).append(defaultMenu ? $menu : null); - } - MenuConstructor = defaultMenu ? DefaultMenu : Menu; - eventBus = new EventBus({ - el: $input - }); - input = new Input({ - hint: $hint, - input: $input, - menu: $menu - }, www); - menu = new MenuConstructor({ - node: $menu, - datasets: datasets - }, www); - status = new Status({ - $input: $input, - menu: menu - }); - typeahead = new Typeahead({ - input: input, - menu: menu, - eventBus: eventBus, - minLength: o.minLength, - autoselect: o.autoselect - }, www); - $input.data(keys.www, www); - $input.data(keys.typeahead, typeahead); - } - }, - isEnabled: function isEnabled() { - var enabled; - ttEach(this.first(), function(t) { - enabled = t.isEnabled(); - }); - return enabled; - }, - enable: function enable() { - ttEach(this, function(t) { - t.enable(); - }); - return this; - }, - disable: function disable() { - ttEach(this, function(t) { - t.disable(); - }); - return this; - }, - isActive: function isActive() { - var active; - ttEach(this.first(), function(t) { - active = t.isActive(); - }); - return active; - }, - activate: function activate() { - ttEach(this, function(t) { - t.activate(); - }); - return this; - }, - deactivate: function deactivate() { - ttEach(this, function(t) { - t.deactivate(); - }); - return this; - }, - isOpen: function isOpen() { - var open; - ttEach(this.first(), function(t) { - open = t.isOpen(); - }); - return open; - }, - open: function open() { - ttEach(this, function(t) { - t.open(); - }); - return this; - }, - close: function close() { - ttEach(this, function(t) { - t.close(); - }); - return this; - }, - select: function select(el) { - var success = false, $el = $(el); - ttEach(this.first(), function(t) { - success = t.select($el); - }); - return success; - }, - autocomplete: function autocomplete(el) { - var success = false, $el = $(el); - ttEach(this.first(), function(t) { - success = t.autocomplete($el); - }); - return success; - }, - moveCursor: function moveCursoe(delta) { - var success = false; - ttEach(this.first(), function(t) { - success = t.moveCursor(delta); - }); - return success; - }, - val: function val(newVal) { - var query; - if (!arguments.length) { - ttEach(this.first(), function(t) { - query = t.getVal(); - }); - return query; - } else { - ttEach(this, function(t) { - t.setVal(_.toStr(newVal)); - }); - return this; - } - }, - destroy: function destroy() { - ttEach(this, function(typeahead, $input) { - revert($input); - typeahead.destroy(); - }); - return this; - } - }; - $.fn.typeahead = function(method) { - if (methods[method]) { - return methods[method].apply(this, [].slice.call(arguments, 1)); - } else { - return methods.initialize.apply(this, arguments); - } - }; - $.fn.typeahead.noConflict = function noConflict() { - $.fn.typeahead = old; - return this; - }; - function ttEach($els, fn) { - $els.each(function() { - var $input = $(this), typeahead; - (typeahead = $input.data(keys.typeahead)) && fn(typeahead, $input); - }); - } - function buildHintFromInput($input, www) { - return $input.clone().addClass(www.classes.hint).removeData().css(www.css.hint).css(getBackgroundStyles($input)).prop({ - readonly: true, - required: false - }).removeAttr("id name placeholder").removeClass("required").attr({ - spellcheck: "false", - tabindex: -1 - }); - } - function prepInput($input, www) { - $input.data(keys.attrs, { - dir: $input.attr("dir"), - autocomplete: $input.attr("autocomplete"), - spellcheck: $input.attr("spellcheck"), - style: $input.attr("style") - }); - $input.addClass(www.classes.input).attr({ - spellcheck: false - }); - try { - !$input.attr("dir") && $input.attr("dir", "auto"); - } catch (e) {} - return $input; - } - function getBackgroundStyles($el) { - return { - backgroundAttachment: $el.css("background-attachment"), - backgroundClip: $el.css("background-clip"), - backgroundColor: $el.css("background-color"), - backgroundImage: $el.css("background-image"), - backgroundOrigin: $el.css("background-origin"), - backgroundPosition: $el.css("background-position"), - backgroundRepeat: $el.css("background-repeat"), - backgroundSize: $el.css("background-size") - }; - } - function revert($input) { - var www, $wrapper; - www = $input.data(keys.www); - $wrapper = $input.parent().filter(www.selectors.wrapper); - _.each($input.data(keys.attrs), function(val, key) { - _.isUndefined(val) ? $input.removeAttr(key) : $input.attr(key, val); - }); - $input.removeData(keys.typeahead).removeData(keys.www).removeData(keys.attr).removeClass(www.classes.input); - if ($wrapper.length) { - $input.detach().insertAfter($wrapper); - $wrapper.remove(); - } - } - function $elOrNull(obj) { - var isValid, $el; - isValid = _.isJQuery(obj) || _.isElement(obj); - $el = isValid ? $(obj).first() : []; - return $el.length ? $el : null; - } - })(); -}); \ No newline at end of file diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/large_tuple.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/large_tuple.html deleted file mode 100644 index 01d509ed5..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/large_tuple.html +++ /dev/null @@ -1,492 +0,0 @@ - - - - large_tuple Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Large Tuple

- -

Tuples shouldn’t have too many members. Create a custom type instead.

- -
    -
  • Identifier: large_tuple
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning: 2, error: 3
  • -
-

Non Triggering Examples

-
let foo: (Int, Int)
-
-
-
let foo: (start: Int, end: Int)
-
-
-
let foo: (Int, (Int, String))
-
-
-
func foo() -> (Int, Int)
-
-
-
func foo() -> (Int, Int) {}
-
-
-
func foo(bar: String) -> (Int, Int)
-
-
-
func foo(bar: String) -> (Int, Int) {}
-
-
-
func foo() throws -> (Int, Int)
-
-
-
func foo() throws -> (Int, Int) {}
-
-
-
let foo: (Int, Int, Int) -> Void
-
-
-
let foo: (Int, Int, Int) throws -> Void
-
-
-
func foo(bar: (Int, String, Float) -> Void)
-
-
-
func foo(bar: (Int, String, Float) throws -> Void)
-
-
-
var completionHandler: ((_ data: Data?, _ resp: URLResponse?, _ e: NSError?) -> Void)!
-
-
-
func getDictionaryAndInt() -> (Dictionary<Int, String>, Int)?
-
-
-
func getGenericTypeAndInt() -> (Type<Int, String, Float>, Int)?
-
-
-
func foo() async -> (Int, Int)
-
-
-
func foo() async -> (Int, Int) {}
-
-
-
func foo(bar: String) async -> (Int, Int)
-
-
-
func foo(bar: String) async -> (Int, Int) {}
-
-
-
func foo() async throws -> (Int, Int)
-
-
-
func foo() async throws -> (Int, Int) {}
-
-
-
let foo: (Int, Int, Int) async -> Void
-
-
-
let foo: (Int, Int, Int) async throws -> Void
-
-
-
func foo(bar: (Int, String, Float) async -> Void)
-
-
-
func foo(bar: (Int, String, Float) async throws -> Void)
-
-
-
func getDictionaryAndInt() async -> (Dictionary<Int, String>, Int)?
-
-
-
func getGenericTypeAndInt() async -> (Type<Int, String, Float>, Int)?
-
-
-

Triggering Examples

-
↓let foo: (Int, Int, Int)
-
-
-
↓let foo: (start: Int, end: Int, value: String)
-
-
-
↓let foo: (Int, (Int, Int, Int))
-
-
-
func foo(↓bar: (Int, Int, Int))
-
-
-
func foo() -> ↓(Int, Int, Int)
-
-
-
func foo() -> ↓(Int, Int, Int) {}
-
-
-
func foo(bar: String) -> ↓(Int, Int, Int)
-
-
-
func foo(bar: String) -> ↓(Int, Int, Int) {}
-
-
-
func foo() throws -> ↓(Int, Int, Int)
-
-
-
func foo() throws -> ↓(Int, Int, Int) {}
-
-
-
func foo() throws -> ↓(Int, ↓(String, String, String), Int) {}
-
-
-
func getDictionaryAndInt() -> (Dictionary<Int, ↓(String, String, String)>, Int)?
-
-
-
func foo(↓bar: (Int, Int, Int)) async
-
-
-
func foo() async -> ↓(Int, Int, Int)
-
-
-
func foo() async -> ↓(Int, Int, Int) {}
-
-
-
func foo(bar: String) async -> ↓(Int, Int, Int)
-
-
-
func foo(bar: String) async -> ↓(Int, Int, Int) {}
-
-
-
func foo() async throws -> ↓(Int, Int, Int)
-
-
-
func foo() async throws -> ↓(Int, Int, Int) {}
-
-
-
func foo() async throws -> ↓(Int, ↓(String, String, String), Int) {}
-
-
-
func getDictionaryAndInt() async -> (Dictionary<Int, ↓(String, String, String)>, Int)?
-
-
- -
-
- - -
-
- - -
- diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/last_where.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/last_where.html deleted file mode 100644 index 8cf2c4fd0..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/last_where.html +++ /dev/null @@ -1,381 +0,0 @@ - - - - last_where Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Last Where

- -

Prefer using .last(where:) over .filter { }.last in collections.

- -
    -
  • Identifier: last_where
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
kinds.filter(excludingKinds.contains).isEmpty && kinds.last == .identifier
-
-
-
myList.last(where: { $0 % 2 == 0 })
-
-
-
match(pattern: pattern).filter { $0.last == .identifier }
-
-
-
(myList.filter { $0 == 1 }.suffix(2)).last
-
-
-
collection.filter("stringCol = '3'").last
-
-

Triggering Examples

-
↓myList.filter { $0 % 2 == 0 }.last
-
-
-
↓myList.filter({ $0 % 2 == 0 }).last
-
-
-
↓myList.map { $0 + 1 }.filter({ $0 % 2 == 0 }).last
-
-
-
↓myList.map { $0 + 1 }.filter({ $0 % 2 == 0 }).last?.something()
-
-
-
↓myList.filter(someFunction).last
-
-
-
↓myList.filter({ $0 % 2 == 0 })
-.last
-
-
-
(↓myList.filter { $0 == 1 }).last
-
-
- -
-
- - -
-
- - -
- diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/leading_whitespace.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/leading_whitespace.html deleted file mode 100644 index 88fd2a2d2..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/leading_whitespace.html +++ /dev/null @@ -1,355 +0,0 @@ - - - - leading_whitespace Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Leading Whitespace

- -

Files should not contain leading whitespace.

- -
    -
  • Identifier: leading_whitespace
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
//
-
-
-

Triggering Examples

-

-//
-
-
-
 //
-
-
- -
-
- - -
-
- - -
- diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_cggeometry_functions.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_cggeometry_functions.html deleted file mode 100644 index 82271a30a..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_cggeometry_functions.html +++ /dev/null @@ -1,425 +0,0 @@ - - - - legacy_cggeometry_functions Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Legacy CGGeometry Functions

- -

Struct extension properties and methods are preferred over legacy functions

- -
    -
  • Identifier: legacy_cggeometry_functions
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
rect.width
-
-
rect.height
-
-
rect.minX
-
-
rect.midX
-
-
rect.maxX
-
-
rect.minY
-
-
rect.midY
-
-
rect.maxY
-
-
rect.isNull
-
-
rect.isEmpty
-
-
rect.isInfinite
-
-
rect.standardized
-
-
rect.integral
-
-
rect.insetBy(dx: 5.0, dy: -7.0)
-
-
rect.offsetBy(dx: 5.0, dy: -7.0)
-
-
rect1.union(rect2)
-
-
rect1.intersect(rect2)
-
-
rect1.contains(rect2)
-
-
rect.contains(point)
-
-
rect1.intersects(rect2)
-
-

Triggering Examples

-
↓CGRectGetWidth(rect)
-
-
↓CGRectGetHeight(rect)
-
-
↓CGRectGetMinX(rect)
-
-
↓CGRectGetMidX(rect)
-
-
↓CGRectGetMaxX(rect)
-
-
↓CGRectGetMinY(rect)
-
-
↓CGRectGetMidY(rect)
-
-
↓CGRectGetMaxY(rect)
-
-
↓CGRectIsNull(rect)
-
-
↓CGRectIsEmpty(rect)
-
-
↓CGRectIsInfinite(rect)
-
-
↓CGRectStandardize(rect)
-
-
↓CGRectIntegral(rect)
-
-
↓CGRectInset(rect, 10, 5)
-
-
↓CGRectOffset(rect, -2, 8.3)
-
-
↓CGRectUnion(rect1, rect2)
-
-
↓CGRectIntersection(rect1, rect2)
-
-
↓CGRectContainsRect(rect1, rect2)
-
-
↓CGRectContainsPoint(rect, point)
-
-
↓CGRectIntersectsRect(rect1, rect2)
-
- -
-
- - -
-
- - -
- diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_constant.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_constant.html deleted file mode 100644 index 84601e9ed..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_constant.html +++ /dev/null @@ -1,385 +0,0 @@ - - - - legacy_constant Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Legacy Constant

- -

Struct-scoped constants are preferred over legacy global constants.

- -
    -
  • Identifier: legacy_constant
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
CGRect.infinite
-
-
CGPoint.zero
-
-
CGRect.zero
-
-
CGSize.zero
-
-
NSPoint.zero
-
-
NSRect.zero
-
-
NSSize.zero
-
-
CGRect.null
-
-
CGFloat.pi
-
-
Float.pi
-
-

Triggering Examples

-
↓CGRectInfinite
-
-
↓CGPointZero
-
-
↓CGRectZero
-
-
↓CGSizeZero
-
-
↓NSZeroPoint
-
-
↓NSZeroRect
-
-
↓NSZeroSize
-
-
↓CGRectNull
-
-
↓CGFloat(M_PI)
-
-
↓Float(M_PI)
-
- -
-
- - -
-
- - -
- diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_constructor.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_constructor.html deleted file mode 100644 index 3064806d9..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_constructor.html +++ /dev/null @@ -1,439 +0,0 @@ - - - - legacy_constructor Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Legacy Constructor

- -

Swift constructors are preferred over legacy convenience functions.

- -
    -
  • Identifier: legacy_constructor
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
CGPoint(x: 10, y: 10)
-
-
CGPoint(x: xValue, y: yValue)
-
-
CGSize(width: 10, height: 10)
-
-
CGSize(width: aWidth, height: aHeight)
-
-
CGRect(x: 0, y: 0, width: 10, height: 10)
-
-
CGRect(x: xVal, y: yVal, width: aWidth, height: aHeight)
-
-
CGVector(dx: 10, dy: 10)
-
-
CGVector(dx: deltaX, dy: deltaY)
-
-
NSPoint(x: 10, y: 10)
-
-
NSPoint(x: xValue, y: yValue)
-
-
NSSize(width: 10, height: 10)
-
-
NSSize(width: aWidth, height: aHeight)
-
-
NSRect(x: 0, y: 0, width: 10, height: 10)
-
-
NSRect(x: xVal, y: yVal, width: aWidth, height: aHeight)
-
-
NSRange(location: 10, length: 1)
-
-
NSRange(location: loc, length: len)
-
-
UIEdgeInsets(top: 0, left: 0, bottom: 10, right: 10)
-
-
UIEdgeInsets(top: aTop, left: aLeft, bottom: aBottom, right: aRight)
-
-
NSEdgeInsets(top: 0, left: 0, bottom: 10, right: 10)
-
-
NSEdgeInsets(top: aTop, left: aLeft, bottom: aBottom, right: aRight)
-
-
UIOffset(horizontal: 0, vertical: 10)
-
-
UIOffset(horizontal: horizontal, vertical: vertical)
-
-

Triggering Examples

-
↓CGPointMake(10, 10)
-
-
↓CGPointMake(xVal, yVal)
-
-
↓CGPointMake(calculateX(), 10)
-
-
-
↓CGSizeMake(10, 10)
-
-
↓CGSizeMake(aWidth, aHeight)
-
-
↓CGRectMake(0, 0, 10, 10)
-
-
↓CGRectMake(xVal, yVal, width, height)
-
-
↓CGVectorMake(10, 10)
-
-
↓CGVectorMake(deltaX, deltaY)
-
-
↓NSMakePoint(10, 10)
-
-
↓NSMakePoint(xVal, yVal)
-
-
↓NSMakeSize(10, 10)
-
-
↓NSMakeSize(aWidth, aHeight)
-
-
↓NSMakeRect(0, 0, 10, 10)
-
-
↓NSMakeRect(xVal, yVal, width, height)
-
-
↓NSMakeRange(10, 1)
-
-
↓NSMakeRange(loc, len)
-
-
↓UIEdgeInsetsMake(0, 0, 10, 10)
-
-
↓UIEdgeInsetsMake(top, left, bottom, right)
-
-
↓NSEdgeInsetsMake(0, 0, 10, 10)
-
-
↓NSEdgeInsetsMake(top, left, bottom, right)
-
-
↓CGVectorMake(10, 10)
-↓NSMakeRange(10, 1)
-
-
↓UIOffsetMake(0, 10)
-
-
↓UIOffsetMake(horizontal, vertical)
-
- -
-
- - -
-
- - -
- diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_hashing.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_hashing.html deleted file mode 100644 index 17dce3154..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_hashing.html +++ /dev/null @@ -1,398 +0,0 @@ - - - - legacy_hashing Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Legacy Hashing

- -

Prefer using the hash(into:) function instead of overriding hashValue

- -
    -
  • Identifier: legacy_hashing
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
struct Foo: Hashable {
-  let bar: Int = 10
-
-  func hash(into hasher: inout Hasher) {
-    hasher.combine(bar)
-  }
-}
-
-
class Foo: Hashable {
-  let bar: Int = 10
-
-  func hash(into hasher: inout Hasher) {
-    hasher.combine(bar)
-  }
-}
-
-
var hashValue: Int { return 1 }
-class Foo: Hashable { 
- }
-
-
class Foo: Hashable {
-  let bar: String = "Foo"
-
-  public var hashValue: String {
-    return bar
-  }
-}
-
-
class Foo: Hashable {
-  let bar: String = "Foo"
-
-  public var hashValue: String {
-    get { return bar }
-    set { bar = newValue }
-  }
-}
-
-

Triggering Examples

-
struct Foo: Hashable {
-    let bar: Int = 10
-
-    public ↓var hashValue: Int {
-        return bar
-    }
-}
-
-
class Foo: Hashable {
-    let bar: Int = 10
-
-    public ↓var hashValue: Int {
-        return bar
-    }
-}
-
- -
-
- - -
-
- - -
- diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_multiple.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_multiple.html deleted file mode 100644 index 7c221174f..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_multiple.html +++ /dev/null @@ -1,374 +0,0 @@ - - - - legacy_multiple Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Legacy Multiple

- -

Prefer using the isMultiple(of:) function instead of using the remainder operator (%).

- -
    -
  • Identifier: legacy_multiple
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
cell.contentView.backgroundColor = indexPath.row.isMultiple(of: 2) ? .gray : .white
-
-
guard count.isMultiple(of: 2) else { throw DecodingError.dataCorrupted(...) }
-
-
sanityCheck(bytes > 0 && bytes.isMultiple(of: 4), "capacity must be multiple of 4 bytes")
-
-
guard let i = reversedNumbers.firstIndex(where: { $0.isMultiple(of: 2) }) else { return }
-
-
let constant = 56
-let isMultiple = value.isMultiple(of: constant)
-
-
let constant = 56
-let secret = value % constant == 5
-
-
let secretValue = (value % 3) + 2
-
-

Triggering Examples

-
cell.contentView.backgroundColor = indexPath.row ↓% 2 == 0 ? .gray : .white
-
-
cell.contentView.backgroundColor = indexPath.row ↓% 2 != 0 ? .gray : .white
-
-
guard count ↓% 2 == 0 else { throw DecodingError.dataCorrupted(...) }
-
-
sanityCheck(bytes > 0 && bytes ↓% 4 == 0, "capacity must be multiple of 4 bytes")
-
-
guard let i = reversedNumbers.firstIndex(where: { $0 ↓% 2 == 0 }) else { return }
-
-
let constant = 56
-let isMultiple = value ↓% constant == 0
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_nsgeometry_functions.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_nsgeometry_functions.html deleted file mode 100644 index 65e103bd6..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_nsgeometry_functions.html +++ /dev/null @@ -1,421 +0,0 @@ - - - - legacy_nsgeometry_functions Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Legacy NSGeometry Functions

- -

Struct extension properties and methods are preferred over legacy functions

- -
    -
  • Identifier: legacy_nsgeometry_functions
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
rect.width
-
-
rect.height
-
-
rect.minX
-
-
rect.midX
-
-
rect.maxX
-
-
rect.minY
-
-
rect.midY
-
-
rect.maxY
-
-
rect.isEmpty
-
-
rect.integral
-
-
rect.insetBy(dx: 5.0, dy: -7.0)
-
-
rect.offsetBy(dx: 5.0, dy: -7.0)
-
-
rect1.union(rect2)
-
-
rect1.intersect(rect2)
-
-
rect1.contains(rect2)
-
-
rect.contains(point)
-
-
rect1.intersects(rect2)
-
-

Triggering Examples

-
↓NSWidth(rect)
-
-
↓NSHeight(rect)
-
-
↓NSMinX(rect)
-
-
↓NSMidX(rect)
-
-
↓NSMaxX(rect)
-
-
↓NSMinY(rect)
-
-
↓NSMidY(rect)
-
-
↓NSMaxY(rect)
-
-
↓NSEqualRects(rect1, rect2)
-
-
↓NSEqualSizes(size1, size2)
-
-
↓NSEqualPoints(point1, point2)
-
-
↓NSEdgeInsetsEqual(insets2, insets2)
-
-
↓NSIsEmptyRect(rect)
-
-
↓NSIntegralRect(rect)
-
-
↓NSInsetRect(rect, 10, 5)
-
-
↓NSOffsetRect(rect, -2, 8.3)
-
-
↓NSUnionRect(rect1, rect2)
-
-
↓NSIntersectionRect(rect1, rect2)
-
-
↓NSContainsRect(rect1, rect2)
-
-
↓NSPointInRect(rect, point)
-
-
↓NSIntersectsRect(rect1, rect2)
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_objc_type.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_objc_type.html deleted file mode 100644 index 28b50d72a..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_objc_type.html +++ /dev/null @@ -1,358 +0,0 @@ - - - - legacy_objc_type Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Legacy Objective-C Reference Type

- -

Prefer Swift value types to bridged Objective-C reference types

- -
    -
  • Identifier: legacy_objc_type
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
var array = Array<Int>()
-
-
-
var calendar: Calendar? = nil
-
-
var formatter: NSDataDetector
-
-
var className: String = NSStringFromClass(MyClass.self)
-
-

Triggering Examples

-
var array = NSArray()
-
-
var calendar: NSCalendar? = nil
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_random.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_random.html deleted file mode 100644 index 51fd2e61a..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_random.html +++ /dev/null @@ -1,363 +0,0 @@ - - - - legacy_random Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Legacy Random

- -

Prefer using type.random(in:) over legacy functions.

- -
    -
  • Identifier: legacy_random
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
Int.random(in: 0..<10)
-
-
-
Double.random(in: 8.6...111.34)
-
-
-
Float.random(in: 0 ..< 1)
-
-
-

Triggering Examples

-
↓arc4random(10)
-
-
-
↓arc4random_uniform(83)
-
-
-
↓drand48(52)
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/let_var_whitespace.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/let_var_whitespace.html deleted file mode 100644 index 8adabe9cf..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/let_var_whitespace.html +++ /dev/null @@ -1,457 +0,0 @@ - - - - let_var_whitespace Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Variable Declaration Whitespace

- -

Let and var should be separated from other statements by a blank line.

- -
    -
  • Identifier: let_var_whitespace
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let a = 0
-var x = 1
-
-x = 2
-
-
-
a = 5
-
-var x = 1
-
-
-
struct X {
-    var a = 0
-}
-
-
-
let a = 1 +
-    2
-let b = 5
-
-
-
var x: Int {
-    return 0
-}
-
-
-
var x: Int {
-    let a = 0
-
-    return a
-}
-
-
-
#if os(macOS)
-let a = 0
-#endif
-
-
-
#warning("TODO: remove it")
-let a = 0
-
-
-
#error("TODO: remove it")
-let a = 0
-
-
-
@available(swift 4)
-let a = 0
-
-
-
class C {
-    @objc
-    var s: String = ""
-}
-
-
class C {
-    @objc
-    func a() {}
-}
-
-
class C {
-    var x = 0
-    lazy
-    var y = 0
-}
-
-
-
@available(OSX, introduced: 10.6)
-@available(*, deprecated)
-var x = 0
-
-
-
// swiftlint:disable superfluous_disable_command
-// swiftlint:disable force_cast
-
-let x = bar as! Bar
-
-
var x: Int {
-    let a = 0
-    return a
-}
-
-
-

Triggering Examples

-
var x = 1
-↓x = 2
-
-
-

-a = 5
-↓var x = 1
-
-
-
struct X {
-    let a
-    ↓func x() {}
-}
-
-
-
var x = 0
-↓@objc func f() {}
-
-
-
var x = 0
-↓@objc
-    func f() {}
-
-
-
@objc func f() {
-}
-↓var x = 0
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/line_length.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/line_length.html deleted file mode 100644 index 8ab5027c4..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/line_length.html +++ /dev/null @@ -1,363 +0,0 @@ - - - - line_length Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Line Length

- -

Lines should not span too many characters.

- -
    -
  • Identifier: line_length
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning: 120, error: 200, ignores urls: false, ignores function declarations: false, ignores comments: false, ignores interpolated strings: false
  • -
-

Non Triggering Examples

-
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-
-
#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)
-
-
-
#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")
-
-
-

Triggering Examples

-
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-
-
#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)
-
-
-
#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/literal_expression_end_indentation.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/literal_expression_end_indentation.html deleted file mode 100644 index f0dd4e22e..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/literal_expression_end_indentation.html +++ /dev/null @@ -1,390 +0,0 @@ - - - - literal_expression_end_indentation Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Literal Expression End Indentation

- -

Array and dictionary literal end should have the same indentation as the line that started it.

- -
    -
  • Identifier: literal_expression_end_indentation
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
[1, 2, 3]
-
-
[1,
- 2
-]
-
-
[
-   1,
-   2
-]
-
-
[
-   1,
-   2]
-
-
   let x = [
-       1,
-       2
-   ]
-
-
[key: 2, key2: 3]
-
-
[key: 1,
- key2: 2
-]
-
-
[
-   key: 0,
-   key2: 20
-]
-
-

Triggering Examples

-
let x = [
-   1,
-   2
-   ↓]
-
-
   let x = [
-       1,
-       2
-↓]
-
-
let x = [
-   key: value
-   ↓]
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/lower_acl_than_parent.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/lower_acl_than_parent.html deleted file mode 100644 index de0ac6d5d..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/lower_acl_than_parent.html +++ /dev/null @@ -1,377 +0,0 @@ - - - - lower_acl_than_parent Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Lower ACL than parent

- -

Ensure definitions have a lower access control level than their enclosing parent

- -
    -
  • Identifier: lower_acl_than_parent
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
public struct Foo { public func bar() {} }
-
-
internal struct Foo { func bar() {} }
-
-
struct Foo { func bar() {} }
-
-
open class Foo { public func bar() {} }
-
-
open class Foo { open func bar() {} }
-
-
fileprivate struct Foo { private func bar() {} }
-
-
private struct Foo { private func bar(id: String) }
-
-
extension Foo { public func bar() {} }
-
-
private struct Foo { fileprivate func bar() {} }
-
-
private func foo(id: String) {}
-
-
private class Foo { func bar() {} }
-
-

Triggering Examples

-
struct Foo { public ↓func bar() {} }
-
-
enum Foo { public ↓func bar() {} }
-
-
public class Foo { open ↓func bar() }
-
-
class Foo { public private(set) ↓var bar: String? }
-
-
private class Foo { internal ↓func bar() {} }
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/mark.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/mark.html deleted file mode 100644 index 630548369..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/mark.html +++ /dev/null @@ -1,420 +0,0 @@ - - - - mark Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Mark

- -

MARK comment should be in valid format. e.g. ‘// MARK: …’ or ‘// MARK: - …’

- -
    -
  • Identifier: mark
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
// MARK: good
-
-
-
// MARK: - good
-
-
-
// MARK: -
-
-
-
// BOOKMARK
-
-
//BOOKMARK
-
-
// BOOKMARKS
-
-
/*
-func test1() {
-}
-//MARK: mark
-func test2() {
-}
-*/
-
-

Triggering Examples

-
↓//MARK: bad
-
-
↓// MARK:bad
-
-
↓//MARK:bad
-
-
↓//  MARK: bad
-
-
↓// MARK:  bad
-
-
↓// MARK: -bad
-
-
↓// MARK:- bad
-
-
↓// MARK:-bad
-
-
↓//MARK: - bad
-
-
↓//MARK:- bad
-
-
↓//MARK: -bad
-
-
↓//MARK:-bad
-
-
↓//Mark: bad
-
-
↓// Mark: bad
-
-
↓// MARK bad
-
-
↓//MARK bad
-
-
↓// MARK - bad
-
-
↓//MARK : bad
-
-
↓// MARKL:
-
-
↓// MARKR 
-
-
↓// MARKK -
-
-
↓/// MARK:
-
-
↓/// MARK bad
-
-
↓//MARK:- Top-Level bad mark
-↓//MARK:- Another bad mark
-struct MarkTest {}
-↓// MARK:- Bad mark
-extension MarkTest {}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/missing_docs.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/missing_docs.html deleted file mode 100644 index 60de676cf..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/missing_docs.html +++ /dev/null @@ -1,387 +0,0 @@ - - - - missing_docs Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Missing Docs

- -

Declarations should be documented.

- -
    -
  • Identifier: missing_docs
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning: open, public, excludes_extensions: true, excludes_inherited_types: true
  • -
-

Non Triggering Examples

-
/// docs
-public class A {
-/// docs
-public func b() {}
-}
-// no docs
-public class B: A { override public func b() {} }
-
-
import Foundation
-// no docs
-public class B: NSObject {
-// no docs
-override public var description: String { fatalError() } }
-
-
/// docs
-public class A {
-    deinit {}
-}
-
-
public extension A {}
-
-

Triggering Examples

-
public func a() {}
-
-
-
// regular comment
-public func a() {}
-
-
-
/* regular comment */
-public func a() {}
-
-
-
/// docs
-public protocol A {
-// no docs
-var b: Int { get } }
-/// docs
-public struct C: A {
-
-public let b: Int
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/modifier_order.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/modifier_order.html deleted file mode 100644 index 5582a8de7..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/modifier_order.html +++ /dev/null @@ -1,532 +0,0 @@ - - - - modifier_order Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Modifier Order

- -

Modifier order should be consistent.

- -
    -
  • Identifier: modifier_order
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, preferred_modifier_order: [override, acl, setterACL, dynamic, mutators, lazy, final, required, convenience, typeMethods, owned]
  • -
-

Non Triggering Examples

-
public class Foo {
-   public convenience required init() {}
-}
-
-
public class Foo {
-   public static let bar = 42
-}
-
-
public class Foo {
-   public static var bar: Int {
-       return
-   }
-}
-
-
public class Foo {
-   public class var bar: Int {
-       return 42
-   }
-}
-
-
public class Bar {
-   public class var foo: String {
-       return "foo"
-   }
-}
-public class Foo: Bar {
-   override public final class var foo: String {
-       return "bar"
-   }
-}
-
-
open class Bar {
-   public var foo: Int? {
-       return 42
-   }
-}
-open class Foo: Bar {
-   override public var foo: Int? {
-       return 43
-   }
-}
-
-
open class Bar {
-   open class func foo() -> Int {
-       return 42
-   }
-}
-class Foo: Bar {
-   override open class func foo() -> Int {
-       return 43
-   }
-}
-
-
protocol Foo: class {}
-class Bar {
-    public private(set) weak var foo: Foo?
-}
-
-
@objc
-public final class Foo: NSObject {}
-
-
@objcMembers
-public final class Foo: NSObject {}
-
-
@objc
-override public private(set) weak var foo: Bar?
-
-
@objc
-public final class Foo: NSObject {}
-
-
@objc
-open final class Foo: NSObject {
-   open weak var weakBar: NSString? = nil
-}
-
-
public final class Foo {}
-
-
class Bar {
-   func bar() {}
-}
-
-
internal class Foo: Bar {
-   override internal func bar() {}
-}
-
-
public struct Foo {
-   internal weak var weakBar: NSObject? = nil
-}
-
-
class Foo {
-   internal lazy var bar: String = "foo"
-}
-
-

Triggering Examples

-
class Foo {
-   convenience required public init() {}
-}
-
-
public class Foo {
-   static public let bar = 42
-}
-
-
public class Foo {
-   static public var bar: Int {
-       return 42
-   }
-}
-
-
public class Foo {
-   class public var bar: Int {
-       return 42
-   }
-}
-
-
public class RootFoo {
-   class public var foo: String {
-       return "foo"
-   }
-}
-public class Foo: RootFoo {
-   override final class public var foo: String
-       return "bar"
-   }
-}
-
-
open class Bar {
-   public var foo: Int? {
-       return 42
-   }
-}
-open class Foo: Bar {
-    public override var foo: Int? {
-       return 43
-   }
-}
-
-
protocol Foo: class {}
-    class Bar {
-        private(set) public weak var foo: Foo?
-}
-
-
open class Bar {
-   open class func foo() -> Int {
-       return 42
-   }
-}
-class Foo: Bar {
-   class open override func foo() -> Int {
-       return 43
-   }
-}
-
-
open class Bar {
-   open class func foo() -> Int {
-       return 42
-   }
-}
-class Foo: Bar {
-   open override class func foo() -> Int {
-       return 43
-   }
-}
-
-
@objc
-final public class Foo: NSObject {}
-
-
@objcMembers
-final public class Foo: NSObject {}
-
-
@objc
-final open class Foo: NSObject {
-   weak open var weakBar: NSString? = nil
-}
-
-
final public class Foo {}
-
-
internal class Foo: Bar {
-   internal override func bar() {}
-}
-
-
public struct Foo {
-   weak internal var weakBar: NSObjetc? = nil
-}
-
-
class Foo {
-   lazy internal var bar: String = "foo"
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_arguments.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_arguments.html deleted file mode 100644 index 948e672d9..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_arguments.html +++ /dev/null @@ -1,406 +0,0 @@ - - - - multiline_arguments Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Multiline Arguments

- -

Arguments should be either on the same line, or one per line.

- -
    -
  • Identifier: multiline_arguments
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, first_argument_location: any_line, only_enforce_after_first_closure_on_first_line: false
  • -
-

Non Triggering Examples

-
foo()
-
-
foo(
-)
-
-
foo { }
-
-
foo {
-
-}
-
-
foo(0)
-
-
foo(0, 1)
-
-
foo(0, 1) { }
-
-
foo(0, param1: 1)
-
-
foo(0, param1: 1) { }
-
-
foo(param1: 1)
-
-
foo(param1: 1) { }
-
-
foo(param1: 1, param2: true) { }
-
-
foo(param1: 1, param2: true, param3: [3]) { }
-
-
foo(param1: 1, param2: true, param3: [3]) {
-    bar()
-}
-
-
foo(param1: 1,
-    param2: true,
-    param3: [3])
-
-
foo(
-    param1: 1, param2: true, param3: [3]
-)
-
-
foo(
-    param1: 1,
-    param2: true,
-    param3: [3]
-)
-
-

Triggering Examples

-
foo(0,
-    param1: 1, ↓param2: true, ↓param3: [3])
-
-
foo(0, ↓param1: 1,
-    param2: true, ↓param3: [3])
-
-
foo(0, ↓param1: 1, ↓param2: true,
-    param3: [3])
-
-
foo(
-    0, ↓param1: 1,
-    param2: true, ↓param3: [3]
-)
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_arguments_brackets.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_arguments_brackets.html deleted file mode 100644 index 6bcf96561..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_arguments_brackets.html +++ /dev/null @@ -1,417 +0,0 @@ - - - - multiline_arguments_brackets Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Multiline Arguments Brackets

- -

Multiline arguments should have their surrounding brackets in a new line.

- -
    -
  • Identifier: multiline_arguments_brackets
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
foo(param1: "Param1", param2: "Param2", param3: "Param3")
-
-
foo(
-    param1: "Param1", param2: "Param2", param3: "Param3"
-)
-
-
func foo(
-    param1: "Param1",
-    param2: "Param2",
-    param3: "Param3"
-)
-
-
foo { param1, param2 in
-    print("hello world")
-}
-
-
foo(
-    bar(
-        x: 5,
-        y: 7
-    )
-)
-
-
AlertViewModel.AlertAction(title: "some title", style: .default) {
-    AlertManager.shared.presentNextDebugAlert()
-}
-
-
public final class Logger {
-    public static let shared = Logger(outputs: [
-        OSLoggerOutput(),
-        ErrorLoggerOutput()
-    ])
-}
-
-
let errors = try self.download([
-    (description: description, priority: priority),
-])
-
-
return SignalProducer({ observer, _ in
-    observer.sendCompleted()
-}).onMainQueue()
-
-
SomeType(a: [
-    1, 2, 3
-], b: [1, 2])
-
-

Triggering Examples

-
foo(↓param1: "Param1", param2: "Param2",
-         param3: "Param3"
-)
-
-
foo(
-    param1: "Param1",
-    param2: "Param2",
-    param3: "Param3"↓)
-
-
foo(↓bar(
-    x: 5,
-    y: 7
-)
-)
-
-
foo(
-    bar(
-        x: 5,
-        y: 7
-)↓)
-
-
SomeOtherType(↓a: [
-        1, 2, 3
-    ],
-    b: "two"↓)
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_function_chains.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_function_chains.html deleted file mode 100644 index a83896bb6..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_function_chains.html +++ /dev/null @@ -1,412 +0,0 @@ - - - - multiline_function_chains Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Multiline Function Chains

- -

Chained function calls should be either on the same line, or one per line.

- -
    -
  • Identifier: multiline_function_chains
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let evenSquaresSum = [20, 17, 35, 4].filter { $0 % 2 == 0 }.map { $0 * $0 }.reduce(0, +)
-
-
let evenSquaresSum = [20, 17, 35, 4]
-    .filter { $0 % 2 == 0 }.map { $0 * $0 }.reduce(0, +)",
-
-
let chain = a
-    .b(1, 2, 3)
-    .c { blah in
-        print(blah)
-    }
-    .d()
-
-
let chain = a.b(1, 2, 3)
-    .c { blah in
-        print(blah)
-    }
-    .d()
-
-
let chain = a.b(1, 2, 3)
-    .c { blah in print(blah) }
-    .d()
-
-
let chain = a.b(1, 2, 3)
-    .c(.init(
-        a: 1,
-        b, 2,
-        c, 3))
-    .d()
-
-
self.viewModel.outputs.postContextualNotification
-  .observeForUI()
-  .observeValues {
-    NotificationCenter.default.post(
-      Notification(
-        name: .ksr_showNotificationsDialog,
-        userInfo: [UserInfoKeys.context: PushNotificationDialog.Context.pledge,
-                   UserInfoKeys.viewController: self]
-     )
-    )
-  }
-
-
let remainingIDs = Array(Set(self.currentIDs).subtracting(Set(response.ids)))
-
-
self.happeningNewsletterOn = self.updateCurrentUser
-    .map { $0.newsletters.happening }.skipNil().skipRepeats()
-
-

Triggering Examples

-
let evenSquaresSum = [20, 17, 35, 4]
-    .filter { $0 % 2 == 0 }↓.map { $0 * $0 }
-    .reduce(0, +)
-
-
let evenSquaresSum = a.b(1, 2, 3)
-    .c { blah in
-        print(blah)
-    }↓.d()
-
-
let evenSquaresSum = a.b(1, 2, 3)
-    .c(2, 3, 4)↓.d()
-
-
let evenSquaresSum = a.b(1, 2, 3)↓.c { blah in
-        print(blah)
-    }
-    .d()
-
-
a.b {
-//  ““
-}↓.e()
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_literal_brackets.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_literal_brackets.html deleted file mode 100644 index 4c87473c9..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_literal_brackets.html +++ /dev/null @@ -1,414 +0,0 @@ - - - - multiline_literal_brackets Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Multiline Literal Brackets

- -

Multiline literals should have their surrounding brackets in a new line.

- -
    -
  • Identifier: multiline_literal_brackets
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let trio = ["harry", "ronald", "hermione"]
-let houseCup = ["gryffinder": 460, "hufflepuff": 370, "ravenclaw": 410, "slytherin": 450]
-
-
let trio = [
-    "harry",
-    "ronald",
-    "hermione"
-]
-let houseCup = [
-    "gryffinder": 460,
-    "hufflepuff": 370,
-    "ravenclaw": 410,
-    "slytherin": 450
-]
-
-
let trio = [
-    "harry", "ronald", "hermione"
-]
-let houseCup = [
-    "gryffinder": 460, "hufflepuff": 370,
-    "ravenclaw": 410, "slytherin": 450
-]
-
-
    _ = [
-        1,
-        2,
-        3,
-        4,
-        5, 6,
-        7, 8, 9
-    ]
-
-

Triggering Examples

-
let trio = [↓"harry",
-            "ronald",
-            "hermione"
-]
-
-
let houseCup = [↓"gryffinder": 460, "hufflepuff": 370,
-                "ravenclaw": 410, "slytherin": 450
-]
-
-
let trio = [
-    "harry",
-    "ronald",
-    "hermione"↓]
-
-
let houseCup = [
-    "gryffinder": 460, "hufflepuff": 370,
-    "ravenclaw": 410, "slytherin": 450↓]
-
-
class Hogwarts {
-    let houseCup = [
-        "gryffinder": 460, "hufflepuff": 370,
-        "ravenclaw": 410, "slytherin": 450↓]
-}
-
-
    _ = [
-        1,
-        2,
-        3,
-        4,
-        5, 6,
-        7, 8, 9↓]
-
-
    _ = [↓1, 2, 3,
-         4, 5, 6,
-         7, 8, 9
-    ]
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_parameters.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_parameters.html deleted file mode 100644 index c05c7e65c..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_parameters.html +++ /dev/null @@ -1,692 +0,0 @@ - - - - multiline_parameters Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Multiline Parameters

- -

Functions and methods parameters should be either on the same line, or one per line.

- -
    -
  • Identifier: multiline_parameters
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, allowsSingleLine: true
  • -
-

Non Triggering Examples

-
func foo() { }
-
-
func foo(param1: Int) { }
-
-
func foo(param1: Int, param2: Bool) { }
-
-
func foo(param1: Int, param2: Bool, param3: [String]) { }
-
-
func foo(param1: Int,
-         param2: Bool,
-         param3: [String]) { }
-
-
func foo(_ param1: Int, param2: Int, param3: Int) -> (Int) -> Int {
-   return { x in x + param1 + param2 + param3 }
-}
-
-
static func foo() { }
-
-
static func foo(param1: Int) { }
-
-
static func foo(param1: Int, param2: Bool) { }
-
-
static func foo(param1: Int, param2: Bool, param3: [String]) { }
-
-
static func foo(param1: Int,
-                param2: Bool,
-                param3: [String]) { }
-
-
protocol Foo {
-    func foo() { }
-}
-
-
protocol Foo {
-    func foo(param1: Int) { }
-}
-
-
protocol Foo {
-    func foo(param1: Int, param2: Bool) { }
-}
-
-
protocol Foo {
-    func foo(param1: Int, param2: Bool, param3: [String]) { }
-}
-
-
protocol Foo {
-   func foo(param1: Int,
-            param2: Bool,
-            param3: [String]) { }
-}
-
-
protocol Foo {
-    static func foo(param1: Int, param2: Bool, param3: [String]) { }
-}
-
-
protocol Foo {
-   static func foo(param1: Int,
-                   param2: Bool,
-                   param3: [String]) { }
-}
-
-
protocol Foo {
-    class func foo(param1: Int, param2: Bool, param3: [String]) { }
-}
-
-
protocol Foo {
-   class func foo(param1: Int,
-                  param2: Bool,
-                  param3: [String]) { }
-}
-
-
enum Foo {
-    func foo() { }
-}
-
-
enum Foo {
-    func foo(param1: Int) { }
-}
-
-
enum Foo {
-    func foo(param1: Int, param2: Bool) { }
-}
-
-
enum Foo {
-    func foo(param1: Int, param2: Bool, param3: [String]) { }
-}
-
-
enum Foo {
-   func foo(param1: Int,
-            param2: Bool,
-            param3: [String]) { }
-}
-
-
enum Foo {
-    static func foo(param1: Int, param2: Bool, param3: [String]) { }
-}
-
-
enum Foo {
-   static func foo(param1: Int,
-                   param2: Bool,
-                   param3: [String]) { }
-}
-
-
struct Foo {
-    func foo() { }
-}
-
-
struct Foo {
-    func foo(param1: Int) { }
-}
-
-
struct Foo {
-    func foo(param1: Int, param2: Bool) { }
-}
-
-
struct Foo {
-    func foo(param1: Int, param2: Bool, param3: [String]) { }
-}
-
-
struct Foo {
-   func foo(param1: Int,
-            param2: Bool,
-            param3: [String]) { }
-}
-
-
struct Foo {
-    static func foo(param1: Int, param2: Bool, param3: [String]) { }
-}
-
-
struct Foo {
-   static func foo(param1: Int,
-                   param2: Bool,
-                   param3: [String]) { }
-}
-
-
class Foo {
-    func foo() { }
-}
-
-
class Foo {
-    func foo(param1: Int) { }
-}
-
-
class Foo {
-    func foo(param1: Int, param2: Bool) { }
-}
-
-
class Foo {
-    func foo(param1: Int, param2: Bool, param3: [String]) { }
-    }
-
-
class Foo {
-   func foo(param1: Int,
-            param2: Bool,
-            param3: [String]) { }
-}
-
-
class Foo {
-    class func foo(param1: Int, param2: Bool, param3: [String]) { }
-}
-
-
class Foo {
-   class func foo(param1: Int,
-                  param2: Bool,
-                  param3: [String]) { }
-}
-
-
class Foo {
-   class func foo(param1: Int,
-                  param2: Bool,
-                  param3: @escaping (Int, Int) -> Void = { _, _ in }) { }
-}
-
-
class Foo {
-   class func foo(param1: Int,
-                  param2: Bool,
-                  param3: @escaping (Int) -> Void = { _ in }) { }
-}
-
-
class Foo {
-   class func foo(param1: Int,
-                  param2: Bool,
-                  param3: @escaping ((Int) -> Void)? = nil) { }
-}
-
-
class Foo {
-   class func foo(param1: Int,
-                  param2: Bool,
-                  param3: @escaping ((Int) -> Void)? = { _ in }) { }
-}
-
-
class Foo {
-   class func foo(param1: Int,
-                  param2: @escaping ((Int) -> Void)? = { _ in },
-                  param3: Bool) { }
-}
-
-
class Foo {
-   class func foo(param1: Int,
-                  param2: @escaping ((Int) -> Void)? = { _ in },
-                  param3: @escaping (Int, Int) -> Void = { _, _ in }) { }
-}
-
-
class Foo {
-   class func foo(param1: Int,
-                  param2: Bool,
-                  param3: @escaping (Int) -> Void = { (x: Int) in }) { }
-}
-
-
class Foo {
-   class func foo(param1: Int,
-                  param2: Bool,
-                  param3: @escaping (Int, (Int) -> Void) -> Void = { (x: Int, f: (Int) -> Void) in }) { }
-}
-
-
func foo() { }
-
-
func foo(param1: Int) { }
-
-
protocol Foo {
-    func foo(param1: Int,
-             param2: Bool,
-             param3: [String]) { }
-}
-
-
protocol Foo {
-    func foo(
-        param1: Int
-    ) { }
-}
-
-
protocol Foo {
-    func foo(
-        param1: Int,
-        param2: Bool,
-        param3: [String]
-    ) { }
-}
-
-

Triggering Examples

-
func ↓foo(_ param1: Int,
-          param2: Int, param3: Int) -> (Int) -> Int {
-   return { x in x + param1 + param2 + param3 }
-}
-
-
protocol Foo {
-   func ↓foo(param1: Int,
-             param2: Bool, param3: [String]) { }
-}
-
-
protocol Foo {
-   func ↓foo(param1: Int, param2: Bool,
-             param3: [String]) { }
-}
-
-
protocol Foo {
-   static func ↓foo(param1: Int,
-                    param2: Bool, param3: [String]) { }
-}
-
-
protocol Foo {
-   static func ↓foo(param1: Int, param2: Bool,
-                    param3: [String]) { }
-}
-
-
protocol Foo {
-   class func ↓foo(param1: Int,
-                   param2: Bool, param3: [String]) { }
-}
-
-
protocol Foo {
-   class func ↓foo(param1: Int, param2: Bool,
-                   param3: [String]) { }
-}
-
-
enum Foo {
-   func ↓foo(param1: Int,
-             param2: Bool, param3: [String]) { }
-}
-
-
enum Foo {
-   func ↓foo(param1: Int, param2: Bool,
-             param3: [String]) { }
-}
-
-
enum Foo {
-   static func ↓foo(param1: Int,
-                    param2: Bool, param3: [String]) { }
-}
-
-
enum Foo {
-   static func ↓foo(param1: Int, param2: Bool,
-                    param3: [String]) { }
-}
-
-
struct Foo {
-   func ↓foo(param1: Int,
-             param2: Bool, param3: [String]) { }
-}
-
-
struct Foo {
-   func ↓foo(param1: Int, param2: Bool,
-             param3: [String]) { }
-}
-
-
struct Foo {
-   static func ↓foo(param1: Int,
-                    param2: Bool, param3: [String]) { }
-}
-
-
struct Foo {
-   static func ↓foo(param1: Int, param2: Bool,
-                    param3: [String]) { }
-}
-
-
class Foo {
-   func ↓foo(param1: Int,
-             param2: Bool, param3: [String]) { }
-}
-
-
class Foo {
-   func ↓foo(param1: Int, param2: Bool,
-             param3: [String]) { }
-}
-
-
class Foo {
-   class func ↓foo(param1: Int,
-                   param2: Bool, param3: [String]) { }
-}
-
-
class Foo {
-   class func ↓foo(param1: Int, param2: Bool,
-                   param3: [String]) { }
-}
-
-
class Foo {
-   class func ↓foo(param1: Int,
-                  param2: Bool, param3: @escaping (Int, Int) -> Void = { _, _ in }) { }
-}
-
-
class Foo {
-   class func ↓foo(param1: Int,
-                  param2: Bool, param3: @escaping (Int) -> Void = { (x: Int) in }) { }
-}
-
-
func ↓foo(param1: Int, param2: Bool) { }
-
-
func ↓foo(param1: Int, param2: Bool, param3: [String]) { }
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_parameters_brackets.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_parameters_brackets.html deleted file mode 100644 index 23ad529d7..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_parameters_brackets.html +++ /dev/null @@ -1,407 +0,0 @@ - - - - multiline_parameters_brackets Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Multiline Parameters Brackets

- -

Multiline parameters should have their surrounding brackets in a new line.

- -
    -
  • Identifier: multiline_parameters_brackets
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
func foo(param1: String, param2: String, param3: String)
-
-
func foo(
-    param1: String, param2: String, param3: String
-)
-
-
func foo(
-    param1: String,
-    param2: String,
-    param3: String
-)
-
-
class SomeType {
-    func foo(param1: String, param2: String, param3: String)
-}
-
-
class SomeType {
-    func foo(
-        param1: String, param2: String, param3: String
-    )
-}
-
-
class SomeType {
-    func foo(
-        param1: String,
-        param2: String,
-        param3: String
-    )
-}
-
-
func foo<T>(param1: T, param2: String, param3: String) -> T { /* some code */ }
-
-
    func foo(a: [Int] = [
-        1
-    ])
-
-

Triggering Examples

-
func foo(↓param1: String, param2: String,
-         param3: String
-)
-
-
func foo(
-    param1: String,
-    param2: String,
-    param3: String↓)
-
-
class SomeType {
-    func foo(↓param1: String, param2: String,
-             param3: String
-    )
-}
-
-
class SomeType {
-    func foo(
-        param1: String,
-        param2: String,
-        param3: String↓)
-}
-
-
func foo<T>(↓param1: T, param2: String,
-         param3: String
-) -> T
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiple_closures_with_trailing_closure.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiple_closures_with_trailing_closure.html deleted file mode 100644 index 1cd9e8c34..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiple_closures_with_trailing_closure.html +++ /dev/null @@ -1,379 +0,0 @@ - - - - multiple_closures_with_trailing_closure Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Multiple Closures with Trailing Closure

- -

Trailing closure syntax should not be used when passing more than one closure argument.

- -
    -
  • Identifier: multiple_closures_with_trailing_closure
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
foo.map { $0 + 1 }
-
-
-
foo.reduce(0) { $0 + $1 }
-
-
-
if let foo = bar.map({ $0 + 1 }) {
-
-}
-
-
-
foo.something(param1: { $0 }, param2: { $0 + 1 })
-
-
-
UIView.animate(withDuration: 1.0) {
-    someView.alpha = 0.0
-}
-
-
foo.method { print(0) } arg2: { print(1) }
-
-
foo.methodWithParenArgs((0, 1), arg2: (0, 1, 2)) { $0 } arg4: { $0 }
-
-

Triggering Examples

-
foo.something(param1: { $0 }) ↓{ $0 + 1 }
-
-
UIView.animate(withDuration: 1.0, animations: {
-    someView.alpha = 0.0
-}) ↓{ _ in
-    someView.removeFromSuperview()
-}
-
-
foo.multipleTrailing(arg1: { $0 }) { $0 } arg3: { $0 }
-
-
foo.methodWithParenArgs(param1: { $0 }, param2: (0, 1), (0, 1)) { $0 }
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/nesting.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/nesting.html deleted file mode 100644 index f39466db6..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/nesting.html +++ /dev/null @@ -1,1034 +0,0 @@ - - - - nesting Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Nesting

- -

Types should be nested at most 1 level deep, and functions should be nested at most 2 levels deep.

- -
    -
  • Identifier: nesting
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: (type_level) w: 1, (function_level) w: 2, (check_nesting_in_closures_and_statements) true, (always_allow_one_type_in_functions) false
  • -
-

Non Triggering Examples

-
    class Example_0 {
-        class Example_1 {}
-    }
-
-
    var example: Int {
-        class Example_0 {
-            class Example_1 {}
-        }
-        return 5
-    }
-
-
    var example: Int = 5 {
-        didSet {
-            class Example_0 {
-                class Example_1 {}
-            }
-        }
-    }
-
-
    extension Example_0 {
-        class Example_1 {}
-    }
-
-
    struct Example_0 {
-        struct Example_1 {}
-    }
-
-
    var example: Int {
-        struct Example_0 {
-            struct Example_1 {}
-        }
-        return 5
-    }
-
-
    var example: Int = 5 {
-        didSet {
-            struct Example_0 {
-                struct Example_1 {}
-            }
-        }
-    }
-
-
    extension Example_0 {
-        struct Example_1 {}
-    }
-
-
    enum Example_0 {
-        enum Example_1 {}
-    }
-
-
    var example: Int {
-        enum Example_0 {
-            enum Example_1 {}
-        }
-        return 5
-    }
-
-
    var example: Int = 5 {
-        didSet {
-            enum Example_0 {
-                enum Example_1 {}
-            }
-        }
-    }
-
-
    extension Example_0 {
-        enum Example_1 {}
-    }
-
-
    func f_0() {
-        func f_1() {
-            func f_2() {}
-        }
-    }
-
-
    var example: Int {
-        func f_0() {
-            func f_1() {
-                func f_2() {}
-            }
-        }
-        return 5
-    }
-
-
    var example: Int = 5 {
-        didSet {
-            func f_0() {
-                func f_1() {
-                    func f_2() {}
-                }
-            }
-        }
-    }
-
-
    extension Example_0 {
-        func f_0() {
-            func f_1() {
-                func f_2() {}
-            }
-        }
-    }
-
-
    switch example {
-    case .exampleCase:
-        class Example_0 {
-            class Example_1 {}
-        }
-    default:
-        func f_0() {
-            func f_1() {
-                func f_2() {}
-            }
-        }
-    }
-
-
    var exampleClosure: () -> Void = {
-        class Example_0 {
-            class Example_1 {}
-        }
-        func f_0() {
-            func f_1() {
-                func f_2() {}
-            }
-        }
-    }
-
-
    exampleFunc(closure: {
-        class Example_0 {
-            class Example_1 {}
-        }
-        func f_0() {
-            func f_1() {
-                func f_2() {}
-            }
-        }
-    })
-
-
    switch example {
-    case .exampleCase:
-        struct Example_0 {
-            struct Example_1 {}
-        }
-    default:
-        func f_0() {
-            func f_1() {
-                func f_2() {}
-            }
-        }
-    }
-
-
    var exampleClosure: () -> Void = {
-        struct Example_0 {
-            struct Example_1 {}
-        }
-        func f_0() {
-            func f_1() {
-                func f_2() {}
-            }
-        }
-    }
-
-
    exampleFunc(closure: {
-        struct Example_0 {
-            struct Example_1 {}
-        }
-        func f_0() {
-            func f_1() {
-                func f_2() {}
-            }
-        }
-    })
-
-
    switch example {
-    case .exampleCase:
-        enum Example_0 {
-            enum Example_1 {}
-        }
-    default:
-        func f_0() {
-            func f_1() {
-                func f_2() {}
-            }
-        }
-    }
-
-
    var exampleClosure: () -> Void = {
-        enum Example_0 {
-            enum Example_1 {}
-        }
-        func f_0() {
-            func f_1() {
-                func f_2() {}
-            }
-        }
-    }
-
-
    exampleFunc(closure: {
-        enum Example_0 {
-            enum Example_1 {}
-        }
-        func f_0() {
-            func f_1() {
-                func f_2() {}
-            }
-        }
-    })
-
-
    class Example_0 {
-        func f_0() {
-            class Example_1 {
-                func f_1() {
-                    func f_2() {}
-                }
-            }
-        }
-    }
-
-
    class Example_0 {
-        func f_0() {
-            switch example {
-            case .exampleCase:
-                class Example_1 {
-                    func f_1() {
-                        func f_2() {}
-                    }
-                }
-            default:
-                exampleFunc(closure: {
-                    class Example_1 {
-                        func f_1() {
-                            func f_2() {}
-                        }
-                    }
-                })
-            }
-        }
-    }
-
-
    struct Example_0 {
-        func f_0() {
-            struct Example_1 {
-                func f_1() {
-                    func f_2() {}
-                }
-            }
-        }
-    }
-
-
    struct Example_0 {
-        func f_0() {
-            switch example {
-            case .exampleCase:
-                struct Example_1 {
-                    func f_1() {
-                        func f_2() {}
-                    }
-                }
-            default:
-                exampleFunc(closure: {
-                    struct Example_1 {
-                        func f_1() {
-                            func f_2() {}
-                        }
-                    }
-                })
-            }
-        }
-    }
-
-
    enum Example_0 {
-        func f_0() {
-            enum Example_1 {
-                func f_1() {
-                    func f_2() {}
-                }
-            }
-        }
-    }
-
-
    enum Example_0 {
-        func f_0() {
-            switch example {
-            case .exampleCase:
-                enum Example_1 {
-                    func f_1() {
-                        func f_2() {}
-                    }
-                }
-            default:
-                exampleFunc(closure: {
-                    enum Example_1 {
-                        func f_1() {
-                            func f_2() {}
-                        }
-                    }
-                })
-            }
-        }
-    }
-
-

Triggering Examples

-
    class Example_0 {
-        class Example_1 {
-            ↓class Example_2 {}
-        }
-    }
-
-
    var example: Int {
-        class Example_0 {
-            class Example_1 {
-                ↓class Example_2 {}
-            }
-        }
-        return 5
-    }
-
-
    var example: Int = 5 {
-        didSet {
-            class Example_0 {
-                class Example_1 {
-                    ↓class Example_2 {}
-                }
-            }
-        }
-    }
-
-
    extension Example_0 {
-        class Example_1 {
-            ↓class Example_2 {}
-        }
-    }
-
-
    struct Example_0 {
-        struct Example_1 {
-            ↓struct Example_2 {}
-        }
-    }
-
-
    var example: Int {
-        struct Example_0 {
-            struct Example_1 {
-                ↓struct Example_2 {}
-            }
-        }
-        return 5
-    }
-
-
    var example: Int = 5 {
-        didSet {
-            struct Example_0 {
-                struct Example_1 {
-                    ↓struct Example_2 {}
-                }
-            }
-        }
-    }
-
-
    extension Example_0 {
-        struct Example_1 {
-            ↓struct Example_2 {}
-        }
-    }
-
-
    enum Example_0 {
-        enum Example_1 {
-            ↓enum Example_2 {}
-        }
-    }
-
-
    var example: Int {
-        enum Example_0 {
-            enum Example_1 {
-                ↓enum Example_2 {}
-            }
-        }
-        return 5
-    }
-
-
    var example: Int = 5 {
-        didSet {
-            enum Example_0 {
-                enum Example_1 {
-                    ↓enum Example_2 {}
-                }
-            }
-        }
-    }
-
-
    extension Example_0 {
-        enum Example_1 {
-            ↓enum Example_2 {}
-        }
-    }
-
-
    func f_0() {
-        func f_1() {
-            func f_2() {
-                ↓func f_3() {}
-            }
-        }
-    }
-
-
    var example: Int {
-        func f_0() {
-            func f_1() {
-                func f_2() {
-                    ↓func f_3() {}
-                }
-            }
-        }
-        return 5
-    }
-
-
    var example: Int = 5 {
-        didSet {
-            func f_0() {
-                func f_1() {
-                    func f_2() {
-                        ↓func f_3() {}
-                    }
-                }
-            }
-        }
-    }
-
-
    extension Example_0 {
-        func f_0() {
-            func f_1() {
-                func f_2() {
-                    ↓func f_3() {}
-                }
-            }
-        }
-    }
-
-
    switch example {
-    case .exampleCase:
-        class Example_0 {
-            class Example_1 {
-                ↓class Example_2 {}
-            }
-        }
-    default:
-        func f_0() {
-            func f_1() {
-                func f_2() {
-                    ↓func f_3() {}
-                }
-            }
-        }
-    }
-
-
    var exampleClosure: () -> Void = {
-        class Example_0 {
-            class Example_1 {
-                ↓class Example_2 {}
-            }
-            }
-        func f_0() {
-            func f_1() {
-                func f_2() {
-                    ↓func f_3() {}
-                }
-            }
-        }
-    }
-
-
    exampleFunc(closure: {
-        class Example_0 {
-            class Example_1 {}
-        }
-        func f_0() {
-            func f_1() {
-                func f_2() {
-                    ↓func f_3() {}
-                }
-            }
-        }
-    })
-
-
    switch example {
-    case .exampleCase:
-        struct Example_0 {
-            struct Example_1 {
-                ↓struct Example_2 {}
-            }
-        }
-    default:
-        func f_0() {
-            func f_1() {
-                func f_2() {
-                    ↓func f_3() {}
-                }
-            }
-        }
-    }
-
-
    var exampleClosure: () -> Void = {
-        struct Example_0 {
-            struct Example_1 {
-                ↓struct Example_2 {}
-            }
-            }
-        func f_0() {
-            func f_1() {
-                func f_2() {
-                    ↓func f_3() {}
-                }
-            }
-        }
-    }
-
-
    exampleFunc(closure: {
-        struct Example_0 {
-            struct Example_1 {}
-        }
-        func f_0() {
-            func f_1() {
-                func f_2() {
-                    ↓func f_3() {}
-                }
-            }
-        }
-    })
-
-
    switch example {
-    case .exampleCase:
-        enum Example_0 {
-            enum Example_1 {
-                ↓enum Example_2 {}
-            }
-        }
-    default:
-        func f_0() {
-            func f_1() {
-                func f_2() {
-                    ↓func f_3() {}
-                }
-            }
-        }
-    }
-
-
    var exampleClosure: () -> Void = {
-        enum Example_0 {
-            enum Example_1 {
-                ↓enum Example_2 {}
-            }
-            }
-        func f_0() {
-            func f_1() {
-                func f_2() {
-                    ↓func f_3() {}
-                }
-            }
-        }
-    }
-
-
    exampleFunc(closure: {
-        enum Example_0 {
-            enum Example_1 {}
-        }
-        func f_0() {
-            func f_1() {
-                func f_2() {
-                    ↓func f_3() {}
-                }
-            }
-        }
-    })
-
-
    class Example_0 {
-        func f_0() {
-            class Example_1 {
-                func f_1() {
-                    func f_2() {
-                        ↓class Example_2 {}
-                        ↓func f_3() {}
-                    }
-                }
-            }
-        }
-    }
-
-
    class Example_0 {
-        func f_0() {
-            switch example {
-            case .exampleCase:
-                class Example_1 {
-                    func f_1() {
-                        func f_2() {
-                            ↓class Example_2 {}
-                            ↓func f_3() {}
-                        }
-                    }
-                }
-            default:
-                exampleFunc(closure: {
-                    class Example_1 {
-                        func f_1() {
-                            func f_2() {
-                                ↓class Example_2 {}
-                                ↓func f_3() {}
-                            }
-                        }
-                    }
-                })
-            }
-        }
-    }
-
-
    struct Example_0 {
-        func f_0() {
-            struct Example_1 {
-                func f_1() {
-                    func f_2() {
-                        ↓struct Example_2 {}
-                        ↓func f_3() {}
-                    }
-                }
-            }
-        }
-    }
-
-
    struct Example_0 {
-        func f_0() {
-            switch example {
-            case .exampleCase:
-                struct Example_1 {
-                    func f_1() {
-                        func f_2() {
-                            ↓struct Example_2 {}
-                            ↓func f_3() {}
-                        }
-                    }
-                }
-            default:
-                exampleFunc(closure: {
-                    struct Example_1 {
-                        func f_1() {
-                            func f_2() {
-                                ↓struct Example_2 {}
-                                ↓func f_3() {}
-                            }
-                        }
-                    }
-                })
-            }
-        }
-    }
-
-
    enum Example_0 {
-        func f_0() {
-            enum Example_1 {
-                func f_1() {
-                    func f_2() {
-                        ↓enum Example_2 {}
-                        ↓func f_3() {}
-                    }
-                }
-            }
-        }
-    }
-
-
    enum Example_0 {
-        func f_0() {
-            switch example {
-            case .exampleCase:
-                enum Example_1 {
-                    func f_1() {
-                        func f_2() {
-                            ↓enum Example_2 {}
-                            ↓func f_3() {}
-                        }
-                    }
-                }
-            default:
-                exampleFunc(closure: {
-                    enum Example_1 {
-                        func f_1() {
-                            func f_2() {
-                                ↓enum Example_2 {}
-                                ↓func f_3() {}
-                            }
-                        }
-                    }
-                })
-            }
-        }
-    }
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/nimble_operator.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/nimble_operator.html deleted file mode 100644 index 2201c942a..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/nimble_operator.html +++ /dev/null @@ -1,417 +0,0 @@ - - - - nimble_operator Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Nimble Operator

- -

Prefer Nimble operator overloads over free matcher functions.

- -
    -
  • Identifier: nimble_operator
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
expect(seagull.squawk) != "Hi!"
-
-
-
expect("Hi!") == "Hi!"
-
-
-
expect(10) > 2
-
-
-
expect(10) >= 10
-
-
-
expect(10) < 11
-
-
-
expect(10) <= 10
-
-
-
expect(x) === x
-
-
expect(10) == 10
-
-
expect(success) == true
-
-
expect(object.asyncFunction()).toEventually(equal(1))
-
-
-
expect(actual).to(haveCount(expected))
-
-
-
foo.method {
-    expect(value).to(equal(expectedValue), description: "Failed")
-    return Bar(value: ())
-}
-
-

Triggering Examples

-
↓expect(seagull.squawk).toNot(equal("Hi"))
-
-
-
↓expect(12).toNot(equal(10))
-
-
-
↓expect(10).to(equal(10))
-
-
-
↓expect(10, line: 1).to(equal(10))
-
-
-
↓expect(10).to(beGreaterThan(8))
-
-
-
↓expect(10).to(beGreaterThanOrEqualTo(10))
-
-
-
↓expect(10).to(beLessThan(11))
-
-
-
↓expect(10).to(beLessThanOrEqualTo(10))
-
-
-
↓expect(x).to(beIdenticalTo(x))
-
-
-
↓expect(success).to(beTrue())
-
-
-
↓expect(success).to(beFalse())
-
-
-
expect(10) > 2
- ↓expect(10).to(beGreaterThan(2))
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/no_extension_access_modifier.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/no_extension_access_modifier.html deleted file mode 100644 index cf33d3c34..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/no_extension_access_modifier.html +++ /dev/null @@ -1,362 +0,0 @@ - - - - no_extension_access_modifier Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

No Extension Access Modifier

- -

Prefer not to use extension access modifiers

- -
    -
  • Identifier: no_extension_access_modifier
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: error
  • -
-

Non Triggering Examples

-
extension String {}
-
-

-
- extension String {}
-
-

Triggering Examples

-
↓private extension String {}
-
-
↓public 
- extension String {}
-
-
↓open extension String {}
-
-
↓internal extension String {}
-
-
↓fileprivate extension String {}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/no_fallthrough_only.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/no_fallthrough_only.html deleted file mode 100644 index cdfd769fd..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/no_fallthrough_only.html +++ /dev/null @@ -1,481 +0,0 @@ - - - - no_fallthrough_only Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

No Fallthrough Only

- -

Fallthroughs can only be used if the case contains at least one other statement.

- -
    -
  • Identifier: no_fallthrough_only
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
switch myvar {
-case 1:
-    var a = 1
-    fallthrough
-case 2:
-    var a = 2
-}
-
-
switch myvar {
-case "a":
-    var one = 1
-    var two = 2
-    fallthrough
-case "b": /* comment */
-    var three = 3
-}
-
-
switch myvar {
-case 1:
-    let one = 1
-case 2:
-    // comment
-    var two = 2
-}
-
-
switch myvar {
-case MyFunc(x: [1, 2, YourFunc(a: 23)], y: 2):
-    var three = 3
-    fallthrough
-default:
-    var three = 4
-}
-
-
switch myvar {
-case .alpha:
-    var one = 1
-case .beta:
-    var three = 3
-    fallthrough
-default:
-    var four = 4
-}
-
-
let aPoint = (1, -1)
-switch aPoint {
-case let (x, y) where x == y:
-    let A = "A"
-case let (x, y) where x == -y:
-    let B = "B"
-    fallthrough
-default:
-    let C = "C"
-}
-
-
switch myvar {
-case MyFun(with: { $1 }):
-    let one = 1
-    fallthrough
-case "abc":
-    let two = 2
-}
-
-
switch enumInstance {
-case .caseA:
-    print("it's a")
-case .caseB:
-    fallthrough
-@unknown default:
-    print("it's not a")
-}
-
-

Triggering Examples

-
switch myvar {
-case 1:
-    ↓fallthrough
-case 2:
-    var a = 1
-}
-
-
switch myvar {
-case 1:
-    var a = 2
-case 2:
-    ↓fallthrough
-case 3:
-    var a = 3
-}
-
-
switch myvar {
-case 1: // comment
-    ↓fallthrough
-}
-
-
switch myvar {
-case 1: /* multi
-    line
-    comment */
-    ↓fallthrough
-case 2:
-    var a = 2
-}
-
-
switch myvar {
-case MyFunc(x: [1, 2, YourFunc(a: 23)], y: 2):
-    ↓fallthrough
-default:
-    var three = 4
-}
-
-
switch myvar {
-case .alpha:
-    var one = 1
-case .beta:
-    ↓fallthrough
-case .gamma:
-    var three = 3
-default:
-    var four = 4
-}
-
-
let aPoint = (1, -1)
-switch aPoint {
-case let (x, y) where x == y:
-    let A = "A"
-case let (x, y) where x == -y:
-    ↓fallthrough
-default:
-    let B = "B"
-}
-
-
switch myvar {
-case MyFun(with: { $1 }):
-    ↓fallthrough
-case "abc":
-    let two = 2
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/no_grouping_extension.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/no_grouping_extension.html deleted file mode 100644 index 685df7c09..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/no_grouping_extension.html +++ /dev/null @@ -1,373 +0,0 @@ - - - - no_grouping_extension Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

No Grouping Extension

- -

Extensions shouldn’t be used to group code within the same source file.

- -
    -
  • Identifier: no_grouping_extension
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
protocol Food {}
-extension Food {}
-
-
-
class Apples {}
-extension Oranges {}
-
-
-
class Box<T> {}
-extension Box where T: Vegetable {}
-
-
-

Triggering Examples

-
enum Fruit {}
-↓extension Fruit {}
-
-
-
↓extension Tea: Error {}
-struct Tea {}
-
-
-
class Ham { class Spam {}}
-↓extension Ham.Spam {}
-
-
-
extension External { struct Gotcha {}}
-↓extension External.Gotcha {}
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/no_space_in_method_call.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/no_space_in_method_call.html deleted file mode 100644 index be3fcc67b..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/no_space_in_method_call.html +++ /dev/null @@ -1,379 +0,0 @@ - - - - no_space_in_method_call Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

No Space in Method Call

- -

Don’t add a space between the method name and the parentheses.

- -
    -
  • Identifier: no_space_in_method_call
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
foo()
-
-
object.foo()
-
-
object.foo(1)
-
-
object.foo(value: 1)
-
-
object.foo { print($0 }
-
-
list.sorted { $0.0 < $1.0 }.map { $0.value }
-
-
self.init(rgb: (Int) (colorInt))
-
-
Button {
-    print("Button tapped")
-} label: {
-    Text("Button")
-}
-
-

Triggering Examples

-
foo↓ ()
-
-
object.foo↓ ()
-
-
object.foo↓ (1)
-
-
object.foo↓ (value: 1)
-
-
object.foo↓ () {}
-
-
object.foo↓     ()
-
-
object.foo↓     (value: 1) { x in print(x) }
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/notification_center_detachment.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/notification_center_detachment.html deleted file mode 100644 index 5f5a26395..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/notification_center_detachment.html +++ /dev/null @@ -1,363 +0,0 @@ - - - - notification_center_detachment Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Notification Center Detachment

- -

An object should only remove itself as an observer in deinit.

- -
    -
  • Identifier: notification_center_detachment
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class Foo {
-   deinit {
-       NotificationCenter.default.removeObserver(self)
-   }
-}
-
-
class Foo {
-   func bar() {
-       NotificationCenter.default.removeObserver(otherObject)
-   }
-}
-
-

Triggering Examples

-
class Foo {
-   func bar() {
-       ↓NotificationCenter.default.removeObserver(self)
-   }
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/nslocalizedstring_key.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/nslocalizedstring_key.html deleted file mode 100644 index e0f1d5b4a..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/nslocalizedstring_key.html +++ /dev/null @@ -1,366 +0,0 @@ - - - - nslocalizedstring_key Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

NSLocalizedString Key

- -

Static strings should be used as key/comment in NSLocalizedString in order for genstrings to work.

- -
    -
  • Identifier: nslocalizedstring_key
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
NSLocalizedString("key", comment: "")
-
-
NSLocalizedString("key" + "2", comment: "")
-
-
NSLocalizedString("key", comment: "comment")
-
-
NSLocalizedString("This is a multi-" +
-    "line string", comment: "")
-
-
let format = NSLocalizedString("%@, %@.", comment: "Accessibility label for a post in the post list." +
-" The parameters are the title, and date respectively." +
-" For example, "Let it Go, 1 hour ago."")
-
-

Triggering Examples

-
NSLocalizedString(↓method(), comment: "")
-
-
NSLocalizedString(↓"key_\(param)", comment: "")
-
-
NSLocalizedString("key", comment: ↓"comment with \(param)")
-
-
NSLocalizedString(↓"key_\(param)", comment: ↓method())
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/nslocalizedstring_require_bundle.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/nslocalizedstring_require_bundle.html deleted file mode 100644 index 152e37fee..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/nslocalizedstring_require_bundle.html +++ /dev/null @@ -1,364 +0,0 @@ - - - - nslocalizedstring_require_bundle Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

NSLocalizedString Require Bundle

- -

Calls to NSLocalizedString should specify the bundle which contains the strings file.

- -
    -
  • Identifier: nslocalizedstring_require_bundle
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
NSLocalizedString("someKey", bundle: .main, comment: "test")
-
-
NSLocalizedString("someKey", tableName: "a",
-                  bundle: Bundle(for: A.self),
-                  comment: "test")
-
-
NSLocalizedString("someKey", tableName: "xyz",
-                  bundle: someBundle, value: "test"
-                  comment: "test")
-
-
arbitraryFunctionCall("something")
-
-

Triggering Examples

-
↓NSLocalizedString("someKey", comment: "test")
-
-
↓NSLocalizedString("someKey", tableName: "a", comment: "test")
-
-
↓NSLocalizedString("someKey", tableName: "xyz",
-                  value: "test", comment: "test")
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/nsobject_prefer_isequal.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/nsobject_prefer_isequal.html deleted file mode 100644 index 441bbea87..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/nsobject_prefer_isequal.html +++ /dev/null @@ -1,417 +0,0 @@ - - - - nsobject_prefer_isequal Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

NSObject Prefer isEqual

- -

NSObject subclasses should implement isEqual instead of ==.

- -
    -
  • Identifier: nsobject_prefer_isequal
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class AClass: NSObject {
-}
-
-
@objc class AClass: SomeNSObjectSubclass {
-}
-
-
class AClass: Equatable {
-    static func ==(lhs: AClass, rhs: AClass) -> Bool {
-        return true
-    }
-
-
class AClass: NSObject {
-    override func isEqual(_ object: Any?) -> Bool {
-        return true
-    }
-}
-
-
@objc class AClass: SomeNSObjectSubclass {
-    override func isEqual(_ object: Any?) -> Bool {
-        return false
-    }
-}
-
-
class AClass: NSObject {
-    static func ==(lhs: AClass, rhs: BClass) -> Bool {
-        return true
-    }
-}
-
-
struct AStruct: Equatable {
-    static func ==(lhs: AStruct, rhs: AStruct) -> Bool {
-        return false
-    }
-}
-
-
enum AnEnum: Equatable {
-    static func ==(lhs: AnEnum, rhs: AnEnum) -> Bool {
-        return true
-    }
-}
-
-

Triggering Examples

-
class AClass: NSObject {
-    ↓static func ==(lhs: AClass, rhs: AClass) -> Bool {
-        return false
-    }
-}
-
-
@objc class AClass: SomeOtherNSObjectSubclass {
-    ↓static func ==(lhs: AClass, rhs: AClass) -> Bool {
-        return true
-    }
-}
-
-
class AClass: NSObject, Equatable {
-    ↓static func ==(lhs: AClass, rhs: AClass) -> Bool {
-        return false
-    }
-}
-
-
class AClass: NSObject {
-    override func isEqual(_ object: Any?) -> Bool {
-        guard let other = object as? AClass else {
-            return false
-        }
-        return true
-    }
-
-    ↓static func ==(lhs: AClass, rhs: AClass) -> Bool {
-        return false
-    }
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/number_separator.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/number_separator.html deleted file mode 100644 index 74b07b95e..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/number_separator.html +++ /dev/null @@ -1,495 +0,0 @@ - - - - number_separator Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Number Separator

- -

Underscores should be used as thousand separator in large decimal numbers.

- -
    -
  • Identifier: number_separator
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, minimum_length: 0, minimum_fraction_length: none
  • -
-

Non Triggering Examples

-
let foo = -100
-
-
let foo = -1_000
-
-
let foo = -1_000_000
-
-
let foo = -1.000_1
-
-
let foo = -1_000_000.000_000_1
-
-
let binary = -0b10000
-
-
let binary = -0b1000_0001
-
-
let hex = -0xA
-
-
let hex = -0xAA_BB
-
-
let octal = -0o21
-
-
let octal = -0o21_1
-
-
let exp = -1_000_000.000_000e2
-
-
let foo: Double = -(200)
-
-
let foo: Double = -(200 / 447.214)
-
-
let foo = +100
-
-
let foo = +1_000
-
-
let foo = +1_000_000
-
-
let foo = +1.000_1
-
-
let foo = +1_000_000.000_000_1
-
-
let binary = +0b10000
-
-
let binary = +0b1000_0001
-
-
let hex = +0xA
-
-
let hex = +0xAA_BB
-
-
let octal = +0o21
-
-
let octal = +0o21_1
-
-
let exp = +1_000_000.000_000e2
-
-
let foo: Double = +(200)
-
-
let foo: Double = +(200 / 447.214)
-
-
let foo = 100
-
-
let foo = 1_000
-
-
let foo = 1_000_000
-
-
let foo = 1.000_1
-
-
let foo = 1_000_000.000_000_1
-
-
let binary = 0b10000
-
-
let binary = 0b1000_0001
-
-
let hex = 0xA
-
-
let hex = 0xAA_BB
-
-
let octal = 0o21
-
-
let octal = 0o21_1
-
-
let exp = 1_000_000.000_000e2
-
-
let foo: Double = (200)
-
-
let foo: Double = (200 / 447.214)
-
-

Triggering Examples

-
let foo = ↓-10_0
-
-
let foo = ↓-1000
-
-
let foo = ↓-1000e2
-
-
let foo = ↓-1000E2
-
-
let foo = ↓-1__000
-
-
let foo = ↓-1.0001
-
-
let foo = ↓-1_000_000.000000_1
-
-
let foo = ↓-1000000.000000_1
-
-
let foo = +↓10_0
-
-
let foo = +↓1000
-
-
let foo = +↓1000e2
-
-
let foo = +↓1000E2
-
-
let foo = +↓1__000
-
-
let foo = +↓1.0001
-
-
let foo = +↓1_000_000.000000_1
-
-
let foo = +↓1000000.000000_1
-
-
let foo = ↓10_0
-
-
let foo = ↓1000
-
-
let foo = ↓1000e2
-
-
let foo = ↓1000E2
-
-
let foo = ↓1__000
-
-
let foo = ↓1.0001
-
-
let foo = ↓1_000_000.000000_1
-
-
let foo = ↓1000000.000000_1
-
-
let foo: Double = ↓-(100000)
-
-
let foo: Double = ↓-(10.000000_1)
-
-
let foo: Double = ↓-(123456 / ↓447.214214)
-
-
let foo: Double = +(↓100000)
-
-
let foo: Double = +(↓10.000000_1)
-
-
let foo: Double = +(↓123456 / ↓447.214214)
-
-
let foo: Double = (↓100000)
-
-
let foo: Double = (↓10.000000_1)
-
-
let foo: Double = (↓123456 / ↓447.214214)
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/object_literal.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/object_literal.html deleted file mode 100644 index 1031f43da..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/object_literal.html +++ /dev/null @@ -1,393 +0,0 @@ - - - - object_literal Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Object Literal

- -

Prefer object literals over image and color inits.

- -
    -
  • Identifier: object_literal
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, image_literal: true, color_literal: true
  • -
-

Non Triggering Examples

-
let image = #imageLiteral(resourceName: "image.jpg")
-
-
let color = #colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)
-
-
let image = UIImage(named: aVariable)
-
-
let image = UIImage(named: "interpolated \(variable)")
-
-
let color = UIColor(red: value, green: value, blue: value, alpha: 1)
-
-
let image = NSImage(named: aVariable)
-
-
let image = NSImage(named: "interpolated \(variable)")
-
-
let color = NSColor(red: value, green: value, blue: value, alpha: 1)
-
-

Triggering Examples

-
let image = ↓UIImage(named: "foo")
-
-
let color = ↓UIColor(red: 0.3, green: 0.3, blue: 0.3, alpha: 1)
-
-
let color = ↓UIColor(red: 100 / 255.0, green: 50 / 255.0, blue: 0, alpha: 1)
-
-
let color = ↓UIColor(white: 0.5, alpha: 1)
-
-
let image = ↓NSImage(named: "foo")
-
-
let color = ↓NSColor(red: 0.3, green: 0.3, blue: 0.3, alpha: 1)
-
-
let color = ↓NSColor(red: 100 / 255.0, green: 50 / 255.0, blue: 0, alpha: 1)
-
-
let color = ↓NSColor(white: 0.5, alpha: 1)
-
-
let image = ↓UIImage.init(named: "foo")
-
-
let color = ↓UIColor.init(red: 0.3, green: 0.3, blue: 0.3, alpha: 1)
-
-
let color = ↓UIColor.init(red: 100 / 255.0, green: 50 / 255.0, blue: 0, alpha: 1)
-
-
let color = ↓UIColor.init(white: 0.5, alpha: 1)
-
-
let image = ↓NSImage.init(named: "foo")
-
-
let color = ↓NSColor.init(red: 0.3, green: 0.3, blue: 0.3, alpha: 1)
-
-
let color = ↓NSColor.init(red: 100 / 255.0, green: 50 / 255.0, blue: 0, alpha: 1)
-
-
let color = ↓NSColor.init(white: 0.5, alpha: 1)
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/opening_brace.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/opening_brace.html deleted file mode 100644 index cf0a180bb..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/opening_brace.html +++ /dev/null @@ -1,485 +0,0 @@ - - - - opening_brace Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Opening Brace Spacing

- -

Opening braces should be preceded by a single space and on the same line as the declaration.

- -
    -
  • Identifier: opening_brace
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, allowMultilineFunc: false
  • -
-

Non Triggering Examples

-
func abc() {
-}
-
-
[].map() { $0 }
-
-
[].map({ })
-
-
if let a = b { }
-
-
while a == b { }
-
-
guard let a = b else { }
-
-
if
-    let a = b,
-    let c = d
-    where a == c
-{ }
-
-
while
-    let a = b,
-    let c = d
-    where a == c
-{ }
-
-
guard
-    let a = b,
-    let c = d
-    where a == c else
-{ }
-
-
struct Rule {}
-
-
-
struct Parent {
-    struct Child {
-        let foo: Int
-    }
-}
-
-
-
func f(rect: CGRect) {
-    {
-        let centre = CGPoint(x: rect.midX, y: rect.midY)
-        print(centre)
-    }()
-}
-
-
func f(rect: CGRect) -> () -> Void {
-    {
-        let centre = CGPoint(x: rect.midX, y: rect.midY)
-        print(centre)
-    }
-}
-
-
func f() -> () -> Void {
-    {}
-}
-
-

Triggering Examples

-
func abc()↓{
-}
-
-
func abc()
-    ↓{ }
-
-
func abc(a: A
-    b: B)
-↓{
-
-
[].map()↓{ $0 }
-
-
[].map( ↓{ } )
-
-
if let a = b↓{ }
-
-
while a == b↓{ }
-
-
guard let a = b else↓{ }
-
-
if
-    let a = b,
-    let c = d
-    where a == c↓{ }
-
-
while
-    let a = b,
-    let c = d
-    where a == c↓{ }
-
-
guard
-    let a = b,
-    let c = d
-    where a == c else↓{ }
-
-
struct Rule↓{}
-
-
-
struct Rule
-↓{
-}
-
-
-
struct Rule
-
-    ↓{
-}
-
-
-
struct Parent {
-    struct Child
-    ↓{
-        let foo: Int
-    }
-}
-
-
-
// Get the current thread's TLS pointer. On first call for a given thread,
-// creates and initializes a new one.
-internal static func getPointer()
-  -> UnsafeMutablePointer<_ThreadLocalStorage>
-{ // <- here
-  return _swift_stdlib_threadLocalStorageGet().assumingMemoryBound(
-    to: _ThreadLocalStorage.self)
-}
-
-
func run_Array_method1x(_ N: Int) {
-  let existentialArray = array!
-  for _ in 0 ..< N * 100 {
-    for elt in existentialArray {
-      if !elt.doIt()  {
-        fatalError("expected true")
-      }
-    }
-  }
-}
-
-func run_Array_method2x(_ N: Int) {
-
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/operator_usage_whitespace.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/operator_usage_whitespace.html deleted file mode 100644 index 73f0efb2f..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/operator_usage_whitespace.html +++ /dev/null @@ -1,482 +0,0 @@ - - - - operator_usage_whitespace Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Operator Usage Whitespace

- -

Operators should be surrounded by a single whitespace when they are being used.

- -
    -
  • Identifier: operator_usage_whitespace
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, lines_look_around: 2, skip_aligned_constants: true
  • -
-

Non Triggering Examples

-
let foo = 1 + 2
-
-
-
let foo = 1 > 2
-
-
-
let foo = !false
-
-
-
let foo: Int?
-
-
-
let foo: Array<String>
-
-
-
let model = CustomView<Container<Button>, NSAttributedString>()
-
-
-
let foo: [String]
-
-
-
let foo = 1 + 
-  2
-
-
-
let range = 1...3
-
-
-
let range = 1 ... 3
-
-
-
let range = 1..<3
-
-
-
#if swift(>=3.0)
-    foo()
-#endif
-
-
-
array.removeAtIndex(-200)
-
-
-
let name = "image-1"
-
-
-
button.setImage(#imageLiteral(resourceName: "image-1"), for: .normal)
-
-
-
let doubleValue = -9e-11
-
-
-
let foo = GenericType<(UIViewController) -> Void>()
-
-
-
let foo = Foo<Bar<T>, Baz>()
-
-
-
let foo = SignalProducer<Signal<Value, Error>, Error>([ self.signal, next ]).flatten(.concat)
-
-
-
"let foo =  1"
-
-
  enum Enum {
-  case hello   = 1
-  case hello2  = 1
-  }
-
-

Triggering Examples

-
let foo = 1↓+2
-
-
-
let foo = 1↓   + 2
-
-
-
let foo = 1↓   +    2
-
-
-
let foo = 1↓ +    2
-
-
-
let foo↓=1↓+2
-
-
-
let foo↓=1 + 2
-
-
-
let foo↓=bar
-
-
-
let range = 1↓ ..<  3
-
-
-
let foo = bar↓   ?? 0
-
-
-
let foo = bar↓??0
-
-
-
let foo = bar↓ !=  0
-
-
-
let foo = bar↓ !==  bar2
-
-
-
let v8 = Int8(1)↓  << 6
-
-
-
let v8 = 1↓ <<  (6)
-
-
-
let v8 = 1↓ <<  (6)
- let foo = 1 > 2
-
-
-
let foo↓  = [1]
-
-
-
let foo↓  = "1"
-
-
-
let foo↓ =  "1"
-
-
-
  enum Enum {
-  case one↓  =  1
-  case two  = 1
-  }
-
-
  enum Enum {
-  case one  = 1
-  case two↓  =  1
-  }
-
-
  enum Enum {
-  case one↓   = 1
-  case two↓  = 1
-  }
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/operator_whitespace.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/operator_whitespace.html deleted file mode 100644 index 317c7b66c..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/operator_whitespace.html +++ /dev/null @@ -1,372 +0,0 @@ - - - - operator_whitespace Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Operator Function Whitespace

- -

Operators should be surrounded by a single whitespace when defining them.

- -
    -
  • Identifier: operator_whitespace
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
func <| (lhs: Int, rhs: Int) -> Int {}
-
-
-
func <|< <A>(lhs: A, rhs: A) -> A {}
-
-
-
func abc(lhs: Int, rhs: Int) -> Int {}
-
-
-

Triggering Examples

-
↓func <|(lhs: Int, rhs: Int) -> Int {}
-
-
-
↓func <|<<A>(lhs: A, rhs: A) -> A {}
-
-
-
↓func <|  (lhs: Int, rhs: Int) -> Int {}
-
-
-
↓func <|<  <A>(lhs: A, rhs: A) -> A {}
-
-
-
↓func  <| (lhs: Int, rhs: Int) -> Int {}
-
-
-
↓func  <|< <A>(lhs: A, rhs: A) -> A {}
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/optional_enum_case_matching.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/optional_enum_case_matching.html deleted file mode 100644 index b87776c63..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/optional_enum_case_matching.html +++ /dev/null @@ -1,397 +0,0 @@ - - - - optional_enum_case_matching Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Optional Enum Case Match

- -

Matching an enum case against an optional enum without ‘?’ is supported on Swift 5.1 and above.

- -
    -
  • Identifier: optional_enum_case_matching
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.1.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
switch foo {
- case .bar: break
- case .baz: break
- default: break
-}
-
-
switch foo {
- case (.bar, .baz): break
- case (.bar, _): break
- case (_, .baz): break
- default: break
-}
-
-
switch (x, y) {
-case (.c, _?):
-    break
-case (.c, nil):
-    break
-case (_, _):
-    break
-}
-
-

Triggering Examples

-
switch foo {
- case .bar↓?: break
- case .baz: break
- default: break
-}
-
-
switch foo {
- case Foo.bar↓?: break
- case .baz: break
- default: break
-}
-
-
switch foo {
- case .bar↓?, .baz↓?: break
- default: break
-}
-
-
switch foo {
- case .bar↓? where x > 1: break
- case .baz: break
- default: break
-}
-
-
switch foo {
- case (.bar↓?, .baz↓?): break
- case (.bar↓?, _): break
- case (_, .bar↓?): break
- default: break
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/orphaned_doc_comment.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/orphaned_doc_comment.html deleted file mode 100644 index 4fad64935..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/orphaned_doc_comment.html +++ /dev/null @@ -1,369 +0,0 @@ - - - - orphaned_doc_comment Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Orphaned Doc Comment

- -

A doc comment should be attached to a declaration.

- -
    -
  • Identifier: orphaned_doc_comment
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
/// My great property
-var myGreatProperty: String!
-
-
//////////////////////////////////////
-//
-// Copyright header.
-//
-//////////////////////////////////////
-
-
/// Look here for more info: https://github.com.
-var myGreatProperty: String!
-
-
/// Look here for more info:
-/// https://github.com.
-var myGreatProperty: String!
-
-

Triggering Examples

-
↓/// My great property
-// Not a doc string
-var myGreatProperty: String!
-
-
↓/// Look here for more info: https://github.com.
-// Not a doc string
-var myGreatProperty: String!
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/overridden_super_call.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/overridden_super_call.html deleted file mode 100644 index e54d30240..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/overridden_super_call.html +++ /dev/null @@ -1,397 +0,0 @@ - - - - overridden_super_call Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Overridden methods call super

- -

Some overridden methods should always call super

- -
    -
  • Identifier: overridden_super_call
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, excluded: [], included: [“*”]
  • -
-

Non Triggering Examples

-
class VC: UIViewController {
-    override func viewWillAppear(_ animated: Bool) {
-        super.viewWillAppear(animated)
-    }
-}
-
-
class VC: UIViewController {
-    override func viewWillAppear(_ animated: Bool) {
-        self.method1()
-        super.viewWillAppear(animated)
-        self.method2()
-    }
-}
-
-
class VC: UIViewController {
-    override func loadView() {
-    }
-}
-
-
class Some {
-    func viewWillAppear(_ animated: Bool) {
-    }
-}
-
-
class VC: UIViewController {
-    override func viewDidLoad() {
-    defer {
-        super.viewDidLoad()
-        }
-    }
-}
-
-

Triggering Examples

-
class VC: UIViewController {
-    override func viewWillAppear(_ animated: Bool) {↓
-        //Not calling to super
-        self.method()
-    }
-}
-
-
class VC: UIViewController {
-    override func viewWillAppear(_ animated: Bool) {↓
-        super.viewWillAppear(animated)
-        //Other code
-        super.viewWillAppear(animated)
-    }
-}
-
-
class VC: UIViewController {
-    override func didReceiveMemoryWarning() {↓
-    }
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/override_in_extension.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/override_in_extension.html deleted file mode 100644 index 50e54a7f3..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/override_in_extension.html +++ /dev/null @@ -1,382 +0,0 @@ - - - - override_in_extension Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Override in Extension

- -

Extensions shouldn’t override declarations.

- -
    -
  • Identifier: override_in_extension
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
extension Person {
-  var age: Int { return 42 }
-}
-
-
-
extension Person {
-  func celebrateBirthday() {}
-}
-
-
-
class Employee: Person {
-  override func celebrateBirthday() {}
-}
-
-
-
class Foo: NSObject {}
-extension Foo {
-    override var description: String { return "" }
-}
-
-
struct Foo {
-    class Bar: NSObject {}
-}
-extension Foo.Bar {
-    override var description: String { return "" }
-}
-
-

Triggering Examples

-
extension Person {
-  override ↓var age: Int { return 42 }
-}
-
-
-
extension Person {
-  override ↓func celebrateBirthday() {}
-}
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/pattern_matching_keywords.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/pattern_matching_keywords.html deleted file mode 100644 index 940085139..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/pattern_matching_keywords.html +++ /dev/null @@ -1,413 +0,0 @@ - - - - pattern_matching_keywords Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Pattern Matching Keywords

- -

Combine multiple pattern matching bindings by moving keywords out of tuples.

- -
    -
  • Identifier: pattern_matching_keywords
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
switch foo {
-    default: break
-}
-
-
switch foo {
-    case 1: break
-}
-
-
switch foo {
-    case bar: break
-}
-
-
switch foo {
-    case let (x, y): break
-}
-
-
switch foo {
-    case .foo(let x): break
-}
-
-
switch foo {
-    case let .foo(x, y): break
-}
-
-
switch foo {
-    case .foo(let x), .bar(let x): break
-}
-
-
switch foo {
-    case .foo(let x, var y): break
-}
-
-
switch foo {
-    case var (x, y): break
-}
-
-
switch foo {
-    case .foo(var x): break
-}
-
-
switch foo {
-    case var .foo(x, y): break
-}
-
-

Triggering Examples

-
switch foo {
-    case (↓let x,  ↓let y): break
-}
-
-
switch foo {
-    case .foo(↓let x, ↓let y): break
-}
-
-
switch foo {
-    case (.yamlParsing(↓let x), .yamlParsing(↓let y)): break
-}
-
-
switch foo {
-    case (↓var x,  ↓var y): break
-}
-
-
switch foo {
-    case .foo(↓var x, ↓var y): break
-}
-
-
switch foo {
-    case (.yamlParsing(↓var x), .yamlParsing(↓var y)): break
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prefer_nimble.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prefer_nimble.html deleted file mode 100644 index b77cb3707..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prefer_nimble.html +++ /dev/null @@ -1,361 +0,0 @@ - - - - prefer_nimble Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Prefer Nimble

- -

Prefer Nimble matchers over XCTAssert functions.

- -
    -
  • Identifier: prefer_nimble
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
expect(foo) == 1
-
-
expect(foo).to(equal(1))
-
-

Triggering Examples

-
↓XCTAssertTrue(foo)
-
-
↓XCTAssertEqual(foo, 2)
-
-
↓XCTAssertNotEqual(foo, 2)
-
-
↓XCTAssertNil(foo)
-
-
↓XCTAssert(foo)
-
-
↓XCTAssertGreaterThan(foo, 10)
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prefer_self_in_static_references.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prefer_self_in_static_references.html deleted file mode 100644 index 6cd61e32e..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prefer_self_in_static_references.html +++ /dev/null @@ -1,391 +0,0 @@ - - - - prefer_self_in_static_references Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Prefer Self in Static References

- -

Static references should be prefixed by Self instead of the class name.

- -
    -
  • Identifier: prefer_self_in_static_references
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: N/A
  • -
-

Non Triggering Examples

-
    class C {
-        static let primes = [2, 3, 5, 7]
-        func isPrime(i: Int) -> Bool { Self.primes.contains(i) }
-
-
    struct T {
-        static let i = 0
-    }
-    struct S {
-        static let i = 0
-    }
-    extension T {
-        static let j = S.i + T.i
-        static let k = { T.j }()
-    }
-
-
    class `Self` {
-        static let i = 0
-        func f() -> Int { Self.i }
-    }
-
-

Triggering Examples

-
    class C {
-        struct S {
-            static let i = 2
-            let h = ↓S.i
-        }
-        static let i = 1
-        let h = C.i
-        func f() -> Int { ↓C.i + h }
-    }
-
-
struct S {
-    static let i = 1
-    static func f() -> Int { ↓S.i }
-    func g() -> Any { ↓S.self }
-}
-
-
    struct S {
-        struct T {
-            static let i = 3
-        }
-        struct R {
-            static let j = S.T.i
-        }
-        static let h = ↓S.T.i + ↓S.R.j
-    }
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prefer_self_type_over_type_of_self.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prefer_self_type_over_type_of_self.html deleted file mode 100644 index 023ba0566..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prefer_self_type_over_type_of_self.html +++ /dev/null @@ -1,387 +0,0 @@ - - - - prefer_self_type_over_type_of_self Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Prefer Self Type Over Type of Self

- -

Prefer Self over type(of: self) when accessing properties or calling methods.

- -
    -
  • Identifier: prefer_self_type_over_type_of_self
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.1.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class Foo {
-    func bar() {
-        Self.baz()
-    }
-}
-
-
class Foo {
-    func bar() {
-        print(Self.baz)
-    }
-}
-
-
class A {
-    func foo(param: B) {
-        type(of: param).bar()
-    }
-}
-
-
class A {
-    func foo() {
-        print(type(of: self))
-    }
-}
-
-

Triggering Examples

-
class Foo {
-    func bar() {
-        ↓type(of: self).baz()
-    }
-}
-
-
class Foo {
-    func bar() {
-        print(↓type(of: self).baz)
-    }
-}
-
-
class Foo {
-    func bar() {
-        print(↓Swift.type(of: self).baz)
-    }
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prefer_zero_over_explicit_init.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prefer_zero_over_explicit_init.html deleted file mode 100644 index 0c98e9597..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prefer_zero_over_explicit_init.html +++ /dev/null @@ -1,365 +0,0 @@ - - - - prefer_zero_over_explicit_init Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Prefer Zero Over Explicit Init

- -

Prefer .zero over explicit init with zero parameters (e.g. CGPoint(x: 0, y: 0))

- -
    -
  • Identifier: prefer_zero_over_explicit_init
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
CGRect(x: 0, y: 0, width: 0, height: 1)
-
-
CGPoint(x: 0, y: -1)
-
-
CGSize(width: 2, height: 4)
-
-
CGVector(dx: -5, dy: 0)
-
-

Triggering Examples

-
↓CGPoint(x: 0, y: 0)
-
-
↓CGPoint(x: 0.000000, y: 0)
-
-
↓CGPoint(x: 0.000000, y: 0.000)
-
-
↓CGRect(x: 0, y: 0, width: 0, height: 0)
-
-
↓CGSize(width: 0, height: 0)
-
-
↓CGVector(dx: 0, dy: 0)
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prefixed_toplevel_constant.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prefixed_toplevel_constant.html deleted file mode 100644 index 8c2ea7954..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prefixed_toplevel_constant.html +++ /dev/null @@ -1,401 +0,0 @@ - - - - prefixed_toplevel_constant Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Prefixed Top-Level Constant

- -

Top-level constants should be prefixed by k.

- -
    -
  • Identifier: prefixed_toplevel_constant
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, only_private: false
  • -
-

Non Triggering Examples

-
private let kFoo = 20.0
-
-
public let kFoo = false
-
-
internal let kFoo = "Foo"
-
-
let kFoo = true
-
-
let Foo = true
-
-
struct Foo {
-   let bar = 20.0
-}
-
-
private var foo = 20.0
-
-
public var foo = false
-
-
internal var foo = "Foo"
-
-
var foo = true
-
-
var foo = true, bar = true
-
-
var foo = true, let kFoo = true
-
-
let
-   kFoo = true
-
-
var foo: Int {
-   return a + b
-}
-
-
let kFoo = {
-   return a + b
-}()
-
-

Triggering Examples

-
private let ↓Foo = 20.0
-
-
public let ↓Foo = false
-
-
internal let ↓Foo = "Foo"
-
-
let ↓Foo = true
-
-
let ↓foo = 2, ↓bar = true
-
-
var foo = true, let ↓Foo = true
-
-
let
-    ↓foo = true
-
-
let ↓foo = {
-   return a + b
-}()
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/private_action.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/private_action.html deleted file mode 100644 index 215fb7ac7..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/private_action.html +++ /dev/null @@ -1,430 +0,0 @@ - - - - private_action Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Private Actions

- -

IBActions should be private.

- -
    -
  • Identifier: private_action
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class Foo {
-    @IBAction private func barButtonTapped(_ sender: UIButton) {}
-}
-
-
-
struct Foo {
-    @IBAction private func barButtonTapped(_ sender: UIButton) {}
-}
-
-
-
class Foo {
-    @IBAction fileprivate func barButtonTapped(_ sender: UIButton) {}
-}
-
-
-
struct Foo {
-    @IBAction fileprivate func barButtonTapped(_ sender: UIButton) {}
-}
-
-
-
private extension Foo {
-    @IBAction func barButtonTapped(_ sender: UIButton) {}
-}
-
-
-
fileprivate extension Foo {
-    @IBAction func barButtonTapped(_ sender: UIButton) {}
-}
-
-
-

Triggering Examples

-
class Foo {
-    @IBAction ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
-
struct Foo {
-    @IBAction ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
-
class Foo {
-    @IBAction public ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
-
struct Foo {
-    @IBAction public ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
-
class Foo {
-    @IBAction internal ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
-
struct Foo {
-    @IBAction internal ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
-
extension Foo {
-    @IBAction ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
-
extension Foo {
-    @IBAction public ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
-
extension Foo {
-    @IBAction internal ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
-
public extension Foo {
-    @IBAction ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
-
internal extension Foo {
-    @IBAction ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/private_outlet.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/private_outlet.html deleted file mode 100644 index 2647f3108..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/private_outlet.html +++ /dev/null @@ -1,380 +0,0 @@ - - - - private_outlet Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Private Outlets

- -

IBOutlets should be private to avoid leaking UIKit to higher layers.

- -
    -
  • Identifier: private_outlet
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, allow_private_set: false
  • -
-

Non Triggering Examples

-
class Foo {
-  @IBOutlet private var label: UILabel?
-}
-
-
-
class Foo {
-  @IBOutlet private var label: UILabel!
-}
-
-
-
class Foo {
-  var notAnOutlet: UILabel
-}
-
-
-
class Foo {
-  @IBOutlet weak private var label: UILabel?
-}
-
-
-
class Foo {
-  @IBOutlet private weak var label: UILabel?
-}
-
-
-

Triggering Examples

-
class Foo {
-  @IBOutlet ↓var label: UILabel?
-}
-
-
-
class Foo {
-  @IBOutlet ↓var label: UILabel!
-}
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/private_over_fileprivate.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/private_over_fileprivate.html deleted file mode 100644 index d2e98f248..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/private_over_fileprivate.html +++ /dev/null @@ -1,381 +0,0 @@ - - - - private_over_fileprivate Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Private over fileprivate

- -

Prefer private over fileprivate declarations.

- -
    -
  • Identifier: private_over_fileprivate
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, validate_extensions: false
  • -
-

Non Triggering Examples

-
extension String {}
-
-
private extension String {}
-
-
public 
- enum MyEnum {}
-
-
open extension 
- String {}
-
-
internal extension String {}
-
-
extension String {
-  fileprivate func Something(){}
-}
-
-
class MyClass {
-  fileprivate let myInt = 4
-}
-
-
class MyClass {
-  fileprivate(set) var myInt = 4
-}
-
-
struct Outter {
-  struct Inter {
-    fileprivate struct Inner {}
-  }
-}
-
-

Triggering Examples

-
↓fileprivate enum MyEnum {}
-
-
↓fileprivate class MyClass {
-  fileprivate(set) var myInt = 4
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/private_subject.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/private_subject.html deleted file mode 100644 index 85b363ac3..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/private_subject.html +++ /dev/null @@ -1,495 +0,0 @@ - - - - private_subject Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Private Combine Subject

- -

Combine Subject should be private.

- -
    -
  • Identifier: private_subject
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
final class Foobar {
-    private let goodSubject = PassthroughSubject<Bool, Never>()
-}
-
-
final class Foobar {
-    private let goodSubject: PassthroughSubject<Bool, Never>
-}
-
-
final class Foobar {
-    fileprivate let goodSubject: PassthroughSubject<Bool, Never>
-}
-
-
final class Foobar {
-    private let goodSubject: PassthroughSubject<Bool, Never> = .ini()
-}
-
-
final class Foobar {
-    private let goodSubject = CurrentValueSubject<Bool, Never>(false)
-}
-
-
final class Foobar {
-    private let goodSubject: CurrentValueSubject<Bool, Never>
-}
-
-
final class Foobar {
-    fileprivate let goodSubject: CurrentValueSubject<String, Never>
-}
-
-
final class Foobar {
-    private let goodSubject: CurrentValueSubject<String, Never> = .ini("toto")
-}
-
-
final class Foobar {
-    private let goodSubject = PassthroughSubject<Set<String>, Never>()
-}
-
-
final class Foobar {
-    private let goodSubject: PassthroughSubject<Set<String>, Never> = .init()
-}
-
-
final class Foobar {
-    private let goodSubject: CurrentValueSubject<Set<String>, Never> = .init([])
-}
-
-
final class Foobar {
-    private let goodSubject =
-        PassthroughSubject<Bool, Never>()
-}
-
-
final class Foobar {
-    private let goodSubject:
-        PassthroughSubject<Bool, Never> = .ini()
-}
-
-
final class Foobar {
-    private let goodSubject =
-        CurrentValueSubject<Bool, Never>(true)
-}
-
-

Triggering Examples

-
final class Foobar {
-    let ↓badSubject = PassthroughSubject<Bool, Never>()
-}
-
-
final class Foobar {
-    let ↓badSubject: PassthroughSubject<Bool, Never>
-}
-
-
final class Foobar {
-    private(set) let ↓badSubject: PassthroughSubject<Bool, Never>
-}
-
-
final class Foobar {
-    private(set) let ↓badSubject = PassthroughSubject<Bool, Never>()
-}
-
-
final class Foobar {
-    let goodSubject: PassthroughSubject<Bool, Never> = .ini()
-}
-
-
final class Foobar {
-    private let goodSubject: PassthroughSubject<Bool, Never>
-    private(set) let ↓badSubject = PassthroughSubject<Bool, Never>()
-    private(set) let ↓anotherBadSubject = PassthroughSubject<Bool, Never>()
-}
-
-
final class Foobar {
-    private(set) let ↓badSubject = PassthroughSubject<Bool, Never>()
-    private let goodSubject: PassthroughSubject<Bool, Never>
-    private(set) let ↓anotherBadSubject = PassthroughSubject<Bool, Never>()
-}
-
-
final class Foobar {
-    let ↓badSubject = CurrentValueSubject<Bool, Never>(true)
-}
-
-
final class Foobar {
-    let ↓badSubject: CurrentValueSubject<Bool, Never>
-}
-
-
final class Foobar {
-    private(set) let ↓badSubject: CurrentValueSubject<Bool, Never>
-}
-
-
final class Foobar {
-    private(set) let ↓badSubject = CurrentValueSubject<Bool, Never>(false)
-}
-
-
final class Foobar {
-    let goodSubject: CurrentValueSubject<String, Never> = .ini("toto")
-}
-
-
final class Foobar {
-    private let goodSubject: CurrentValueSubject<Bool, Never>
-    private(set) let ↓badSubject = CurrentValueSubject<Bool, Never>(false)
-    private(set) let ↓anotherBadSubject = CurrentValueSubject<Bool, Never>(false)
-}
-
-
final class Foobar {
-    private(set) let ↓badSubject = CurrentValueSubject<Bool, Never>(false)
-    private let goodSubject: CurrentValueSubject<Bool, Never>
-    private(set) let ↓anotherBadSubject = CurrentValueSubject<Bool, Never>(true)
-}
-
-
final class Foobar {
-    let ↓badSubject = PassthroughSubject<Set<String>, Never>()
-}
-
-
final class Foobar {
-    let ↓badSubject: PassthroughSubject<Set<String>, Never> = .init()
-}
-
-
final class Foobar {
-    let ↓badSubject: CurrentValueSubject<Set<String>, Never> = .init([])
-}
-
-
final class Foobar {
-    let ↓badSubject =
-        PassthroughSubject<Bool, Never>()
-}
-
-
final class Foobar {
-    let ↓badSubject:
-        PassthroughSubject<Bool, Never> = .ini()
-}
-
-
final class Foobar {
-    let ↓badSubject =
-        CurrentValueSubject<Bool, Never>(true)
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/private_unit_test.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/private_unit_test.html deleted file mode 100644 index 2f65872f3..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/private_unit_test.html +++ /dev/null @@ -1,413 +0,0 @@ - - - - private_unit_test Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Private Unit Test

- -

Unit tests marked private are silently skipped.

- -
    -
  • Identifier: private_unit_test
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning: XCTestCase
  • -
-

Non Triggering Examples

-
"class FooTest: XCTestCase {
-    func test1() {}
-    internal func test2() {}
-    public func test3() {}
-}
-
-
internal class FooTest: XCTestCase {
-    func test1() {}
-    internal func test2() {}
-    public func test3() {}
-}
-
-
public class FooTest: XCTestCase {
-    func test1() {}
-    internal func test2() {}
-    public func test3() {}
-}
-
-
@objc private class FooTest: XCTestCase {
-    @objc private func test1() {}
-        internal func test2() {}
-        public func test3() {}
-}
-
-
private class Foo: NSObject {
-    func test1() {}
-    internal func test2() {}
-    public func test3() {}
-}
-
-
private class Foo {
-    func test1() {}
-    internal func test2() {}
-    public func test3() {}
-}
-
-
public class FooTest: XCTestCase {
-    func test1(param: Int) {}
-}
-
-

Triggering Examples

-
private ↓class FooTest: XCTestCase {
-    func test1() {}
-        internal func test2() {}
-        public func test3() {}
-        private func test4() {}
-}
-
-
class FooTest: XCTestCase {
-    func test1() {}
-        internal func test2() {}
-        public func test3() {}
-        private ↓func test4() {}
-}
-
-
internal class FooTest: XCTestCase {
-    func test1() {}
-        internal func test2() {}
-        public func test3() {}
-        private ↓func test4() {}
-}
-
-
public class FooTest: XCTestCase {
-    func test1() {}
-        internal func test2() {}
-        public func test3() {}
-        private ↓func test4() {}
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prohibited_interface_builder.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prohibited_interface_builder.html deleted file mode 100644 index 67c31a189..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prohibited_interface_builder.html +++ /dev/null @@ -1,361 +0,0 @@ - - - - prohibited_interface_builder Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Prohibited Interface Builder

- -

Creating views using Interface Builder should be avoided.

- -
    -
  • Identifier: prohibited_interface_builder
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class ViewController: UIViewController {
-    var label: UILabel!
-}
-
-
class ViewController: UIViewController {
-    @objc func buttonTapped(_ sender: UIButton) {}
-}
-
-

Triggering Examples

-
class ViewController: UIViewController {
-    @IBOutlet ↓var label: UILabel!
-}
-
-
class ViewController: UIViewController {
-    @IBAction ↓func buttonTapped(_ sender: UIButton) {}
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prohibited_super_call.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prohibited_super_call.html deleted file mode 100644 index 1eaee7998..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prohibited_super_call.html +++ /dev/null @@ -1,394 +0,0 @@ - - - - prohibited_super_call Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Prohibited calls to super

- -

Some methods should not call super

- -
    -
  • Identifier: prohibited_super_call
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, excluded: [[]], included: [[“*”]]
  • -
-

Non Triggering Examples

-
class VC: UIViewController {
-    override func loadView() {
-    }
-}
-
-
class NSView {
-    func updateLayer() {
-        self.method1()
-    }
-}
-
-
public class FileProviderExtension: NSFileProviderExtension {
-    override func providePlaceholder(at url: URL, completionHandler: @escaping (Error?) -> Void) {
-        guard let identifier = persistentIdentifierForItem(at: url) else {
-            completionHandler(NSFileProviderError(.noSuchItem))
-            return
-        }
-    }
-}
-
-

Triggering Examples

-
class VC: UIViewController {
-    override func loadView() {↓
-        super.loadView()
-    }
-}
-
-
class VC: NSFileProviderExtension {
-    override func providePlaceholder(at url: URL, completionHandler: @escaping (Error?) -> Void) {↓
-        self.method1()
-        super.providePlaceholder(at:url, completionHandler: completionHandler)
-    }
-}
-
-
class VC: NSView {
-    override func updateLayer() {↓
-        self.method1()
-        super.updateLayer()
-        self.method2()
-    }
-}
-
-
class VC: NSView {
-    override func updateLayer() {↓
-        defer {
-            super.updateLayer()
-        }
-    }
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/protocol_property_accessors_order.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/protocol_property_accessors_order.html deleted file mode 100644 index 980b7ada0..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/protocol_property_accessors_order.html +++ /dev/null @@ -1,361 +0,0 @@ - - - - protocol_property_accessors_order Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Protocol Property Accessors Order

- -

When declaring properties in protocols, the order of accessors should be get set.

- -
    -
  • Identifier: protocol_property_accessors_order
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
protocol Foo {
- var bar: String { get set }
- }
-
-
protocol Foo {
- var bar: String { get }
- }
-
-
protocol Foo {
- var bar: String { set }
- }
-
-

Triggering Examples

-
protocol Foo {
- var bar: String { ↓set get }
- }
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/quick_discouraged_call.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/quick_discouraged_call.html deleted file mode 100644 index cef264be9..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/quick_discouraged_call.html +++ /dev/null @@ -1,595 +0,0 @@ - - - - quick_discouraged_call Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Quick Discouraged Call

- -

Discouraged call inside ‘describe’ and/or ‘context’ block.

- -
    -
  • Identifier: quick_discouraged_call
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           beforeEach {
-               let foo = Foo()
-               foo.toto()
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           beforeEach {
-               let foo = Foo()
-               foo.toto()
-           }
-           afterEach {
-               let foo = Foo()
-               foo.toto()
-           }
-           describe("bar") {
-           }
-           context("bar") {
-           }
-           it("bar") {
-               let foo = Foo()
-               foo.toto()
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-          itBehavesLike("bar")
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           it("does something") {
-               let foo = Foo()
-               foo.toto()
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       context("foo") {
-           afterEach { toto.append(foo) }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       xcontext("foo") {
-           afterEach { toto.append(foo) }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       xdescribe("foo") {
-           afterEach { toto.append(foo) }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           xit("does something") {
-               let foo = Foo()
-               foo.toto()
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       fcontext("foo") {
-           afterEach { toto.append(foo) }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       fdescribe("foo") {
-           afterEach { toto.append(foo) }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           fit("does something") {
-               let foo = Foo()
-               foo.toto()
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       fitBehavesLike("foo")
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       xitBehavesLike("foo")
-   }
-}
-
-

Triggering Examples

-
class TotoTests {
-   override func spec() {
-       describe("foo") {
-           let foo = Foo()
-       }
-   }
-}
-class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           let foo = ↓Foo()
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           let foo = ↓Foo()
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           context("foo") {
-               let foo = ↓Foo()
-           }
-           context("bar") {
-               let foo = ↓Foo()
-               ↓foo.bar()
-               it("does something") {
-                   let foo = Foo()
-                   foo.toto()
-               }
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           context("foo") {
-               context("foo") {
-                   beforeEach {
-                       let foo = Foo()
-                       foo.toto()
-                   }
-                   it("bar") {
-                   }
-                   context("foo") {
-                       let foo = ↓Foo()
-                   }
-               }
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       context("foo") {
-           let foo = ↓Foo()
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       sharedExamples("foo") {
-           let foo = ↓Foo()
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           ↓foo()
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       context("foo") {
-           ↓foo()
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       sharedExamples("foo") {
-           ↓foo()
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       xdescribe("foo") {
-           let foo = ↓Foo()
-       }
-       fdescribe("foo") {
-           let foo = ↓Foo()
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       xcontext("foo") {
-           let foo = ↓Foo()
-       }
-       fcontext("foo") {
-           let foo = ↓Foo()
-       }
-   }
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/quick_discouraged_focused_test.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/quick_discouraged_focused_test.html deleted file mode 100644 index 207ac7d82..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/quick_discouraged_focused_test.html +++ /dev/null @@ -1,408 +0,0 @@ - - - - quick_discouraged_focused_test Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Quick Discouraged Focused Test

- -

Discouraged focused test. Other tests won’t run while this one is focused.

- -
    -
  • Identifier: quick_discouraged_focused_test
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           describe("bar") { }
-           context("bar") {
-               it("bar") { }
-           }
-           it("bar") { }
-           itBehavesLike("bar")
-       }
-   }
-}
-
-

Triggering Examples

-
class TotoTests: QuickSpec {
-   override func spec() {
-       ↓fdescribe("foo") { }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       ↓fcontext("foo") { }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       ↓fit("foo") { }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           ↓fit("bar") { }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       context("foo") {
-           ↓fit("bar") { }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           context("bar") {
-               ↓fit("toto") { }
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       ↓fitBehavesLike("foo")
-   }
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/quick_discouraged_pending_test.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/quick_discouraged_pending_test.html deleted file mode 100644 index 725f65fc2..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/quick_discouraged_pending_test.html +++ /dev/null @@ -1,414 +0,0 @@ - - - - quick_discouraged_pending_test Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Quick Discouraged Pending Test

- -

Discouraged pending test. This test won’t run while it’s marked as pending.

- -
    -
  • Identifier: quick_discouraged_pending_test
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           describe("bar") { }
-           context("bar") {
-               it("bar") { }
-           }
-           it("bar") { }
-           itBehavesLike("bar")
-       }
-   }
-}
-
-

Triggering Examples

-
class TotoTests: QuickSpec {
-   override func spec() {
-       ↓xdescribe("foo") { }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       ↓xcontext("foo") { }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       ↓xit("foo") { }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           ↓xit("bar") { }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       context("foo") {
-           ↓xit("bar") { }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           context("bar") {
-               ↓xit("toto") { }
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       ↓pending("foo")
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       ↓xitBehavesLike("foo")
-   }
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/raw_value_for_camel_cased_codable_enum.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/raw_value_for_camel_cased_codable_enum.html deleted file mode 100644 index 40b209dec..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/raw_value_for_camel_cased_codable_enum.html +++ /dev/null @@ -1,410 +0,0 @@ - - - - raw_value_for_camel_cased_codable_enum Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Raw Value For Camel Cased Codable Enum

- -

Camel cased cases of Codable String enums should have raw value.

- -
    -
  • Identifier: raw_value_for_camel_cased_codable_enum
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
enum Numbers: Codable {
-  case int(Int)
-  case short(Int16)
-}
-
-
enum Numbers: Int, Codable {
-  case one = 1
-  case two = 2
-}
-
-
enum Numbers: Double, Codable {
-  case one = 1.1
-  case two = 2.2
-}
-
-
enum Numbers: String, Codable {
-  case one = "one"
-  case two = "two"
-}
-
-
enum Status: String, Codable {
-    case OK, ACCEPTABLE
-}
-
-
enum Status: String, Codable {
-    case ok
-    case maybeAcceptable = "maybe_acceptable"
-}
-
-
enum Status: String {
-    case ok
-    case notAcceptable
-    case maybeAcceptable = "maybe_acceptable"
-}
-
-
enum Status: Int, Codable {
-    case ok
-    case notAcceptable
-    case maybeAcceptable = -1
-}
-
-

Triggering Examples

-
enum Status: String, Codable {
-    case ok
-    case ↓notAcceptable
-    case maybeAcceptable = "maybe_acceptable"
-}
-
-
enum Status: String, Decodable {
-   case ok
-   case ↓notAcceptable
-   case maybeAcceptable = "maybe_acceptable"
-}
-
-
enum Status: String, Encodable {
-   case ok
-   case ↓notAcceptable
-   case maybeAcceptable = "maybe_acceptable"
-}
-
-
enum Status: String, Codable {
-    case ok
-    case ↓notAcceptable
-    case maybeAcceptable = "maybe_acceptable"
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/reduce_boolean.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/reduce_boolean.html deleted file mode 100644 index 0304369a0..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/reduce_boolean.html +++ /dev/null @@ -1,365 +0,0 @@ - - - - reduce_boolean Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Reduce Boolean

- -

Prefer using .allSatisfy() or .contains() over reduce(true) or reduce(false)

- -
    -
  • Identifier: reduce_boolean
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
nums.reduce(0) { $0.0 + $0.1 }
-
-
nums.reduce(0.0) { $0.0 + $0.1 }
-
-

Triggering Examples

-
let allNines = nums.↓reduce(true) { $0.0 && $0.1 == 9 }
-
-
let anyNines = nums.↓reduce(false) { $0.0 || $0.1 == 9 }
-
-
let allValid = validators.↓reduce(true) { $0 && $1(input) }
-
-
let anyValid = validators.↓reduce(false) { $0 || $1(input) }
-
-
let allNines = nums.↓reduce(true, { $0.0 && $0.1 == 9 })
-
-
let anyNines = nums.↓reduce(false, { $0.0 || $0.1 == 9 })
-
-
let allValid = validators.↓reduce(true, { $0 && $1(input) })
-
-
let anyValid = validators.↓reduce(false, { $0 || $1(input) })
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/reduce_into.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/reduce_into.html deleted file mode 100644 index 85b8c6641..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/reduce_into.html +++ /dev/null @@ -1,406 +0,0 @@ - - - - reduce_into Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Reduce Into

- -

Prefer reduce(into:_:) over reduce(_:_:) for copy-on-write types

- -
    -
  • Identifier: reduce_into
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let foo = values.reduce(into: "abc") { $0 += "\($1)" }
-
-
values.reduce(into: Array<Int>()) { result, value in
-    result.append(value)
-}
-
-
let rows = violations.enumerated().reduce(into: "") { rows, indexAndViolation in
-    rows.append(generateSingleRow(for: indexAndViolation.1, at: indexAndViolation.0 + 1))
-}
-
-
zip(group, group.dropFirst()).reduce(into: []) { result, pair in
-    result.append(pair.0 + pair.1)
-}
-
-
let foo = values.reduce(into: [String: Int]()) { result, value in
-    result["\(value)"] = value
-}
-
-
let foo = values.reduce(into: Dictionary<String, Int>.init()) { result, value in
-    result["\(value)"] = value
-}
-
-
let foo = values.reduce(into: [Int](repeating: 0, count: 10)) { result, value in
-    result.append(value)
-}
-
-
let foo = values.reduce(MyClass()) { result, value in
-    result.handleValue(value)
-    return result
-}
-
-

Triggering Examples

-
let bar = values.↓reduce("abc") { $0 + "\($1)" }
-
-
values.↓reduce(Array<Int>()) { result, value in
-    result += [value]
-}
-
-
let rows = violations.enumerated().↓reduce("") { rows, indexAndViolation in
-    return rows + generateSingleRow(for: indexAndViolation.1, at: indexAndViolation.0 + 1)
-}
-
-
zip(group, group.dropFirst()).↓reduce([]) { result, pair in
-    result + [pair.0 + pair.1]
-}
-
-
let foo = values.↓reduce([String: Int]()) { result, value in
-    var result = result
-    result["\(value)"] = value
-    return result
-}
-
-
let bar = values.↓reduce(Dictionary<String, Int>.init()) { result, value in
-    var result = result
-    result["\(value)"] = value
-    return result
-}
-
-
let bar = values.↓reduce([Int](repeating: 0, count: 10)) { result, value in
-    return result + [value]
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_discardable_let.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_discardable_let.html deleted file mode 100644 index 5332d3d1e..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_discardable_let.html +++ /dev/null @@ -1,365 +0,0 @@ - - - - redundant_discardable_let Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Redundant Discardable Let

- -

Prefer _ = foo() over let _ = foo() when discarding a result from a function.

- -
    -
  • Identifier: redundant_discardable_let
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
_ = foo()
-
-
-
if let _ = foo() { }
-
-
-
guard let _ = foo() else { return }
-
-
-
let _: ExplicitType = foo()
-
-
while let _ = SplashStyle(rawValue: maxValue) { maxValue += 1 }
-
-
-

Triggering Examples

-
↓let _ = foo()
-
-
-
if _ = foo() { ↓let _ = bar() }
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_nil_coalescing.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_nil_coalescing.html deleted file mode 100644 index 3c201120c..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_nil_coalescing.html +++ /dev/null @@ -1,354 +0,0 @@ - - - - redundant_nil_coalescing Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Redundant Nil Coalescing

- -

nil coalescing operator is only evaluated if the lhs is nil, coalescing operator with nil as rhs is redundant

- -
    -
  • Identifier: redundant_nil_coalescing
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
var myVar: Int?; myVar ?? 0
-
-
-

Triggering Examples

-
var myVar: Int? = nil; myVar↓ ?? nil
-
-
-
var myVar: Int? = nil; myVar↓??nil
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_objc_attribute.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_objc_attribute.html deleted file mode 100644 index 79b5b2d98..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_objc_attribute.html +++ /dev/null @@ -1,481 +0,0 @@ - - - - redundant_objc_attribute Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Redundant @objc Attribute

- -

Objective-C attribute (@objc) is redundant in declaration.

- -
    -
  • Identifier: redundant_objc_attribute
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
@objc private var foo: String? {}
-
-
@IBInspectable private var foo: String? {}
-
-
@objc private func foo(_ sender: Any) {}
-
-
@IBAction private func foo(_ sender: Any) {}
-
-
@GKInspectable private var foo: String! {}
-
-
private @GKInspectable var foo: String! {}
-
-
@NSManaged var foo: String!
-
-
@objc @NSCopying var foo: String!
-
-
@objcMembers
-class Foo {
-    var bar: Any?
-    @objc
-    class Bar {
-        @objc
-        var foo: Any?
-    }
-}
-
-
@objc
-extension Foo {
-    var bar: Int {
-        return 0
-    }
-}
-
-
extension Foo {
-    @objc
-    var bar: Int { return 0 }
-}
-
-
@objc @IBDesignable
-extension Foo {
-    var bar: Int { return 0 }
-}
-
-
@IBDesignable
-extension Foo {
-    @objc
-    var bar: Int { return 0 }
-    var fooBar: Int { return 1 }
-}
-
-
@objcMembers
-class Foo: NSObject {
-    @objc
-    private var bar: Int {
-        return 0
-    }
-}
-
-
@objcMembers
-class Foo {
-    class Bar: NSObject {
-        @objc var foo: Any
-    }
-}
-
-
@objcMembers
-class Foo {
-    @objc class Bar {}
-}
-
-

Triggering Examples

-
↓@objc @IBInspectable private var foo: String? {}
-
-
@IBInspectable ↓@objc private var foo: String? {}
-
-
↓@objc @IBAction private func foo(_ sender: Any) {}
-
-
@IBAction ↓@objc private func foo(_ sender: Any) {}
-
-
↓@objc @GKInspectable private var foo: String! {}
-
-
@GKInspectable ↓@objc private var foo: String! {}
-
-
↓@objc @NSManaged private var foo: String!
-
-
@NSManaged ↓@objc private var foo: String!
-
-
↓@objc @IBDesignable class Foo {}
-
-
@objcMembers
-class Foo {
-    ↓@objc var bar: Any?
-}
-
-
@objcMembers
-class Foo {
-    ↓@objc var bar: Any?
-    ↓@objc var foo: Any?
-    @objc
-    class Bar {
-        @objc
-        var foo: Any?
-    }
-}
-
-
@objc
-extension Foo {
-    ↓@objc
-    var bar: Int {
-        return 0
-    }
-}
-
-
@objc @IBDesignable
-extension Foo {
-    ↓@objc
-    var bar: Int {
-        return 0
-    }
-}
-
-
@objcMembers
-class Foo {
-    @objcMembers
-    class Bar: NSObject {
-        ↓@objc var foo: Any
-    }
-}
-
-
@objc
-extension Foo {
-    ↓@objc
-    private var bar: Int {
-        return 0
-    }
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_optional_initialization.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_optional_initialization.html deleted file mode 100644 index d44191acc..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_optional_initialization.html +++ /dev/null @@ -1,406 +0,0 @@ - - - - redundant_optional_initialization Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Redundant Optional Initialization

- -

Initializing an optional variable with nil is redundant.

- -
    -
  • Identifier: redundant_optional_initialization
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
var myVar: Int?
-
-
-
let myVar: Int? = nil
-
-
-
var myVar: Int? = 0
-
-
-
func foo(bar: Int? = 0) { }
-
-
-
var myVar: Optional<Int>
-
-
-
let myVar: Optional<Int> = nil
-
-
-
var myVar: Optional<Int> = 0
-
-
-
var foo: Int? {
-  if bar != nil { }
-  return 0
-}
-
-
var foo: Int? = {
-  if bar != nil { }
-  return 0
-}()
-
-
lazy var test: Int? = nil
-
-
func funcName() {
-  var myVar: String?
-}
-
-
func funcName() {
-  let myVar: String? = nil
-}
-
-

Triggering Examples

-
var myVar: Int?↓ = nil
-
-
-
var myVar: Optional<Int>↓ = nil
-
-
-
var myVar: Int?↓=nil
-
-
-
var myVar: Optional<Int>↓=nil
-)
-
-
var myVar: String?↓ = nil {
-  didSet { print("didSet") }
-}
-
-
func funcName() {
-    var myVar: String?↓ = nil
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_set_access_control.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_set_access_control.html deleted file mode 100644 index bd79ff1dd..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_set_access_control.html +++ /dev/null @@ -1,377 +0,0 @@ - - - - redundant_set_access_control Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Redundant Set Access Control Rule

- -

Property setter access level shouldn’t be explicit if it’s the same as the variable access level.

- -
    -
  • Identifier: redundant_set_access_control
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
private(set) public var foo: Int
-
-
public let foo: Int
-
-
public var foo: Int
-
-
var foo: Int
-
-
private final class A {
-  private(set) var value: Int
-}
-
-

Triggering Examples

-
↓private(set) private var foo: Int
-
-
↓fileprivate(set) fileprivate var foo: Int
-
-
↓internal(set) internal var foo: Int
-
-
↓public(set) public var foo: Int
-
-
open class Foo {
-  ↓open(set) open var bar: Int
-}
-
-
class A {
-  ↓internal(set) var value: Int
-}
-
-
fileprivate class A {
-  ↓fileprivate(set) var value: Int
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_string_enum_value.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_string_enum_value.html deleted file mode 100644 index d71cf9b96..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_string_enum_value.html +++ /dev/null @@ -1,382 +0,0 @@ - - - - redundant_string_enum_value Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Redundant String Enum Value

- -

String enum values can be omitted when they are equal to the enumcase name.

- -
    -
  • Identifier: redundant_string_enum_value
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
enum Numbers: String {
-  case one
-  case two
-}
-
-
enum Numbers: Int {
-  case one = 1
-  case two = 2
-}
-
-
enum Numbers: String {
-  case one = "ONE"
-  case two = "TWO"
-}
-
-
enum Numbers: String {
-  case one = "ONE"
-  case two = "two"
-}
-
-
enum Numbers: String {
-  case one, two
-}
-
-

Triggering Examples

-
enum Numbers: String {
-  case one = ↓"one"
-  case two = ↓"two"
-}
-
-
enum Numbers: String {
-  case one = ↓"one", two = ↓"two"
-}
-
-
enum Numbers: String {
-  case one, two = ↓"two"
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_type_annotation.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_type_annotation.html deleted file mode 100644 index c5ebc1655..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_type_annotation.html +++ /dev/null @@ -1,392 +0,0 @@ - - - - redundant_type_annotation Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Redundant Type Annotation

- -

Variables should not have redundant type annotation

- -
    -
  • Identifier: redundant_type_annotation
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
var url = URL()
-
-
var url: CustomStringConvertible = URL()
-
-
@IBInspectable var color: UIColor = UIColor.white
-
-
enum Direction {
-    case up
-    case down
-}
-
-var direction: Direction = .up
-
-
enum Direction {
-    case up
-    case down
-}
-
-var direction = Direction.up
-
-

Triggering Examples

-
var url↓:URL=URL()
-
-
var url↓:URL = URL(string: "")
-
-
var url↓: URL = URL()
-
-
let url↓: URL = URL()
-
-
lazy var url↓: URL = URL()
-
-
let alphanumerics↓: CharacterSet = CharacterSet.alphanumerics
-
-
class ViewController: UIViewController {
-  func someMethod() {
-    let myVar↓: Int = Int(5)
-  }
-}
-
-
var isEnabled↓: Bool = true
-
-
enum Direction {
-    case up
-    case down
-}
-
-var direction↓: Direction = Direction.up
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_void_return.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_void_return.html deleted file mode 100644 index b8c395713..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_void_return.html +++ /dev/null @@ -1,400 +0,0 @@ - - - - redundant_void_return Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Redundant Void Return

- -

Returning Void in a function declaration is redundant.

- -
    -
  • Identifier: redundant_void_return
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
func foo() {}
-
-
-
func foo() -> Int {}
-
-
-
func foo() -> Int -> Void {}
-
-
-
func foo() -> VoidResponse
-
-
-
let foo: (Int) -> Void
-
-
-
func foo() -> Int -> () {}
-
-
-
let foo: (Int) -> ()
-
-
-
func foo() -> ()?
-
-
-
func foo() -> ()!
-
-
-
func foo() -> Void?
-
-
-
func foo() -> Void!
-
-
-
struct A {
-    subscript(key: String) {
-        print(key)
-    }
-}
-
-

Triggering Examples

-
func foo()↓ -> Void {}
-
-
-
protocol Foo {
-  func foo()↓ -> Void
-}
-
-
func foo()↓ -> () {}
-
-
-
func foo()↓ -> ( ) {}
-
-
protocol Foo {
-  func foo()↓ -> ()
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/required_deinit.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/required_deinit.html deleted file mode 100644 index 5ee9752ea..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/required_deinit.html +++ /dev/null @@ -1,390 +0,0 @@ - - - - required_deinit Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Required Deinit

- -

Classes should have an explicit deinit method.

- -
    -
  • Identifier: required_deinit
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class Apple {
-    deinit { }
-}
-
-
enum Banana { }
-
-
protocol Cherry { }
-
-
struct Damson { }
-
-
class Outer {
-    deinit { print("Deinit Outer") }
-    class Inner {
-        deinit { print("Deinit Inner") }
-    }
-}
-
-

Triggering Examples

-
↓class Apple { }
-
-
↓class Banana: NSObject, Equatable { }
-
-
↓class Cherry {
-    // deinit { }
-}
-
-
↓class Damson {
-    func deinitialize() { }
-}
-
-
class Outer {
-    func hello() -> String { return "outer" }
-    deinit { }
-    ↓class Inner {
-        func hello() -> String { return "inner" }
-    }
-}
-
-
↓class Outer {
-    func hello() -> String { return "outer" }
-    class Inner {
-        func hello() -> String { return "inner" }
-        deinit { }
-    }
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/required_enum_case.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/required_enum_case.html deleted file mode 100644 index 812fe2b90..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/required_enum_case.html +++ /dev/null @@ -1,388 +0,0 @@ - - - - required_enum_case Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Required Enum Case

- -

Enums conforming to a specified protocol must implement a specific case(s).

- -
    -
  • Identifier: required_enum_case
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: No protocols configured. In config add ‘required_enum_case’ to ‘opt_in_rules’ and config using :
  • -
- -

‘required_enum_case: - {Protocol Name}: - {Case Name}:{warning|error} - {Case Name}:{warning|error}

-

Non Triggering Examples

-
enum MyNetworkResponse: String, NetworkResponsable {
-    case success, error, notConnected
-}
-
-
enum MyNetworkResponse: String, NetworkResponsable {
-    case success, error, notConnected(error: Error)
-}
-
-
enum MyNetworkResponse: String, NetworkResponsable {
-    case success
-    case error
-    case notConnected
-}
-
-
enum MyNetworkResponse: String, NetworkResponsable {
-    case success
-    case error
-    case notConnected(error: Error)
-}
-
-

Triggering Examples

-
enum MyNetworkResponse: String, NetworkResponsable {
-    case success, error
-}
-
-
enum MyNetworkResponse: String, NetworkResponsable {
-    case success, error
-}
-
-
enum MyNetworkResponse: String, NetworkResponsable {
-    case success
-    case error
-}
-
-
enum MyNetworkResponse: String, NetworkResponsable {
-    case success
-    case error
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/return_arrow_whitespace.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/return_arrow_whitespace.html deleted file mode 100644 index b5963cb0f..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/return_arrow_whitespace.html +++ /dev/null @@ -1,389 +0,0 @@ - - - - return_arrow_whitespace Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Returning Whitespace

- -

Return arrow and return type should be separated by a single space or on a separate line.

- -
    -
  • Identifier: return_arrow_whitespace
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
func abc() -> Int {}
-
-
-
func abc() -> [Int] {}
-
-
-
func abc() -> (Int, Int) {}
-
-
-
var abc = {(param: Int) -> Void in }
-
-
-
func abc() ->
-    Int {}
-
-
-
func abc()
-    -> Int {}
-
-
-

Triggering Examples

-
func abc()↓->Int {}
-
-
-
func abc()↓->[Int] {}
-
-
-
func abc()↓->(Int, Int) {}
-
-
-
func abc()↓-> Int {}
-
-
-
func abc()↓ ->Int {}
-
-
-
func abc()↓  ->  Int {}
-
-
-
var abc = {(param: Int)↓ ->Bool in }
-
-
-
var abc = {(param: Int)↓->Bool in }
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/rule-directory.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/rule-directory.html deleted file mode 100644 index 4f593450e..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/rule-directory.html +++ /dev/null @@ -1,547 +0,0 @@ - - - - Rule Directory Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Rule Directory

-

Default Rules

- - -

Opt-In Rules

- - - -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/search.json b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/search.json deleted file mode 100644 index 5b44f81ff..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/search.json +++ /dev/null @@ -1 +0,0 @@ -{"Structs/XcodeReporter.html#/s:18SwiftLintFramework8ReporterP10identifierSSvpZ":{"name":"identifier","parent_name":"XcodeReporter"},"Structs/XcodeReporter.html#/s:18SwiftLintFramework8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","parent_name":"XcodeReporter"},"Structs/XcodeReporter.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"XcodeReporter"},"Structs/XcodeReporter.html#/s:18SwiftLintFramework8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","parent_name":"XcodeReporter"},"Structs/SonarQubeReporter.html#/s:18SwiftLintFramework8ReporterP10identifierSSvpZ":{"name":"identifier","parent_name":"SonarQubeReporter"},"Structs/SonarQubeReporter.html#/s:18SwiftLintFramework8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","parent_name":"SonarQubeReporter"},"Structs/SonarQubeReporter.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"SonarQubeReporter"},"Structs/SonarQubeReporter.html#/s:18SwiftLintFramework8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","parent_name":"SonarQubeReporter"},"Structs/GitLabJUnitReporter.html#/s:18SwiftLintFramework8ReporterP10identifierSSvpZ":{"name":"identifier","parent_name":"GitLabJUnitReporter"},"Structs/GitLabJUnitReporter.html#/s:18SwiftLintFramework8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","parent_name":"GitLabJUnitReporter"},"Structs/GitLabJUnitReporter.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"GitLabJUnitReporter"},"Structs/GitLabJUnitReporter.html#/s:18SwiftLintFramework8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","parent_name":"GitLabJUnitReporter"},"Structs/CodeClimateReporter.html#/s:18SwiftLintFramework8ReporterP10identifierSSvpZ":{"name":"identifier","parent_name":"CodeClimateReporter"},"Structs/CodeClimateReporter.html#/s:18SwiftLintFramework8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","parent_name":"CodeClimateReporter"},"Structs/CodeClimateReporter.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"CodeClimateReporter"},"Structs/CodeClimateReporter.html#/s:18SwiftLintFramework8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","parent_name":"CodeClimateReporter"},"Structs/YamlParser.html#/s:18SwiftLintFramework10YamlParserV5parse_3envSDySSypGSS_SDyS2SGtKFZ":{"name":"parse(_:env:)","abstract":"

Parses the input YAML string as an untyped dictionary.

","parent_name":"YamlParser"},"Structs/Version.html#/s:18SwiftLintFramework7VersionV5valueSSvp":{"name":"value","abstract":"

The string value for this version.

","parent_name":"Version"},"Structs/Version.html#/s:18SwiftLintFramework7VersionV7currentACvpZ":{"name":"current","abstract":"

The current SwiftLint version.

","parent_name":"Version"},"Structs/SwiftVersion.html#/s:SY8RawValueQa":{"name":"RawValue","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:SY8rawValue03RawB0Qzvp":{"name":"rawValue","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:SY8rawValuexSg03RawB0Qz_tcfc":{"name":"init(rawValue:)","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:SL1loiySbx_xtFZ":{"name":"<(_:_:)","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:18SwiftLintFramework0A7VersionV4fiveACvpZ":{"name":"five","abstract":"

Swift 5.0.x - https://swift.org/download/#swift-50

","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:18SwiftLintFramework0A7VersionV10fiveDotOneACvpZ":{"name":"fiveDotOne","abstract":"

Swift 5.1.x - https://swift.org/download/#swift-51

","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:18SwiftLintFramework0A7VersionV10fiveDotTwoACvpZ":{"name":"fiveDotTwo","abstract":"

Swift 5.2.x - https://swift.org/download/#swift-52

","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:18SwiftLintFramework0A7VersionV12fiveDotThreeACvpZ":{"name":"fiveDotThree","abstract":"

Swift 5.3.x - https://swift.org/download/#swift-53

","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:18SwiftLintFramework0A7VersionV11fiveDotFourACvpZ":{"name":"fiveDotFour","abstract":"

Swift 5.4.x - https://swift.org/download/#swift-54

","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:18SwiftLintFramework0A7VersionV11fiveDotFiveACvpZ":{"name":"fiveDotFive","abstract":"

Swift 5.5.x - https://swift.org/download/#swift-55

","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:18SwiftLintFramework0A7VersionV10fiveDotSixACvpZ":{"name":"fiveDotSix","abstract":"

Swift 5.6.x - https://swift.org/download/#swift-56

","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:18SwiftLintFramework0A7VersionV7currentACvpZ":{"name":"current","abstract":"

The current detected Swift compiler version, based on the currently accessible SourceKit version.

","parent_name":"SwiftVersion"},"Structs/SwiftLintSyntaxToken.html#/s:18SwiftLintFramework0aB11SyntaxTokenV5value012SourceKittenC00dE0Vvp":{"name":"value","abstract":"

The raw SyntaxToken obtained by SourceKitten.

","parent_name":"SwiftLintSyntaxToken"},"Structs/SwiftLintSyntaxToken.html#/s:18SwiftLintFramework0aB11SyntaxTokenV4kind012SourceKittenC00D4KindOSgvp":{"name":"kind","abstract":"

The syntax kind associated with is token.

","parent_name":"SwiftLintSyntaxToken"},"Structs/SwiftLintSyntaxToken.html#/s:18SwiftLintFramework0aB11SyntaxTokenV5valueAC012SourceKittenC00dE0V_tcfc":{"name":"init(value:)","abstract":"

Creates a SwiftLintSyntaxToken from the raw SyntaxToken obtained by SourceKitten.

","parent_name":"SwiftLintSyntaxToken"},"Structs/SwiftLintSyntaxToken.html#/s:18SwiftLintFramework0aB11SyntaxTokenV5range012SourceKittenC09ByteRangeVvp":{"name":"range","abstract":"

The byte range in a source file for this token.

","parent_name":"SwiftLintSyntaxToken"},"Structs/SwiftLintSyntaxToken.html#/s:18SwiftLintFramework0aB11SyntaxTokenV6offset012SourceKittenC09ByteCountVvp":{"name":"offset","abstract":"

The starting byte offset in a source file for this token.

","parent_name":"SwiftLintSyntaxToken"},"Structs/SwiftLintSyntaxToken.html#/s:18SwiftLintFramework0aB11SyntaxTokenV6length012SourceKittenC09ByteCountVvp":{"name":"length","abstract":"

The length in bytes for this token.

","parent_name":"SwiftLintSyntaxToken"},"Structs/SwiftLintSyntaxMap.html#/s:18SwiftLintFramework0aB9SyntaxMapV5value012SourceKittenC00dE0Vvp":{"name":"value","abstract":"

The raw SyntaxMap obtained by SourceKitten.

","parent_name":"SwiftLintSyntaxMap"},"Structs/SwiftLintSyntaxMap.html#/s:18SwiftLintFramework0aB9SyntaxMapV6tokensSayAA0abD5TokenVGvp":{"name":"tokens","abstract":"

The SwiftLint-specific syntax tokens for this syntax map.

","parent_name":"SwiftLintSyntaxMap"},"Structs/SwiftLintSyntaxMap.html#/s:18SwiftLintFramework0aB9SyntaxMapV5valueAC012SourceKittenC00dE0V_tcfc":{"name":"init(value:)","abstract":"

Creates a SwiftLintSyntaxMap from the raw SyntaxMap obtained by SourceKitten.

","parent_name":"SwiftLintSyntaxMap"},"Structs/StyleViolation.html#/s:18SwiftLintFramework14StyleViolationV14ruleIdentifierSSvp":{"name":"ruleIdentifier","abstract":"

The identifier of the rule that generated this violation.

","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:18SwiftLintFramework14StyleViolationV15ruleDescriptionSSvp":{"name":"ruleDescription","abstract":"

The description of the rule that generated this violation.

","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:18SwiftLintFramework14StyleViolationV8ruleNameSSvp":{"name":"ruleName","abstract":"

The name of the rule that generated this violation.

","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:18SwiftLintFramework14StyleViolationV8severityAA0E8SeverityOvp":{"name":"severity","abstract":"

The severity of this violation.

","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:18SwiftLintFramework14StyleViolationV8locationAA8LocationVvp":{"name":"location","abstract":"

The location of this violation.

","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:18SwiftLintFramework14StyleViolationV6reasonSSvp":{"name":"reason","abstract":"

The justification for this violation.

","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:18SwiftLintFramework14StyleViolationV11descriptionSSvp":{"name":"description","abstract":"

A printable description for this violation.

","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:18SwiftLintFramework14StyleViolationV15ruleDescription8severity8location6reasonAcA04RuleG0V_AA0E8SeverityOAA8LocationVSSSgtcfc":{"name":"init(ruleDescription:severity:location:reason:)","abstract":"

Creates a StyleViolation by specifying its properties directly.

","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:18SwiftLintFramework14StyleViolationV4with8severityAcA0E8SeverityO_tF":{"name":"with(severity:)","abstract":"

Returns the same violation, but with the severity that is passed in

","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:18SwiftLintFramework14StyleViolationV4with8locationAcA8LocationV_tF":{"name":"with(location:)","abstract":"

Returns the same violation, but with the location that is passed in

","parent_name":"StyleViolation"},"Structs/RuleParameter.html#/s:18SwiftLintFramework13RuleParameterV8severityAA17ViolationSeverityOvp":{"name":"severity","abstract":"

The severity that should be assigned to the violation of this parameter’s value is met.

","parent_name":"RuleParameter"},"Structs/RuleParameter.html#/s:18SwiftLintFramework13RuleParameterV5valuexvp":{"name":"value","abstract":"

The value to configure the rule.

","parent_name":"RuleParameter"},"Structs/RuleParameter.html#/s:18SwiftLintFramework13RuleParameterV8severity5valueACyxGAA17ViolationSeverityO_xtcfc":{"name":"init(severity:value:)","abstract":"

Creates a RuleParameter by specifying its properties directly.

","parent_name":"RuleParameter"},"Structs/RuleList.html#/s:18SwiftLintFramework8RuleListV4listSDySSAA0D0_pXpGvp":{"name":"list","abstract":"

The rules contained in this list.

","parent_name":"RuleList"},"Structs/RuleList.html#/s:18SwiftLintFramework8RuleListV5rulesAcA0D0_pXpd_tcfc":{"name":"init(rules:)","abstract":"

Creates a RuleList by specifying all its rules.

","parent_name":"RuleList"},"Structs/RuleList.html#/s:18SwiftLintFramework8RuleListV5rulesACSayAA0D0_pXpG_tcfc":{"name":"init(rules:)","abstract":"

Creates a RuleList by specifying all its rules.

","parent_name":"RuleList"},"Structs/RuleList.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"RuleList"},"Structs/RuleDescription.html#/s:18SwiftLintFramework15RuleDescriptionV10identifierSSvp":{"name":"identifier","abstract":"

The rule’s unique identifier, to be used in configuration files and SwiftLint commands.","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:18SwiftLintFramework15RuleDescriptionV4nameSSvp":{"name":"name","abstract":"

The rule’s human-readable name. Should be short, descriptive and formatted in Title Case. May contain spaces.

","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:18SwiftLintFramework15RuleDescriptionV11descriptionSSvp":{"name":"description","abstract":"

The rule’s verbose description. Should read as a sentence or short paragraph. Good things to include are an","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:18SwiftLintFramework15RuleDescriptionV4kindAA0D4KindOvp":{"name":"kind","abstract":"

The RuleKind that best categorizes this rule.

","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:18SwiftLintFramework15RuleDescriptionV21nonTriggeringExamplesSayAA7ExampleVGvp":{"name":"nonTriggeringExamples","abstract":"

Swift source examples that do not trigger a violation for this rule. Used for documentation purposes to inform","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:18SwiftLintFramework15RuleDescriptionV18triggeringExamplesSayAA7ExampleVGvp":{"name":"triggeringExamples","abstract":"

Swift source examples that do trigger one or more violations for this rule. Used for documentation purposes to","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:18SwiftLintFramework15RuleDescriptionV11correctionsSDyAA7ExampleVAFGvp":{"name":"corrections","abstract":"

Pairs of Swift source examples, where keys are examples that trigger violations for this rule, and the values","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:18SwiftLintFramework15RuleDescriptionV17deprecatedAliasesShySSGvp":{"name":"deprecatedAliases","abstract":"

Any previous iteration of the rule’s identifier that was previously shipped with SwiftLint.

","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:18SwiftLintFramework15RuleDescriptionV03minA7VersionAA0aG0Vvp":{"name":"minSwiftVersion","abstract":"

The oldest version of the Swift compiler supported by this rule.

","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:18SwiftLintFramework15RuleDescriptionV18requiresFileOnDiskSbvp":{"name":"requiresFileOnDisk","abstract":"

Whether or not this rule can only be executed on a file physically on-disk. Typically necessary for rules","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:18SwiftLintFramework15RuleDescriptionV07consoleE0SSvp":{"name":"consoleDescription","abstract":"

The console-printable string for this description.

","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:18SwiftLintFramework15RuleDescriptionV14allIdentifiersSaySSGvp":{"name":"allIdentifiers","abstract":"

All identifiers that have been used to uniquely identify this rule in past and current SwiftLint versions.

","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:18SwiftLintFramework15RuleDescriptionV10identifier4name11description4kind03minA7Version21nonTriggeringExamples010triggeringN011corrections17deprecatedAliases18requiresFileOnDiskACSS_S2SAA0D4KindOAA0aK0VSayAA7ExampleVGATSDyA2SGShySSGSbtcfc":{"name":"init(identifier:name:description:kind:minSwiftVersion:nonTriggeringExamples:triggeringExamples:corrections:deprecatedAliases:requiresFileOnDisk:)","abstract":"

Creates a RuleDescription by specifying all its properties directly.

","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"RuleDescription"},"Structs/Region.html#/s:18SwiftLintFramework6RegionV5startAA8LocationVvp":{"name":"start","abstract":"

The location describing the start of the region. All locations that are less than this value","parent_name":"Region"},"Structs/Region.html#/s:18SwiftLintFramework6RegionV3endAA8LocationVvp":{"name":"end","abstract":"

The location describing the end of the region. All locations that are greater than this value","parent_name":"Region"},"Structs/Region.html#/s:18SwiftLintFramework6RegionV23disabledRuleIdentifiersShyAA0F10IdentifierOGvp":{"name":"disabledRuleIdentifiers","abstract":"

All SwiftLint rule identifiers that are disabled in this region.

","parent_name":"Region"},"Structs/Region.html#/s:18SwiftLintFramework6RegionV5start3end23disabledRuleIdentifiersAcA8LocationV_AHShyAA0H10IdentifierOGtcfc":{"name":"init(start:end:disabledRuleIdentifiers:)","abstract":"

Creates a Region by setting explicit values for all its properties.

","parent_name":"Region"},"Structs/Region.html#/s:18SwiftLintFramework6RegionV8containsySbAA8LocationVF":{"name":"contains(_:)","abstract":"

Whether the specific location is contained in this region.

","parent_name":"Region"},"Structs/Region.html#/s:18SwiftLintFramework6RegionV13isRuleEnabledySbAA0F0_pF":{"name":"isRuleEnabled(_:)","abstract":"

Whether the specified rule is enabled in this region.

","parent_name":"Region"},"Structs/Region.html#/s:18SwiftLintFramework6RegionV14isRuleDisabledySbAA0F0_pF":{"name":"isRuleDisabled(_:)","abstract":"

Whether the specified rule is disabled in this region.

","parent_name":"Region"},"Structs/Region.html#/s:18SwiftLintFramework6RegionV26deprecatedAliasesDisabling4ruleShySSGAA4Rule_p_tF":{"name":"deprecatedAliasesDisabling(rule:)","abstract":"

Returns the deprecated rule aliases that are disabling the specified rule in this region.","parent_name":"Region"},"Structs/Location.html#/s:18SwiftLintFramework8LocationV4fileSSSgvp":{"name":"file","abstract":"

The file path on disk for this location.

","parent_name":"Location"},"Structs/Location.html#/s:18SwiftLintFramework8LocationV4lineSiSgvp":{"name":"line","abstract":"

The line offset in the file for this location. 1-indexed.

","parent_name":"Location"},"Structs/Location.html#/s:18SwiftLintFramework8LocationV9characterSiSgvp":{"name":"character","abstract":"

The character offset in the file for this location. 1-indexed.

","parent_name":"Location"},"Structs/Location.html#/s:18SwiftLintFramework8LocationV11descriptionSSvp":{"name":"description","abstract":"

A lossless printable description of this location.

","parent_name":"Location"},"Structs/Location.html#/s:18SwiftLintFramework8LocationV12relativeFileSSSgvp":{"name":"relativeFile","abstract":"

The file path for this location relative to the current working directory.

","parent_name":"Location"},"Structs/Location.html#/s:18SwiftLintFramework8LocationV4file4line9characterACSSSg_SiSgAHtcfc":{"name":"init(file:line:character:)","abstract":"

Creates a Location by specifying its properties directly.

","parent_name":"Location"},"Structs/Location.html#/s:18SwiftLintFramework8LocationV4file10byteOffsetAcA0aB4FileC_012SourceKittenC09ByteCountVtcfc":{"name":"init(file:byteOffset:)","abstract":"

Creates a Location based on a SwiftLintFile and a byte-offset into the file.","parent_name":"Location"},"Structs/Location.html#/s:18SwiftLintFramework8LocationV4file15characterOffsetAcA0aB4FileC_Sitcfc":{"name":"init(file:characterOffset:)","abstract":"

Creates a Location based on a SwiftLintFile and a UTF8 character-offset into the file.","parent_name":"Location"},"Structs/Location.html#/s:SL1loiySbx_xtFZ":{"name":"<(_:_:)","parent_name":"Location"},"Structs/CollectedLinter.html#/s:18SwiftLintFramework15CollectedLinterV4fileAA0aB4FileCvp":{"name":"file","abstract":"

The file to lint with this linter.

","parent_name":"CollectedLinter"},"Structs/CollectedLinter.html#/s:18SwiftLintFramework15CollectedLinterV15styleViolations5usingSayAA14StyleViolationVGAA11RuleStorageC_tF":{"name":"styleViolations(using:)","abstract":"

Computes or retrieves style violations.

","parent_name":"CollectedLinter"},"Structs/CollectedLinter.html#/s:18SwiftLintFramework15CollectedLinterV27styleViolationsAndRuleTimes5usingSayAA14StyleViolationVG_SaySS2id_Sd4timetGtAA0I7StorageC_tF":{"name":"styleViolationsAndRuleTimes(using:)","abstract":"

Computes or retrieves style violations and the time spent executing each rule.

","parent_name":"CollectedLinter"},"Structs/CollectedLinter.html#/s:18SwiftLintFramework15CollectedLinterV7correct5usingSayAA10CorrectionVGAA11RuleStorageC_tF":{"name":"correct(using:)","abstract":"

Applies corrections for all rules to this file, returning performed corrections.

","parent_name":"CollectedLinter"},"Structs/CollectedLinter.html#/s:18SwiftLintFramework15CollectedLinterV6format7useTabs11indentWidthySb_SitF":{"name":"format(useTabs:indentWidth:)","abstract":"

Formats the file associated with this linter.

","parent_name":"CollectedLinter"},"Structs/Linter.html#/s:18SwiftLintFramework6LinterV4fileAA0aB4FileCvp":{"name":"file","abstract":"

The file to lint with this linter.

","parent_name":"Linter"},"Structs/Linter.html#/s:18SwiftLintFramework6LinterV12isCollectingSbvp":{"name":"isCollecting","abstract":"

Whether or not this linter will be used to collect information from several files.

","parent_name":"Linter"},"Structs/Linter.html#/s:18SwiftLintFramework6LinterV4file13configuration5cache17compilerArgumentsAcA0aB4FileC_AA13ConfigurationVAA0D5CacheCSgSaySSGtcfc":{"name":"init(file:configuration:cache:compilerArguments:)","abstract":"

Creates a Linter by specifying its properties directly.

","parent_name":"Linter"},"Structs/Linter.html#/s:18SwiftLintFramework6LinterV7collect4intoAA09CollectedD0VAA11RuleStorageC_tF":{"name":"collect(into:)","abstract":"

Returns a linter capable of checking for violations after running each rule’s collection step.

","parent_name":"Linter"},"Structs/Example.html#/s:18SwiftLintFramework7ExampleV4codeSSvp":{"name":"code","abstract":"

The contents of the example

","parent_name":"Example"},"Structs/Example.html#/s:18SwiftLintFramework7ExampleV13configurationypSgvp":{"name":"configuration","abstract":"

The untyped configuration to apply to the rule, if deviating from the default configuration.","parent_name":"Example"},"Structs/Example.html#/s:18SwiftLintFramework7ExampleV20testMultiByteOffsetsSbvp":{"name":"testMultiByteOffsets","abstract":"

Whether the example should be tested by prepending multibyte grapheme clusters

","parent_name":"Example"},"Structs/Example.html#/s:18SwiftLintFramework7ExampleV11testOnLinuxSbvp":{"name":"testOnLinux","abstract":"

Whether the example should be tested on Linux

","parent_name":"Example"},"Structs/Example.html#/s:18SwiftLintFramework7ExampleV4files12StaticStringVvp":{"name":"file","abstract":"

The path to the file where the example was created

","parent_name":"Example"},"Structs/Example.html#/s:18SwiftLintFramework7ExampleV4lineSuvp":{"name":"line","abstract":"

The line in the file where the example was created

","parent_name":"Example"},"Structs/Example.html#/s:18SwiftLintFramework7ExampleV_13configuration20testMultiByteOffsets0F7OnLinux4file4line24excludeFromDocumentationACSS_ypSgS2bs12StaticStringVSuSbtcfc":{"name":"init(_:configuration:testMultiByteOffsets:testOnLinux:file:line:excludeFromDocumentation:)","abstract":"

Create a new Example with the specified code, file, and line.

","parent_name":"Example"},"Structs/Example.html#/s:18SwiftLintFramework7ExampleV4with4codeACSS_tF":{"name":"with(code:)","abstract":"

Returns the same example, but with the code that is passed in

","parent_name":"Example"},"Structs/Example.html#/s:18SwiftLintFramework7ExampleV24removingViolationMarkersACyF":{"name":"removingViolationMarkers()","abstract":"

Returns a copy of the Example with all instances of the “↓” character removed.

","parent_name":"Example"},"Structs/Example.html#/s:18SwiftLintFramework7ExampleV7focusedACyF":{"name":"focused()","abstract":"

Makes the current example focused.

","parent_name":"Example"},"Structs/Example.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"Example"},"Structs/Example.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"Example"},"Structs/Example.html#/s:SL1loiySbx_xtFZ":{"name":"<(_:_:)","parent_name":"Example"},"Structs/Correction.html#/s:18SwiftLintFramework10CorrectionV15ruleDescriptionAA04RuleF0Vvp":{"name":"ruleDescription","abstract":"

The description of the rule for which this correction was applied.

","parent_name":"Correction"},"Structs/Correction.html#/s:18SwiftLintFramework10CorrectionV8locationAA8LocationVvp":{"name":"location","abstract":"

The location of the original violation that was corrected.

","parent_name":"Correction"},"Structs/Correction.html#/s:18SwiftLintFramework10CorrectionV18consoleDescriptionSSvp":{"name":"consoleDescription","abstract":"

The console-printable description for this correction.

","parent_name":"Correction"},"Structs/Command/Modifier.html#/s:18SwiftLintFramework7CommandV8ModifierO8previousyA2EmF":{"name":"previous","abstract":"

The command should only apply to the line preceding its definition.

","parent_name":"Modifier"},"Structs/Command/Modifier.html#/s:18SwiftLintFramework7CommandV8ModifierO4thisyA2EmF":{"name":"this","abstract":"

The command should only apply to the same line as its definition.

","parent_name":"Modifier"},"Structs/Command/Modifier.html#/s:18SwiftLintFramework7CommandV8ModifierO4nextyA2EmF":{"name":"next","abstract":"

The command should only apply to the line following its definition.

","parent_name":"Modifier"},"Structs/Command/Action.html#/s:18SwiftLintFramework7CommandV6ActionO6enableyA2EmF":{"name":"enable","abstract":"

The rule(s) associated with this command should be enabled by the SwiftLint engine.

","parent_name":"Action"},"Structs/Command/Action.html#/s:18SwiftLintFramework7CommandV6ActionO7disableyA2EmF":{"name":"disable","abstract":"

The rule(s) associated with this command should be disabled by the SwiftLint engine.

","parent_name":"Action"},"Structs/Command/Action.html":{"name":"Action","abstract":"

The action (verb) that SwiftLint should perform when interpreting this command.

","parent_name":"Command"},"Structs/Command/Modifier.html":{"name":"Modifier","abstract":"

The modifier for a command, used to modify its scope.

","parent_name":"Command"},"Structs/Command.html#/s:18SwiftLintFramework7CommandV6action15ruleIdentifiers4line9character8modifier15trailingCommentA2C6ActionO_ShyAA14RuleIdentifierOGS2iSgAC8ModifierOSgSSSgtcfc":{"name":"init(action:ruleIdentifiers:line:character:modifier:trailingComment:)","abstract":"

Creates a command based on the specified parameters.

","parent_name":"Command"},"Structs/Command.html#/s:18SwiftLintFramework7CommandV12actionString4line9characterACSgSS_S2itcfc":{"name":"init(actionString:line:character:)","abstract":"

Creates a command based on the specified parameters.

","parent_name":"Command"},"Structs/SourceKittenDictionary.html#/s:18SwiftLintFramework22SourceKittenDictionaryV5valueSDySS0deC00D16KitRepresentable_pGvp":{"name":"value","abstract":"

The underlying SourceKitten dictionary.

","parent_name":"SourceKittenDictionary"},"Structs/SourceKittenDictionary.html#/s:18SwiftLintFramework22SourceKittenDictionaryV12substructureSayACGvp":{"name":"substructure","abstract":"

The cached substructure for this dictionary. Empty if there is no substructure.

","parent_name":"SourceKittenDictionary"},"Structs/SourceKittenDictionary.html#/s:18SwiftLintFramework22SourceKittenDictionaryV14expressionKindAA0a10ExpressionH0OSgvp":{"name":"expressionKind","abstract":"

The kind of Swift expression represented by this dictionary, if it is an expression.

","parent_name":"SourceKittenDictionary"},"Structs/SourceKittenDictionary.html#/s:18SwiftLintFramework22SourceKittenDictionaryV15declarationKind0deC00a11DeclarationH0OSgvp":{"name":"declarationKind","abstract":"

The kind of Swift declaration represented by this dictionary, if it is a declaration.

","parent_name":"SourceKittenDictionary"},"Structs/SourceKittenDictionary.html#/s:18SwiftLintFramework22SourceKittenDictionaryV13statementKind0deC009StatementH0OSgvp":{"name":"statementKind","abstract":"

The kind of Swift statement represented by this dictionary, if it is a statement.

","parent_name":"SourceKittenDictionary"},"Structs/SourceKittenDictionary.html#/s:18SwiftLintFramework22SourceKittenDictionaryV13accessibilityAA18AccessControlLevelOSgvp":{"name":"accessibility","abstract":"

The accessibility level for this dictionary, if it is a declaration.

","parent_name":"SourceKittenDictionary"},"Structs/Configuration/RulesMode.html#/s:18SwiftLintFramework13ConfigurationV9RulesModeO7defaultyAEShySSG_AGtcAEmF":{"name":"default(disabled:optIn:)","abstract":"

The default rules mode, which will enable all rules that aren’t defined as being opt-in","parent_name":"RulesMode"},"Structs/Configuration/RulesMode.html#/s:18SwiftLintFramework13ConfigurationV9RulesModeO4onlyyAEShySSGcAEmF":{"name":"only(_:)","abstract":"

Only enable the rules explicitly listed.

","parent_name":"RulesMode"},"Structs/Configuration/RulesMode.html#/s:18SwiftLintFramework13ConfigurationV9RulesModeO10allEnabledyA2EmF":{"name":"allEnabled","abstract":"

Enable all available rules.

","parent_name":"RulesMode"},"Structs/Configuration/IndentationStyle.html#/s:18SwiftLintFramework13ConfigurationV16IndentationStyleO4tabsyA2EmF":{"name":"tabs","abstract":"

Swift source code should be indented using tabs.

","parent_name":"IndentationStyle"},"Structs/Configuration/IndentationStyle.html#/s:18SwiftLintFramework13ConfigurationV16IndentationStyleO6spacesyAESi_tcAEmF":{"name":"spaces(count:)","abstract":"

Swift source code should be indented using spaces with count spaces per indentation level.

","parent_name":"IndentationStyle"},"Structs/Configuration/IndentationStyle.html#/s:18SwiftLintFramework13ConfigurationV16IndentationStyleO7defaultAEvpZ":{"name":"default","abstract":"

The default indentation style if none is explicitly provided.

","parent_name":"IndentationStyle"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV7defaultACvpZ":{"name":"default","abstract":"

The default Configuration resulting from an empty configuration file.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV15defaultFileNameSSvpZ":{"name":"defaultFileName","abstract":"

The default file name to look for user-defined configurations.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV13includedPathsSaySSGvp":{"name":"includedPaths","abstract":"

The paths that should be included when linting

","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV13excludedPathsSaySSGvp":{"name":"excludedPaths","abstract":"

The paths that should be excluded when linting

","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV11indentationAC16IndentationStyleOvp":{"name":"indentation","abstract":"

The style to use when indenting Swift source code.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV16warningThresholdSiSgvp":{"name":"warningThreshold","abstract":"

The threshold for the number of warnings to tolerate before treating the lint as having failed.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV8reporterSSvp":{"name":"reporter","abstract":"

The identifier for the Reporter to use to report style violations.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV9cachePathSSSgvp":{"name":"cachePath","abstract":"

The location of the persisted cache to use with this configuration.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV22allowZeroLintableFilesSbvp":{"name":"allowZeroLintableFiles","abstract":"

Allow or disallow SwiftLint to exit successfully when passed only ignored or unlintable files.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV013basedOnCustomD5FilesSbvp":{"name":"basedOnCustomConfigurationFiles","abstract":"

This value is true iff the --config parameter was used to specify (a) configuration file(s)","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV5rulesSayAA4Rule_pGvp":{"name":"rules","abstract":"

All rules enabled in this configuration

","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV13rootDirectorySSvp":{"name":"rootDirectory","abstract":"

The root directory is the directory that included & excluded paths relate to.","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV9rulesModeAC05RulesF0Ovp":{"name":"rulesMode","abstract":"

The rules mode used for this configuration.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV18configurationFiles14enableAllRules9cachePath27ignoreParentAndChildConfigs20mockedNetworkResults25useDefaultConfigOnFailureACSaySSG_SbSSSgSbSDyS2SGSbSgtcfc":{"name":"init(configurationFiles:enableAllRules:cachePath:ignoreParentAndChildConfigs:mockedNetworkResults:useDefaultConfigOnFailure:)","abstract":"

Creates a Configuration with convenience parameters.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV31withPrecomputedCacheDescriptionACyF":{"name":"withPrecomputedCacheDescription()","abstract":"

Returns a copy of the current Configuration with its computedCacheDescription property set to the value of","parent_name":"Configuration"},"Structs/Configuration/IndentationStyle.html":{"name":"IndentationStyle","abstract":"

The style of indentation used in a Swift project.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV13lintableFiles6inPath12forceExclude15excludeByPrefixSayAA0aB4FileCGSS_S2btF":{"name":"lintableFiles(inPath:forceExclude:excludeByPrefix:)","abstract":"

Returns the files that can be linted by SwiftLint in the specified parent path.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV19filterExcludedPaths11fileManager2inSaySSGAA012LintableFileI0_p_AGdtF":{"name":"filterExcludedPaths(fileManager:in:)","abstract":"

Returns an array of file paths after removing the excluded paths as defined by this configuration.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV27filterExcludedPathsByPrefix2inSaySSGAFd_tF":{"name":"filterExcludedPathsByPrefix(in:)","abstract":"

Returns the file paths that are excluded by this configuration using filtering by absolute path prefix.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV13configuration3forAcA0aB4FileC_tF":{"name":"configuration(for:)","abstract":"

Returns a new configuration that applies to the specified file by merging the current configuration with any","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV4dict8ruleList14enableAllRules9cachePathACSDySSypG_AA04RuleG0VSbSSSgtKcfc":{"name":"init(dict:ruleList:enableAllRules:cachePath:)","abstract":"

Creates a Configuration value based on the specified parameters.

","parent_name":"Configuration"},"Structs/Configuration/RulesMode.html":{"name":"RulesMode","abstract":"

Represents how a Configuration object can be configured with regards to rules.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"Configuration"},"Structs/Configuration.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"Configuration"},"Structs/Configuration.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"Configuration"},"Structs/RuleListDocumentation.html#/s:18SwiftLintFramework21RuleListDocumentationVyAcA0dE0Vcfc":{"name":"init(_:)","abstract":"

Creates a RuleListDocumentation instance from a RuleList.

","parent_name":"RuleListDocumentation"},"Structs/RuleListDocumentation.html#/s:18SwiftLintFramework21RuleListDocumentationV5write2toy10Foundation3URLV_tKF":{"name":"write(to:)","abstract":"

Write the rule list documentation as markdown files to the specified directory.

","parent_name":"RuleListDocumentation"},"Structs/RuleListDocumentation.html":{"name":"RuleListDocumentation","abstract":"

User-facing documentation for a SwiftLint RuleList.

"},"Structs/Configuration.html":{"name":"Configuration","abstract":"

The configuration struct for SwiftLint. User-defined in the .swiftlint.yml file, drives the behavior of SwiftLint.

"},"Structs/SourceKittenDictionary.html":{"name":"SourceKittenDictionary","abstract":"

A collection of keys and values as parsed out of SourceKit, with many conveniences for accessing SwiftLint-specific"},"Structs/Command.html":{"name":"Command","abstract":"

A SwiftLint-interpretable command to modify SwiftLint’s behavior embedded as comments in source code.

"},"Structs/Correction.html":{"name":"Correction","abstract":"

A value describing a SwiftLint violation that was corrected.

"},"Structs/Example.html":{"name":"Example","abstract":"

Captures code and context information for an example of a triggering or"},"Structs/Linter.html":{"name":"Linter","abstract":"

Represents a file that can be linted for style violations and corrections after being collected.

"},"Structs/CollectedLinter.html":{"name":"CollectedLinter","abstract":"

Represents a file that can compute style violations and corrections for a list of rules.

"},"Structs/Location.html":{"name":"Location","abstract":"

The placement of a segment of Swift in a collection of source files.

"},"Structs/Region.html":{"name":"Region","abstract":"

A contiguous region of Swift source code.

"},"Structs/RuleDescription.html":{"name":"RuleDescription","abstract":"

A detailed description for a SwiftLint rule. Used for both documentation and testing purposes.

"},"Structs/RuleList.html":{"name":"RuleList","abstract":"

A list of available SwiftLint rules.

"},"Structs/RuleParameter.html":{"name":"RuleParameter","abstract":"

A configuration parameter for rules.

"},"Structs/StyleViolation.html":{"name":"StyleViolation","abstract":"

A value describing an instance of Swift source code that is considered invalid by a SwiftLint rule.

"},"Structs/SwiftLintSyntaxMap.html":{"name":"SwiftLintSyntaxMap","abstract":"

Represents a Swift file’s syntax information.

"},"Structs/SwiftLintSyntaxToken.html":{"name":"SwiftLintSyntaxToken","abstract":"

A SwiftLint-aware Swift syntax token.

"},"Structs/SwiftVersion.html":{"name":"SwiftVersion","abstract":"

A value describing the version of the Swift compiler.

"},"Structs/Version.html":{"name":"Version","abstract":"

A type describing the SwiftLint version.

"},"Structs/YamlParser.html":{"name":"YamlParser","abstract":"

An interface for parsing YAML.

"},"Structs/CodeClimateReporter.html":{"name":"CodeClimateReporter","abstract":"

Reports violations as a JSON array in Code Climate format.

"},"Structs/GitLabJUnitReporter.html":{"name":"GitLabJUnitReporter","abstract":"

Reports violations as JUnit XML supported by GitLab.

"},"Structs/SonarQubeReporter.html":{"name":"SonarQubeReporter","abstract":"

Reports violations in SonarQube import format.

"},"Structs/XcodeReporter.html":{"name":"XcodeReporter","abstract":"

Reports violations in the format Xcode uses to display in the IDE. (default)

"},"Protocols/RuleConfiguration.html#/s:18SwiftLintFramework17RuleConfigurationP18consoleDescriptionSSvp":{"name":"consoleDescription","abstract":"

A human-readable description for this configuration and its applied values.

","parent_name":"RuleConfiguration"},"Protocols/RuleConfiguration.html#/s:18SwiftLintFramework17RuleConfigurationP5apply13configurationyyp_tKF":{"name":"apply(configuration:)","abstract":"

Apply an untyped configuration to the current value.

","parent_name":"RuleConfiguration"},"Protocols/RuleConfiguration.html#/s:18SwiftLintFramework17RuleConfigurationP9isEqualToySbAaB_pF":{"name":"isEqualTo(_:)","abstract":"

Whether the specified configuration is equivalent to the current value.

","parent_name":"RuleConfiguration"},"Protocols/CollectingCorrectableRule.html#/s:18SwiftLintFramework25CollectingCorrectableRuleP7correct4file13collectedInfo17compilerArgumentsSayAA10CorrectionVGAA0aB4FileC_SDyAL0nJ0QzGSaySSGtF":{"name":"correct(file:collectedInfo:compilerArguments:)","abstract":"

Attempts to correct the violations to this rule in the specified file after collecting file info for all files","parent_name":"CollectingCorrectableRule"},"Protocols/CollectingCorrectableRule.html#/s:18SwiftLintFramework25CollectingCorrectableRuleP7correct4file13collectedInfoSayAA10CorrectionVGAA0aB4FileC_SDyAK0lJ0QzGtF":{"name":"correct(file:collectedInfo:)","abstract":"

Attempts to correct the violations to this rule in the specified file after collecting file info for all files","parent_name":"CollectingCorrectableRule"},"Protocols/CollectingCorrectableRule.html#/s:18SwiftLintFramework15CorrectableRuleP7correct4file5using17compilerArgumentsSayAA10CorrectionVGAA0aB4FileC_AA0E7StorageCSaySSGtF":{"name":"correct(file:using:compilerArguments:)","parent_name":"CollectingCorrectableRule"},"Protocols/CollectingCorrectableRule.html#/s:18SwiftLintFramework15CorrectableRuleP7correct4fileSayAA10CorrectionVGAA0aB4FileC_tF":{"name":"correct(file:)","parent_name":"CollectingCorrectableRule"},"Protocols/CollectingCorrectableRule.html#/s:18SwiftLintFramework15CorrectableRuleP7correct4file17compilerArgumentsSayAA10CorrectionVGAA0aB4FileC_SaySSGtF":{"name":"correct(file:compilerArguments:)","parent_name":"CollectingCorrectableRule"},"Protocols/CollectingRule.html#/s:18SwiftLintFramework14CollectingRuleP8FileInfoQa":{"name":"FileInfo","abstract":"

The kind of information to collect for each file being linted for this rule.

","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:18SwiftLintFramework14CollectingRuleP11collectInfo3for17compilerArguments04FileG0QzAA0abK0C_SaySSGtF":{"name":"collectInfo(for:compilerArguments:)","abstract":"

Collects information for the specified file, to be analyzed by a CollectedLinter.

","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:18SwiftLintFramework14CollectingRuleP11collectInfo3for04FileG0QzAA0abI0C_tF":{"name":"collectInfo(for:)","abstract":"

Collects information for the specified file, to be analyzed by a CollectedLinter.

","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:18SwiftLintFramework14CollectingRuleP8validate4file13collectedInfo17compilerArgumentsSayAA14StyleViolationVGAA0aB4FileC_SDyAL0nI0QzGSaySSGtF":{"name":"validate(file:collectedInfo:compilerArguments:)","abstract":"

Executes the rule on a file after collecting file info for all files and returns any violations to the rule’s","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:18SwiftLintFramework14CollectingRuleP8validate4file13collectedInfoSayAA14StyleViolationVGAA0aB4FileC_SDyAK0lI0QzGtF":{"name":"validate(file:collectedInfo:)","abstract":"

Executes the rule on a file after collecting file info for all files and returns any violations to the rule’s","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:18SwiftLintFramework4RuleP11collectInfo3for4into17compilerArgumentsyAA0aB4FileC_AA0D7StorageCSaySSGtF":{"name":"collectInfo(for:into:compilerArguments:)","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:18SwiftLintFramework4RuleP8validate4file5using17compilerArgumentsSayAA14StyleViolationVGAA0aB4FileC_AA0D7StorageCSaySSGtF":{"name":"validate(file:using:compilerArguments:)","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:18SwiftLintFramework4RuleP8validate4fileSayAA14StyleViolationVGAA0aB4FileC_tF":{"name":"validate(file:)","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:18SwiftLintFramework4RuleP8validate4file17compilerArgumentsSayAA14StyleViolationVGAA0aB4FileC_SaySSGtF":{"name":"validate(file:compilerArguments:)","parent_name":"CollectingRule"},"Protocols/AnalyzerRule.html#/s:18SwiftLintFramework4RuleP8validate4fileSayAA14StyleViolationVGAA0aB4FileC_tF":{"name":"validate(file:)","parent_name":"AnalyzerRule"},"Protocols/SubstitutionCorrectableASTRule.html#/s:18SwiftLintFramework30SubstitutionCorrectableASTRuleP15violationRanges2in4kind10dictionarySaySo8_NSRangeVGAA0aB4FileC_8KindTypeQzAA22SourceKittenDictionaryVtF":{"name":"violationRanges(in:kind:dictionary:)","abstract":"

Returns the NSString-based NSRanges to be replaced in the specified file.

","parent_name":"SubstitutionCorrectableASTRule"},"Protocols/SubstitutionCorrectableASTRule.html#/s:18SwiftLintFramework27SubstitutionCorrectableRuleP15violationRanges2inSaySo8_NSRangeVGAA0aB4FileC_tF":{"name":"violationRanges(in:)","parent_name":"SubstitutionCorrectableASTRule"},"Protocols/SubstitutionCorrectableRule.html#/s:18SwiftLintFramework27SubstitutionCorrectableRuleP15violationRanges2inSaySo8_NSRangeVGAA0aB4FileC_tF":{"name":"violationRanges(in:)","abstract":"

Returns the NSString-based NSRanges to be replaced in the specified file.

","parent_name":"SubstitutionCorrectableRule"},"Protocols/SubstitutionCorrectableRule.html#/s:18SwiftLintFramework27SubstitutionCorrectableRuleP12substitution3for2inSo8_NSRangeV_SStSgAH_AA0aB4FileCtF":{"name":"substitution(for:in:)","abstract":"

Returns the substitution to apply for the given range.

","parent_name":"SubstitutionCorrectableRule"},"Protocols/SubstitutionCorrectableRule.html#/s:18SwiftLintFramework15CorrectableRuleP7correct4fileSayAA10CorrectionVGAA0aB4FileC_tF":{"name":"correct(file:)","parent_name":"SubstitutionCorrectableRule"},"Protocols/CorrectableRule.html#/s:18SwiftLintFramework15CorrectableRuleP7correct4file17compilerArgumentsSayAA10CorrectionVGAA0aB4FileC_SaySSGtF":{"name":"correct(file:compilerArguments:)","abstract":"

Attempts to correct the violations to this rule in the specified file.

","parent_name":"CorrectableRule"},"Protocols/CorrectableRule.html#/s:18SwiftLintFramework15CorrectableRuleP7correct4fileSayAA10CorrectionVGAA0aB4FileC_tF":{"name":"correct(file:)","abstract":"

Attempts to correct the violations to this rule in the specified file.

","parent_name":"CorrectableRule"},"Protocols/CorrectableRule.html#/s:18SwiftLintFramework15CorrectableRuleP7correct4file5using17compilerArgumentsSayAA10CorrectionVGAA0aB4FileC_AA0E7StorageCSaySSGtF":{"name":"correct(file:using:compilerArguments:)","abstract":"

Attempts to correct the violations to this rule in the specified file after collecting file info for all files","parent_name":"CorrectableRule"},"Protocols/ConfigurationProviderRule.html#/s:18SwiftLintFramework25ConfigurationProviderRuleP0D4TypeQa":{"name":"ConfigurationType","abstract":"

The type of configuration used to configure this rule.

","parent_name":"ConfigurationProviderRule"},"Protocols/ConfigurationProviderRule.html#/s:18SwiftLintFramework25ConfigurationProviderRuleP13configuration0D4TypeQzvp":{"name":"configuration","abstract":"

This rule’s configuration.

","parent_name":"ConfigurationProviderRule"},"Protocols/ConfigurationProviderRule.html#/s:18SwiftLintFramework4RuleP13configurationxyp_tKcfc":{"name":"init(configuration:)","parent_name":"ConfigurationProviderRule"},"Protocols/ConfigurationProviderRule.html#/s:18SwiftLintFramework4RuleP9isEqualToySbAaB_pF":{"name":"isEqualTo(_:)","parent_name":"ConfigurationProviderRule"},"Protocols/ConfigurationProviderRule.html#/s:18SwiftLintFramework4RuleP24configurationDescriptionSSvp":{"name":"configurationDescription","parent_name":"ConfigurationProviderRule"},"Protocols/Rule.html#/s:18SwiftLintFramework4RuleP11descriptionAA0D11DescriptionVvpZ":{"name":"description","abstract":"

A verbose description of many of this rule’s properties.

","parent_name":"Rule"},"Protocols/Rule.html#/s:18SwiftLintFramework4RuleP24configurationDescriptionSSvp":{"name":"configurationDescription","abstract":"

A description of how this rule has been configured to run.

","parent_name":"Rule"},"Protocols/Rule.html#/s:18SwiftLintFramework4RulePxycfc":{"name":"init()","abstract":"

A default initializer for rules. All rules need to be trivially initializable.

","parent_name":"Rule"},"Protocols/Rule.html#/s:18SwiftLintFramework4RuleP13configurationxyp_tKcfc":{"name":"init(configuration:)","abstract":"

Creates a rule by applying its configuration.

","parent_name":"Rule"},"Protocols/Rule.html#/s:18SwiftLintFramework4RuleP8validate4file17compilerArgumentsSayAA14StyleViolationVGAA0aB4FileC_SaySSGtF":{"name":"validate(file:compilerArguments:)","abstract":"

Executes the rule on a file and returns any violations to the rule’s expectations.

","parent_name":"Rule"},"Protocols/Rule.html#/s:18SwiftLintFramework4RuleP8validate4fileSayAA14StyleViolationVGAA0aB4FileC_tF":{"name":"validate(file:)","abstract":"

Executes the rule on a file and returns any violations to the rule’s expectations.

","parent_name":"Rule"},"Protocols/Rule.html#/s:18SwiftLintFramework4RuleP9isEqualToySbAaB_pF":{"name":"isEqualTo(_:)","abstract":"

Whether or not the specified rule is equivalent to the current rule.

","parent_name":"Rule"},"Protocols/Rule.html#/s:18SwiftLintFramework4RuleP11collectInfo3for4into17compilerArgumentsyAA0aB4FileC_AA0D7StorageCSaySSGtF":{"name":"collectInfo(for:into:compilerArguments:)","abstract":"

Collects information for the specified file in a storage object, to be analyzed by a CollectedLinter.

","parent_name":"Rule"},"Protocols/Rule.html#/s:18SwiftLintFramework4RuleP8validate4file5using17compilerArgumentsSayAA14StyleViolationVGAA0aB4FileC_AA0D7StorageCSaySSGtF":{"name":"validate(file:using:compilerArguments:)","abstract":"

Executes the rule on a file after collecting file info for all files and returns any violations to the rule’s","parent_name":"Rule"},"Protocols/Reporter.html#/s:18SwiftLintFramework8ReporterP10identifierSSvpZ":{"name":"identifier","abstract":"

The unique identifier for this reporter.

","parent_name":"Reporter"},"Protocols/Reporter.html#/s:18SwiftLintFramework8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","abstract":"

Whether or not this reporter can output incrementally as violations are found or if all violations must be","parent_name":"Reporter"},"Protocols/Reporter.html#/s:18SwiftLintFramework8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","abstract":"

Return a string with the report for the specified violations.

","parent_name":"Reporter"},"Protocols/ASTRule.html#/s:18SwiftLintFramework7ASTRuleP8KindTypeQa":{"name":"KindType","abstract":"

The kind of token being recursed over.

","parent_name":"ASTRule"},"Protocols/ASTRule.html#/s:18SwiftLintFramework7ASTRuleP8validate4file4kind10dictionarySayAA14StyleViolationVGAA0aB4FileC_8KindTypeQzAA22SourceKittenDictionaryVtF":{"name":"validate(file:kind:dictionary:)","abstract":"

Executes the rule on a file and a subset of its AST structure, returnng any violations to the rule’s","parent_name":"ASTRule"},"Protocols/ASTRule.html#/s:18SwiftLintFramework7ASTRuleP4kind4from8KindTypeQzSgAA22SourceKittenDictionaryV_tF":{"name":"kind(from:)","abstract":"

Get the kind from the specified dictionary.

","parent_name":"ASTRule"},"Protocols/ASTRule.html#/s:18SwiftLintFramework4RuleP8validate4fileSayAA14StyleViolationVGAA0aB4FileC_tF":{"name":"validate(file:)","parent_name":"ASTRule"},"Protocols/ASTRule.html#/s:18SwiftLintFramework7ASTRulePAAE8validate4file10dictionarySayAA14StyleViolationVGAA0aB4FileC_AA22SourceKittenDictionaryVtF":{"name":"validate(file:dictionary:)","abstract":"

Executes the rule on a file and a subset of its AST structure, returnng any violations to the rule’s","parent_name":"ASTRule"},"Protocols/LintableFileManager.html#/s:18SwiftLintFramework19LintableFileManagerP07filesToB06inPath13rootDirectorySaySSGSS_SSSgtF":{"name":"filesToLint(inPath:rootDirectory:)","abstract":"

Returns all files that can be linted in the specified path. If the path is relative, it will be appended to the","parent_name":"LintableFileManager"},"Protocols/LintableFileManager.html#/s:18SwiftLintFramework19LintableFileManagerP16modificationDate03forE6AtPath10Foundation0H0VSgSS_tF":{"name":"modificationDate(forFileAtPath:)","abstract":"

Returns the date when the file at the specified path was last modified. Returns nil if the file cannot be","parent_name":"LintableFileManager"},"Protocols/LintableFileManager.html":{"name":"LintableFileManager","abstract":"

An interface for enumerating files that can be linted by SwiftLint.

"},"Protocols/ASTRule.html":{"name":"ASTRule","abstract":"

A rule that leverages the Swift source’s pre-typechecked Abstract Syntax Tree to recurse into the source’s"},"Protocols/Reporter.html":{"name":"Reporter","abstract":"

An interface for reporting violations as strings.

"},"Protocols/Rule.html":{"name":"Rule","abstract":"

An executable value that can identify issues (violations) in Swift source code.

"},"Protocols.html#/s:18SwiftLintFramework9OptInRuleP":{"name":"OptInRule","abstract":"

A rule that is not enabled by default. Rules conforming to this need to be explicitly enabled by users.

"},"Protocols.html#/s:18SwiftLintFramework21AutomaticTestableRuleP":{"name":"AutomaticTestableRule","abstract":"

A rule that has unit tests automatically generated using Sourcery.

"},"Protocols/ConfigurationProviderRule.html":{"name":"ConfigurationProviderRule","abstract":"

A rule that is user-configurable.

"},"Protocols/CorrectableRule.html":{"name":"CorrectableRule","abstract":"

A rule that can correct violations.

"},"Protocols/SubstitutionCorrectableRule.html":{"name":"SubstitutionCorrectableRule","abstract":"

A correctable rule that can apply its corrections by replacing the content of ranges in the offending file with"},"Protocols/SubstitutionCorrectableASTRule.html":{"name":"SubstitutionCorrectableASTRule","abstract":"

A SubstitutionCorrectableRule that is also an ASTRule.

"},"Protocols.html#/s:18SwiftLintFramework17SourceKitFreeRuleP":{"name":"SourceKitFreeRule","abstract":"

A rule that does not need SourceKit to operate and can still operate even after SourceKit has crashed.

"},"Protocols/AnalyzerRule.html":{"name":"AnalyzerRule","abstract":"

A rule that can operate on the post-typechecked AST using compiler arguments. Performs rules that are more like"},"Protocols.html#/s:18SwiftLintFramework17AnyCollectingRuleP":{"name":"AnyCollectingRule","abstract":"

Type-erased protocol used to check whether a rule is collectable.

"},"Protocols/CollectingRule.html":{"name":"CollectingRule","abstract":"

A rule that requires knowledge of all other files being linted.

"},"Protocols/CollectingCorrectableRule.html":{"name":"CollectingCorrectableRule","abstract":"

A CollectingRule that is also a CorrectableRule.

"},"Protocols/RuleConfiguration.html":{"name":"RuleConfiguration","abstract":"

A configuration value for a rule to allow users to modify its behavior.

"},"Functions.html#/s:18SwiftLintFramework11queuedPrintyyxlF":{"name":"queuedPrint(_:)","abstract":"

A thread-safe version of Swift’s standard print().

"},"Functions.html#/s:18SwiftLintFramework16queuedPrintErroryySSF":{"name":"queuedPrintError(_:)","abstract":"

A thread-safe, newline-terminated version of fputs(..., stderr).

"},"Functions.html#/s:18SwiftLintFramework16queuedFatalError_4file4lines5NeverOSS_s12StaticStringVSutF":{"name":"queuedFatalError(_:file:line:)","abstract":"

A thread-safe, newline-terminated version of fatalError(...) that doesn’t leak"},"Functions.html#/s:18SwiftLintFramework12reporterFrom10identifierAA8Reporter_pXpSS_tF":{"name":"reporterFrom(identifier:)","abstract":"

Returns the reporter with the specified identifier. Traps if the specified identifier doesn’t correspond to any"},"Extensions/String.html#/s:SS18SwiftLintFrameworkE24absolutePathStandardizedSSyF":{"name":"absolutePathStandardized()","abstract":"

Returns a new string, converting the path to a canonical absolute path.

","parent_name":"String"},"Extensions/String.html#/s:SS18SwiftLintFrameworkE16countOccurrences2ofSiSJ_tF":{"name":"countOccurrences(of:)","abstract":"

Count the number of occurrences of the given character in self

","parent_name":"String"},"Extensions/String.html#/s:SS18SwiftLintFrameworkE4path10relativeToS2S_tF":{"name":"path(relativeTo:)","abstract":"

If self is a path, this method can be used to get a path expression relative to a root directory

","parent_name":"String"},"Extensions/FileManager.html#/s:18SwiftLintFramework19LintableFileManagerP07filesToB06inPath13rootDirectorySaySSGSS_SSSgtF":{"name":"filesToLint(inPath:rootDirectory:)","parent_name":"FileManager"},"Extensions/FileManager.html#/s:18SwiftLintFramework19LintableFileManagerP16modificationDate03forE6AtPath10Foundation0H0VSgSS_tF":{"name":"modificationDate(forFileAtPath:)","parent_name":"FileManager"},"Extensions/FileManager.html":{"name":"FileManager"},"Extensions/String.html":{"name":"String"},"Enums/ViolationSeverity.html#/s:18SwiftLintFramework17ViolationSeverityO7warningyA2CmF":{"name":"warning","abstract":"

Non-fatal. If using SwiftLint as an Xcode build phase, Xcode will mark the build as having succeeded.

","parent_name":"ViolationSeverity"},"Enums/ViolationSeverity.html#/s:18SwiftLintFramework17ViolationSeverityO5erroryA2CmF":{"name":"error","abstract":"

Fatal. If using SwiftLint as an Xcode build phase, Xcode will mark the build as having failed.

","parent_name":"ViolationSeverity"},"Enums/ViolationSeverity.html#/s:SL1loiySbx_xtFZ":{"name":"<(_:_:)","parent_name":"ViolationSeverity"},"Enums/RuleListError.html#/s:18SwiftLintFramework13RuleListErrorO24duplicatedConfigurationsyAcA0D0_pXp_tcACmF":{"name":"duplicatedConfigurations(rule:)","abstract":"

The rule list contains more than one configuration for the specified rule.

","parent_name":"RuleListError"},"Enums/RuleKind.html#/s:18SwiftLintFramework8RuleKindO4lintyA2CmF":{"name":"lint","abstract":"

Describes rules that validate Swift source conventions.

","parent_name":"RuleKind"},"Enums/RuleKind.html#/s:18SwiftLintFramework8RuleKindO9idiomaticyA2CmF":{"name":"idiomatic","abstract":"

Describes rules that validate common practices in the Swift community.

","parent_name":"RuleKind"},"Enums/RuleKind.html#/s:18SwiftLintFramework8RuleKindO5styleyA2CmF":{"name":"style","abstract":"

Describes rules that validate stylistic choices.

","parent_name":"RuleKind"},"Enums/RuleKind.html#/s:18SwiftLintFramework8RuleKindO7metricsyA2CmF":{"name":"metrics","abstract":"

Describes rules that validate magnitudes or measurements of Swift source.

","parent_name":"RuleKind"},"Enums/RuleKind.html#/s:18SwiftLintFramework8RuleKindO11performanceyA2CmF":{"name":"performance","abstract":"

Describes rules that validate that code patterns with poor performance are avoided.

","parent_name":"RuleKind"},"Enums/RuleIdentifier.html#/s:18SwiftLintFramework14RuleIdentifierO3allyA2CmF":{"name":"all","abstract":"

Special identifier that should be treated as referring to ‘all’ SwiftLint rules. One helpful usecase is in","parent_name":"RuleIdentifier"},"Enums/RuleIdentifier.html#/s:18SwiftLintFramework14RuleIdentifierO6singleyACSS_tcACmF":{"name":"single(identifier:)","abstract":"

Represents a single SwiftLint rule with the specified identifier.

","parent_name":"RuleIdentifier"},"Enums/RuleIdentifier.html#/s:18SwiftLintFramework14RuleIdentifierO20stringRepresentationSSvp":{"name":"stringRepresentation","abstract":"

The spelling of the string for this idenfitier.

","parent_name":"RuleIdentifier"},"Enums/RuleIdentifier.html#/s:18SwiftLintFramework14RuleIdentifierOyACSScfc":{"name":"init(_:)","abstract":"

Creates a RuleIdentifier by its string representation.

","parent_name":"RuleIdentifier"},"Enums/RuleIdentifier.html#/s:s26ExpressibleByStringLiteralP06stringD0x0cD4TypeQz_tcfc":{"name":"init(stringLiteral:)","parent_name":"RuleIdentifier"},"Enums/ConfigurationError.html#/s:18SwiftLintFramework18ConfigurationErrorO07unknownD0yA2CmF":{"name":"unknownConfiguration","abstract":"

The configuration didn’t match internal expectations.

","parent_name":"ConfigurationError"},"Enums/ConfigurationError.html#/s:18SwiftLintFramework18ConfigurationErrorO28ambiguousMatchKindParametersyA2CmF":{"name":"ambiguousMatchKindParameters","abstract":"

The configuration had both match_kind and excluded_match_kind parameters.

","parent_name":"ConfigurationError"},"Enums/ConfigurationError.html#/s:18SwiftLintFramework18ConfigurationErrorO7genericyACSScACmF":{"name":"generic(_:)","abstract":"

A generic configuration error specified by a string.

","parent_name":"ConfigurationError"},"Enums/ConfigurationError.html#/s:18SwiftLintFramework18ConfigurationErrorO19initialFileNotFoundyACSS_tcACmF":{"name":"initialFileNotFound(path:)","abstract":"

The initial configuration file was not found.

","parent_name":"ConfigurationError"},"Enums/AccessControlLevel.html#/s:18SwiftLintFramework18AccessControlLevelO7privateyA2CmF":{"name":"private","abstract":"

Accessible by the declaration’s immediate lexical scope.

","parent_name":"AccessControlLevel"},"Enums/AccessControlLevel.html#/s:18SwiftLintFramework18AccessControlLevelO11fileprivateyA2CmF":{"name":"fileprivate","abstract":"

Accessible by the declaration’s same file.

","parent_name":"AccessControlLevel"},"Enums/AccessControlLevel.html#/s:18SwiftLintFramework18AccessControlLevelO8internalyA2CmF":{"name":"internal","abstract":"

Accessible by the declaration’s same module, or modules importing it with the @testable attribute.

","parent_name":"AccessControlLevel"},"Enums/AccessControlLevel.html#/s:18SwiftLintFramework18AccessControlLevelO6publicyA2CmF":{"name":"public","abstract":"

Accessible by the declaration’s same program.

","parent_name":"AccessControlLevel"},"Enums/AccessControlLevel.html#/s:18SwiftLintFramework18AccessControlLevelO4openyA2CmF":{"name":"open","abstract":"

Accessible and customizable (via subclassing or overrides) by the declaration’s same program.

","parent_name":"AccessControlLevel"},"Enums/AccessControlLevel.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"AccessControlLevel"},"Enums/AccessControlLevel.html#/s:SL1loiySbx_xtFZ":{"name":"<(_:_:)","parent_name":"AccessControlLevel"},"Enums/SwiftExpressionKind.html#/s:18SwiftLintFramework0A14ExpressionKindO4callyA2CmF":{"name":"call","abstract":"

A call to a named function or closure.

","parent_name":"SwiftExpressionKind"},"Enums/SwiftExpressionKind.html#/s:18SwiftLintFramework0A14ExpressionKindO8argumentyA2CmF":{"name":"argument","abstract":"

An argument value for a function or closure.

","parent_name":"SwiftExpressionKind"},"Enums/SwiftExpressionKind.html#/s:18SwiftLintFramework0A14ExpressionKindO5arrayyA2CmF":{"name":"array","abstract":"

An Array expression.

","parent_name":"SwiftExpressionKind"},"Enums/SwiftExpressionKind.html#/s:18SwiftLintFramework0A14ExpressionKindO10dictionaryyA2CmF":{"name":"dictionary","abstract":"

A Dictionary expression.

","parent_name":"SwiftExpressionKind"},"Enums/SwiftExpressionKind.html#/s:18SwiftLintFramework0A14ExpressionKindO13objectLiteralyA2CmF":{"name":"objectLiteral","abstract":"

An object literal expression. https://developer.apple.com/swift/blog/?id=33

","parent_name":"SwiftExpressionKind"},"Enums/SwiftExpressionKind.html#/s:18SwiftLintFramework0A14ExpressionKindO7closureyA2CmF":{"name":"closure","abstract":"

A closure expression. https://docs.swift.org/swift-book/LanguageGuide/Closures.html

","parent_name":"SwiftExpressionKind"},"Enums/SwiftExpressionKind.html#/s:18SwiftLintFramework0A14ExpressionKindO5tupleyA2CmF":{"name":"tuple","abstract":"

A tuple expression. https://docs.swift.org/swift-book/ReferenceManual/Types.html#ID448

","parent_name":"SwiftExpressionKind"},"Enums/SwiftExpressionKind.html":{"name":"SwiftExpressionKind","abstract":"

The kind of expression for a contiguous set of Swift source tokens.

"},"Enums/AccessControlLevel.html":{"name":"AccessControlLevel","abstract":"

The accessibility of a Swift source declaration.

"},"Enums/ConfigurationError.html":{"name":"ConfigurationError","abstract":"

All possible configuration errors.

"},"Enums/RuleIdentifier.html":{"name":"RuleIdentifier","abstract":"

An identifier representing a SwiftLint rule, or all rules.

"},"Enums/RuleKind.html":{"name":"RuleKind","abstract":"

All the possible rule kinds (categories).

"},"Enums/RuleListError.html":{"name":"RuleListError","abstract":"

All possible rule list configuration errors.

"},"Enums/ViolationSeverity.html":{"name":"ViolationSeverity","abstract":"

The magnitude of a StyleViolation.

"},"Global%20Variables.html#/s:18SwiftLintFramework15primaryRuleListAA0eF0Vvp":{"name":"primaryRuleList","abstract":"

The rule list containing all available rules built into SwiftLint.

"},"Classes/RuleStorage.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"RuleStorage"},"Classes/RuleStorage.html#/s:18SwiftLintFramework11RuleStorageCACycfc":{"name":"init()","abstract":"

Creates a RuleStorage with no initial stored data.

","parent_name":"RuleStorage"},"Classes/LinterCache.html#/s:18SwiftLintFramework11LinterCacheC13configuration11fileManagerAcA13ConfigurationV_AA012LintableFileH0_ptcfc":{"name":"init(configuration:fileManager:)","abstract":"

Creates a LinterCache by specifying a SwiftLint configuration and a file manager.

","parent_name":"LinterCache"},"Classes/LinterCache.html#/s:18SwiftLintFramework11LinterCacheC4saveyyKF":{"name":"save()","abstract":"

Persists the cache to disk.

","parent_name":"LinterCache"},"Classes/SwiftLintFile.html#/s:18SwiftLintFramework0aB4FileC4fileAC012SourceKittenC00D0C_tcfc":{"name":"init(file:)","abstract":"

Creates a SwiftLintFile with a SourceKitten File.

","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:18SwiftLintFramework0aB4FileC4pathACSgSS_tcfc":{"name":"init(path:)","abstract":"

Creates a SwiftLintFile by specifying its path on disk.","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:18SwiftLintFramework0aB4FileC20pathDeferringReadingACSS_tcfc":{"name":"init(pathDeferringReading:)","abstract":"

Creates a SwiftLintFile by specifying its path on disk. Unlike the SwiftLintFile(path:) initializer, this","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:18SwiftLintFramework0aB4FileC8contentsACSS_tcfc":{"name":"init(contents:)","abstract":"

Creates a SwiftLintFile that is not backed by a file on disk by specifying its contents.

","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:18SwiftLintFramework0aB4FileC4pathSSSgvp":{"name":"path","abstract":"

The path on disk for this file.

","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:18SwiftLintFramework0aB4FileC8contentsSSvp":{"name":"contents","abstract":"

The file’s contents.

","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:18SwiftLintFramework0aB4FileC10stringView012SourceKittenC006StringF0Vvp":{"name":"stringView","abstract":"

A string view into the contents of this file optimized for string manipulation operations.

","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:18SwiftLintFramework0aB4FileC5linesSay012SourceKittenC04LineVGvp":{"name":"lines","abstract":"

The parsed lines for this file’s contents.

","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:18SwiftLintFramework0aB4FileC15invalidateCacheyyF":{"name":"invalidateCache()","abstract":"

Invalidates all cached data for this file.

","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html":{"name":"SwiftLintFile","abstract":"

A unit of Swift source code, either on disk or in memory.

"},"Classes/LinterCache.html":{"name":"LinterCache","abstract":"

A persisted cache for storing and retrieving linter results.

"},"Classes/RuleStorage.html":{"name":"RuleStorage","abstract":"

A storage mechanism for aggregating the results of CollectingRules.

"},"static_operator.html":{"name":"static_operator"},"anyobject_protocol.html":{"name":"anyobject_protocol"},"override_in_extension.html":{"name":"override_in_extension"},"fallthrough.html":{"name":"fallthrough"},"redundant_set_access_control.html":{"name":"redundant_set_access_control"},"nsobject_prefer_isequal.html":{"name":"nsobject_prefer_isequal"},"explicit_init.html":{"name":"explicit_init"},"function_body_length.html":{"name":"function_body_length"},"vertical_parameter_alignment_on_call.html":{"name":"vertical_parameter_alignment_on_call"},"flatmap_over_map_reduce.html":{"name":"flatmap_over_map_reduce"},"custom_rules.html":{"name":"custom_rules"},"nslocalizedstring_require_bundle.html":{"name":"nslocalizedstring_require_bundle"},"legacy_objc_type.html":{"name":"legacy_objc_type"},"line_length.html":{"name":"line_length"},"sorted_imports.html":{"name":"sorted_imports"},"sorted_first_last.html":{"name":"sorted_first_last"},"strict_fileprivate.html":{"name":"strict_fileprivate"},"let_var_whitespace.html":{"name":"let_var_whitespace"},"legacy_random.html":{"name":"legacy_random"},"function_parameter_count.html":{"name":"function_parameter_count"},"last_where.html":{"name":"last_where"},"operator_whitespace.html":{"name":"operator_whitespace"},"balanced_xctest_lifecycle.html":{"name":"balanced_xctest_lifecycle"},"valid_ibinspectable.html":{"name":"valid_ibinspectable"},"closure_end_indentation.html":{"name":"closure_end_indentation"},"nslocalizedstring_key.html":{"name":"nslocalizedstring_key"},"explicit_acl.html":{"name":"explicit_acl"},"file_length.html":{"name":"file_length"},"private_outlet.html":{"name":"private_outlet"},"reduce_into.html":{"name":"reduce_into"},"trailing_comma.html":{"name":"trailing_comma"},"discouraged_optional_collection.html":{"name":"discouraged_optional_collection"},"prohibited_super_call.html":{"name":"prohibited_super_call"},"untyped_error_in_catch.html":{"name":"untyped_error_in_catch"},"multiline_literal_brackets.html":{"name":"multiline_literal_brackets"},"unused_closure_parameter.html":{"name":"unused_closure_parameter"},"private_action.html":{"name":"private_action"},"opening_brace.html":{"name":"opening_brace"},"strong_iboutlet.html":{"name":"strong_iboutlet"},"quick_discouraged_call.html":{"name":"quick_discouraged_call"},"file_types_order.html":{"name":"file_types_order"},"extension_access_modifier.html":{"name":"extension_access_modifier"},"prefer_nimble.html":{"name":"prefer_nimble"},"object_literal.html":{"name":"object_literal"},"void_return.html":{"name":"void_return"},"trailing_whitespace.html":{"name":"trailing_whitespace"},"redundant_nil_coalescing.html":{"name":"redundant_nil_coalescing"},"prefer_self_in_static_references.html":{"name":"prefer_self_in_static_references"},"contains_over_filter_count.html":{"name":"contains_over_filter_count"},"pattern_matching_keywords.html":{"name":"pattern_matching_keywords"},"duplicate_enum_cases.html":{"name":"duplicate_enum_cases"},"inclusive_language.html":{"name":"inclusive_language"},"no_space_in_method_call.html":{"name":"no_space_in_method_call"},"explicit_top_level_acl.html":{"name":"explicit_top_level_acl"},"single_test_class.html":{"name":"single_test_class"},"unused_control_flow_label.html":{"name":"unused_control_flow_label"},"redundant_void_return.html":{"name":"redundant_void_return"},"cyclomatic_complexity.html":{"name":"cyclomatic_complexity"},"contains_over_first_not_nil.html":{"name":"contains_over_first_not_nil"},"unused_declaration.html":{"name":"unused_declaration"},"collection_alignment.html":{"name":"collection_alignment"},"discouraged_optional_boolean.html":{"name":"discouraged_optional_boolean"},"file_name.html":{"name":"file_name"},"required_deinit.html":{"name":"required_deinit"},"compiler_protocol_init.html":{"name":"compiler_protocol_init"},"explicit_self.html":{"name":"explicit_self"},"file_header.html":{"name":"file_header"},"legacy_cggeometry_functions.html":{"name":"legacy_cggeometry_functions"},"redundant_objc_attribute.html":{"name":"redundant_objc_attribute"},"generic_type_name.html":{"name":"generic_type_name"},"vertical_whitespace_closing_braces.html":{"name":"vertical_whitespace_closing_braces"},"legacy_constant.html":{"name":"legacy_constant"},"prefer_self_type_over_type_of_self.html":{"name":"prefer_self_type_over_type_of_self"},"private_over_fileprivate.html":{"name":"private_over_fileprivate"},"multiline_arguments_brackets.html":{"name":"multiline_arguments_brackets"},"redundant_type_annotation.html":{"name":"redundant_type_annotation"},"for_where.html":{"name":"for_where"},"closure_parameter_position.html":{"name":"closure_parameter_position"},"duplicate_imports.html":{"name":"duplicate_imports"},"prohibited_interface_builder.html":{"name":"prohibited_interface_builder"},"test_case_accessibility.html":{"name":"test_case_accessibility"},"no_extension_access_modifier.html":{"name":"no_extension_access_modifier"},"no_fallthrough_only.html":{"name":"no_fallthrough_only"},"literal_expression_end_indentation.html":{"name":"literal_expression_end_indentation"},"discarded_notification_center_observer.html":{"name":"discarded_notification_center_observer"},"joined_default_parameter.html":{"name":"joined_default_parameter"},"block_based_kvo.html":{"name":"block_based_kvo"},"closure_spacing.html":{"name":"closure_spacing"},"unused_setter_value.html":{"name":"unused_setter_value"},"multiline_parameters_brackets.html":{"name":"multiline_parameters_brackets"},"notification_center_detachment.html":{"name":"notification_center_detachment"},"redundant_string_enum_value.html":{"name":"redundant_string_enum_value"},"trailing_semicolon.html":{"name":"trailing_semicolon"},"multiple_closures_with_trailing_closure.html":{"name":"multiple_closures_with_trailing_closure"},"nimble_operator.html":{"name":"nimble_operator"},"class_delegate_protocol.html":{"name":"class_delegate_protocol"},"unused_capture_list.html":{"name":"unused_capture_list"},"todo.html":{"name":"todo"},"number_separator.html":{"name":"number_separator"},"multiline_function_chains.html":{"name":"multiline_function_chains"},"vertical_whitespace_between_cases.html":{"name":"vertical_whitespace_between_cases"},"private_unit_test.html":{"name":"private_unit_test"},"empty_count.html":{"name":"empty_count"},"lower_acl_than_parent.html":{"name":"lower_acl_than_parent"},"syntactic_sugar.html":{"name":"syntactic_sugar"},"vertical_whitespace.html":{"name":"vertical_whitespace"},"unneeded_break_in_switch.html":{"name":"unneeded_break_in_switch"},"discouraged_none_name.html":{"name":"discouraged_none_name"},"redundant_discardable_let.html":{"name":"redundant_discardable_let"},"toggle_bool.html":{"name":"toggle_bool"},"discouraged_direct_init.html":{"name":"discouraged_direct_init"},"required_enum_case.html":{"name":"required_enum_case"},"type_body_length.html":{"name":"type_body_length"},"unneeded_parentheses_in_closure_argument.html":{"name":"unneeded_parentheses_in_closure_argument"},"closing_brace.html":{"name":"closing_brace"},"missing_docs.html":{"name":"missing_docs"},"yoda_condition.html":{"name":"yoda_condition"},"type_name.html":{"name":"type_name"},"implicitly_unwrapped_optional.html":{"name":"implicitly_unwrapped_optional"},"overridden_super_call.html":{"name":"overridden_super_call"},"colon.html":{"name":"colon"},"xctfail_message.html":{"name":"xctfail_message"},"conditional_returns_on_newline.html":{"name":"conditional_returns_on_newline"},"inert_defer.html":{"name":"inert_defer"},"multiline_arguments.html":{"name":"multiline_arguments"},"comment_spacing.html":{"name":"comment_spacing"},"private_subject.html":{"name":"private_subject"},"indentation_width.html":{"name":"indentation_width"},"no_grouping_extension.html":{"name":"no_grouping_extension"},"function_default_parameter_at_end.html":{"name":"function_default_parameter_at_end"},"attributes.html":{"name":"attributes"},"nesting.html":{"name":"nesting"},"explicit_enum_raw_value.html":{"name":"explicit_enum_raw_value"},"vertical_whitespace_opening_braces.html":{"name":"vertical_whitespace_opening_braces"},"closure_body_length.html":{"name":"closure_body_length"},"quick_discouraged_pending_test.html":{"name":"quick_discouraged_pending_test"},"leading_whitespace.html":{"name":"leading_whitespace"},"type_contents_order.html":{"name":"type_contents_order"},"legacy_nsgeometry_functions.html":{"name":"legacy_nsgeometry_functions"},"prefer_zero_over_explicit_init.html":{"name":"prefer_zero_over_explicit_init"},"enum_case_associated_values_count.html":{"name":"enum_case_associated_values_count"},"mark.html":{"name":"mark"},"empty_parentheses_with_trailing_closure.html":{"name":"empty_parentheses_with_trailing_closure"},"prefixed_toplevel_constant.html":{"name":"prefixed_toplevel_constant"},"redundant_optional_initialization.html":{"name":"redundant_optional_initialization"},"anonymous_argument_in_multiline_closure.html":{"name":"anonymous_argument_in_multiline_closure"},"explicit_type_interface.html":{"name":"explicit_type_interface"},"force_try.html":{"name":"force_try"},"superfluous_disable_command.html":{"name":"superfluous_disable_command"},"force_cast.html":{"name":"force_cast"},"expiring_todo.html":{"name":"expiring_todo"},"discouraged_assert.html":{"name":"discouraged_assert"},"unused_import.html":{"name":"unused_import"},"empty_string.html":{"name":"empty_string"},"identifier_name.html":{"name":"identifier_name"},"self_in_property_initialization.html":{"name":"self_in_property_initialization"},"weak_delegate.html":{"name":"weak_delegate"},"ibinspectable_in_extension.html":{"name":"ibinspectable_in_extension"},"multiline_parameters.html":{"name":"multiline_parameters"},"return_arrow_whitespace.html":{"name":"return_arrow_whitespace"},"array_init.html":{"name":"array_init"},"switch_case_on_newline.html":{"name":"switch_case_on_newline"},"computed_accessors_order.html":{"name":"computed_accessors_order"},"empty_collection_literal.html":{"name":"empty_collection_literal"},"implicit_getter.html":{"name":"implicit_getter"},"capture_variable.html":{"name":"capture_variable"},"control_statement.html":{"name":"control_statement"},"orphaned_doc_comment.html":{"name":"orphaned_doc_comment"},"switch_case_alignment.html":{"name":"switch_case_alignment"},"contains_over_filter_is_empty.html":{"name":"contains_over_filter_is_empty"},"fatal_error_message.html":{"name":"fatal_error_message"},"legacy_hashing.html":{"name":"legacy_hashing"},"optional_enum_case_matching.html":{"name":"optional_enum_case_matching"},"contains_over_range_nil_comparison.html":{"name":"contains_over_range_nil_comparison"},"dynamic_inline.html":{"name":"dynamic_inline"},"duplicated_key_in_dictionary_literal.html":{"name":"duplicated_key_in_dictionary_literal"},"first_where.html":{"name":"first_where"},"empty_enum_arguments.html":{"name":"empty_enum_arguments"},"deployment_target.html":{"name":"deployment_target"},"legacy_multiple.html":{"name":"legacy_multiple"},"identical_operands.html":{"name":"identical_operands"},"unused_enumerated.html":{"name":"unused_enumerated"},"trailing_closure.html":{"name":"trailing_closure"},"comma.html":{"name":"comma"},"vertical_parameter_alignment.html":{"name":"vertical_parameter_alignment"},"is_disjoint.html":{"name":"is_disjoint"},"discouraged_object_literal.html":{"name":"discouraged_object_literal"},"operator_usage_whitespace.html":{"name":"operator_usage_whitespace"},"unused_optional_binding.html":{"name":"unused_optional_binding"},"xct_specific_matcher.html":{"name":"xct_specific_matcher"},"trailing_newline.html":{"name":"trailing_newline"},"raw_value_for_camel_cased_codable_enum.html":{"name":"raw_value_for_camel_cased_codable_enum"},"statement_position.html":{"name":"statement_position"},"empty_xctest_method.html":{"name":"empty_xctest_method"},"modifier_order.html":{"name":"modifier_order"},"force_unwrapping.html":{"name":"force_unwrapping"},"large_tuple.html":{"name":"large_tuple"},"implicit_return.html":{"name":"implicit_return"},"quick_discouraged_focused_test.html":{"name":"quick_discouraged_focused_test"},"reduce_boolean.html":{"name":"reduce_boolean"},"empty_parameters.html":{"name":"empty_parameters"},"unowned_variable_capture.html":{"name":"unowned_variable_capture"},"legacy_constructor.html":{"name":"legacy_constructor"},"file_name_no_space.html":{"name":"file_name_no_space"},"protocol_property_accessors_order.html":{"name":"protocol_property_accessors_order"},"shorthand_operator.html":{"name":"shorthand_operator"},"unavailable_function.html":{"name":"unavailable_function"},"convenience_type.html":{"name":"convenience_type"},"Structs/MarkdownReporter.html#/s:18SwiftLintFramework8ReporterP10identifierSSvpZ":{"name":"identifier","parent_name":"MarkdownReporter"},"Structs/MarkdownReporter.html#/s:18SwiftLintFramework8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","parent_name":"MarkdownReporter"},"Structs/MarkdownReporter.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"MarkdownReporter"},"Structs/MarkdownReporter.html#/s:18SwiftLintFramework8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","parent_name":"MarkdownReporter"},"Structs/JUnitReporter.html#/s:18SwiftLintFramework8ReporterP10identifierSSvpZ":{"name":"identifier","parent_name":"JUnitReporter"},"Structs/JUnitReporter.html#/s:18SwiftLintFramework8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","parent_name":"JUnitReporter"},"Structs/JUnitReporter.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"JUnitReporter"},"Structs/JUnitReporter.html#/s:18SwiftLintFramework8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","parent_name":"JUnitReporter"},"Structs/JSONReporter.html#/s:18SwiftLintFramework8ReporterP10identifierSSvpZ":{"name":"identifier","parent_name":"JSONReporter"},"Structs/JSONReporter.html#/s:18SwiftLintFramework8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","parent_name":"JSONReporter"},"Structs/JSONReporter.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"JSONReporter"},"Structs/JSONReporter.html#/s:18SwiftLintFramework8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","parent_name":"JSONReporter"},"Structs/HTMLReporter.html#/s:18SwiftLintFramework8ReporterP10identifierSSvpZ":{"name":"identifier","parent_name":"HTMLReporter"},"Structs/HTMLReporter.html#/s:18SwiftLintFramework8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","parent_name":"HTMLReporter"},"Structs/HTMLReporter.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"HTMLReporter"},"Structs/HTMLReporter.html#/s:18SwiftLintFramework8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","parent_name":"HTMLReporter"},"Structs/GitHubActionsLoggingReporter.html#/s:18SwiftLintFramework8ReporterP10identifierSSvpZ":{"name":"identifier","parent_name":"GitHubActionsLoggingReporter"},"Structs/GitHubActionsLoggingReporter.html#/s:18SwiftLintFramework8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","parent_name":"GitHubActionsLoggingReporter"},"Structs/GitHubActionsLoggingReporter.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"GitHubActionsLoggingReporter"},"Structs/GitHubActionsLoggingReporter.html#/s:18SwiftLintFramework8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","parent_name":"GitHubActionsLoggingReporter"},"Structs/EmojiReporter.html#/s:18SwiftLintFramework8ReporterP10identifierSSvpZ":{"name":"identifier","parent_name":"EmojiReporter"},"Structs/EmojiReporter.html#/s:18SwiftLintFramework8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","parent_name":"EmojiReporter"},"Structs/EmojiReporter.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"EmojiReporter"},"Structs/EmojiReporter.html#/s:18SwiftLintFramework8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","parent_name":"EmojiReporter"},"Structs/CheckstyleReporter.html#/s:18SwiftLintFramework8ReporterP10identifierSSvpZ":{"name":"identifier","parent_name":"CheckstyleReporter"},"Structs/CheckstyleReporter.html#/s:18SwiftLintFramework8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","parent_name":"CheckstyleReporter"},"Structs/CheckstyleReporter.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"CheckstyleReporter"},"Structs/CheckstyleReporter.html#/s:18SwiftLintFramework8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","parent_name":"CheckstyleReporter"},"Structs/CSVReporter.html#/s:18SwiftLintFramework8ReporterP10identifierSSvpZ":{"name":"identifier","parent_name":"CSVReporter"},"Structs/CSVReporter.html#/s:18SwiftLintFramework8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","parent_name":"CSVReporter"},"Structs/CSVReporter.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"CSVReporter"},"Structs/CSVReporter.html#/s:18SwiftLintFramework8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","parent_name":"CSVReporter"},"Structs/CSVReporter.html":{"name":"CSVReporter","abstract":"

Reports violations as a newline-separated string of comma-separated values (CSV).

"},"Structs/CheckstyleReporter.html":{"name":"CheckstyleReporter","abstract":"

Reports violations as XML conforming to the Checkstyle specification, as defined here:"},"Structs/EmojiReporter.html":{"name":"EmojiReporter","abstract":"

Reports violations in the format that’s both fun and easy to read.

"},"Structs/GitHubActionsLoggingReporter.html":{"name":"GitHubActionsLoggingReporter","abstract":"

Reports violations in the format GitHub-hosted virtual machine for Actions can recognize as messages.

"},"Structs/HTMLReporter.html":{"name":"HTMLReporter","abstract":"

Reports violations as HTML.

"},"Structs/JSONReporter.html":{"name":"JSONReporter","abstract":"

Reports violations as a JSON array.

"},"Structs/JUnitReporter.html":{"name":"JUnitReporter","abstract":"

Reports violations as JUnit XML.

"},"Structs/MarkdownReporter.html":{"name":"MarkdownReporter","abstract":"

Reports violations as markdown formated (with tables).

"},"rule-directory.html":{"name":"Rule Directory"},"Rules.html":{"name":"Rules"},"Reporters.html":{"name":"Reporters"},"Guides.html":{"name":"Guides","abstract":"

The following guides are available globally.

"},"Classes.html":{"name":"Classes","abstract":"

The following classes are available globally.

"},"Global%20Variables.html":{"name":"Global Variables","abstract":"

The following global variables are available globally.

"},"Enums.html":{"name":"Enumerations","abstract":"

The following enumerations are available globally.

"},"Extensions.html":{"name":"Extensions","abstract":"

The following extensions are available globally.

"},"Functions.html":{"name":"Functions","abstract":"

The following functions are available globally.

"},"Protocols.html":{"name":"Protocols","abstract":"

The following protocols are available globally.

"},"Structs.html":{"name":"Structures","abstract":"

The following structures are available globally.

"}} \ No newline at end of file diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/self_in_property_initialization.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/self_in_property_initialization.html deleted file mode 100644 index d5a2db4cb..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/self_in_property_initialization.html +++ /dev/null @@ -1,393 +0,0 @@ - - - - self_in_property_initialization Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Self in Property Initialization

- -

self refers to the unapplied NSObject.self() method, which is likely not expected. Make the variable lazy to be able to refer to the current instance or use ClassName.self.

- -
    -
  • Identifier: self_in_property_initialization
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class View: UIView {
-    let button: UIButton = {
-        return UIButton()
-    }()
-}
-
-
class View: UIView {
-    lazy var button: UIButton = {
-        let button = UIButton()
-        button.addTarget(self, action: #selector(didTapButton), for: .touchUpInside)
-        return button
-    }()
-}
-
-
class View: UIView {
-    var button: UIButton = {
-        let button = UIButton()
-        button.addTarget(otherObject, action: #selector(didTapButton), for: .touchUpInside)
-        return button
-    }()
-}
-
-
class View: UIView {
-    private let collectionView: UICollectionView = {
-        let layout = UICollectionViewFlowLayout()
-        let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout)
-        collectionView.registerReusable(Cell.self)
-
-        return collectionView
-    }()
-}
-
-

Triggering Examples

-
class View: UIView {
-    ↓var button: UIButton = {
-        let button = UIButton()
-        button.addTarget(self, action: #selector(didTapButton), for: .touchUpInside)
-        return button
-    }()
-}
-
-
class View: UIView {
-    ↓let button: UIButton = {
-        let button = UIButton()
-        button.addTarget(self, action: #selector(didTapButton), for: .touchUpInside)
-        return button
-    }()
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/shorthand_operator.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/shorthand_operator.html deleted file mode 100644 index a152efa8f..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/shorthand_operator.html +++ /dev/null @@ -1,480 +0,0 @@ - - - - shorthand_operator Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Shorthand Operator

- -

Prefer shorthand operators (+=, -=, *=, /=) over doing the operation and assigning.

- -
    -
  • Identifier: shorthand_operator
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: error
  • -
-

Non Triggering Examples

-
foo -= 1
-
-
foo -= variable
-
-
foo -= bar.method()
-
-
self.foo = foo - 1
-
-
foo = self.foo - 1
-
-
page = ceilf(currentOffset - pageWidth)
-
-
foo = aMethod(foo - bar)
-
-
foo = aMethod(bar - foo)
-
-
foo /= 1
-
-
foo /= variable
-
-
foo /= bar.method()
-
-
self.foo = foo / 1
-
-
foo = self.foo / 1
-
-
page = ceilf(currentOffset / pageWidth)
-
-
foo = aMethod(foo / bar)
-
-
foo = aMethod(bar / foo)
-
-
foo += 1
-
-
foo += variable
-
-
foo += bar.method()
-
-
self.foo = foo + 1
-
-
foo = self.foo + 1
-
-
page = ceilf(currentOffset + pageWidth)
-
-
foo = aMethod(foo + bar)
-
-
foo = aMethod(bar + foo)
-
-
foo *= 1
-
-
foo *= variable
-
-
foo *= bar.method()
-
-
self.foo = foo * 1
-
-
foo = self.foo * 1
-
-
page = ceilf(currentOffset * pageWidth)
-
-
foo = aMethod(foo * bar)
-
-
foo = aMethod(bar * foo)
-
-
var helloWorld = "world!"
- helloWorld = "Hello, " + helloWorld
-
-
angle = someCheck ? angle : -angle
-
-
seconds = seconds * 60 + value
-
-

Triggering Examples

-
↓foo = foo - 1
-
-
-
↓foo = foo - aVariable
-
-
-
↓foo = foo - bar.method()
-
-
-
↓foo.aProperty = foo.aProperty - 1
-
-
-
↓self.aProperty = self.aProperty - 1
-
-
-
↓foo = foo / 1
-
-
-
↓foo = foo / aVariable
-
-
-
↓foo = foo / bar.method()
-
-
-
↓foo.aProperty = foo.aProperty / 1
-
-
-
↓self.aProperty = self.aProperty / 1
-
-
-
↓foo = foo + 1
-
-
-
↓foo = foo + aVariable
-
-
-
↓foo = foo + bar.method()
-
-
-
↓foo.aProperty = foo.aProperty + 1
-
-
-
↓self.aProperty = self.aProperty + 1
-
-
-
↓foo = foo * 1
-
-
-
↓foo = foo * aVariable
-
-
-
↓foo = foo * bar.method()
-
-
-
↓foo.aProperty = foo.aProperty * 1
-
-
-
↓self.aProperty = self.aProperty * 1
-
-
-
n = n + i / outputLength
-
-
n = n - i / outputLength
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/single_test_class.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/single_test_class.html deleted file mode 100644 index 7f4389145..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/single_test_class.html +++ /dev/null @@ -1,375 +0,0 @@ - - - - single_test_class Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Single Test Class

- -

Test files should contain a single QuickSpec or XCTestCase class.

- -
    -
  • Identifier: single_test_class
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class FooTests {  }
-
-
-
class FooTests: QuickSpec {  }
-
-
-
class FooTests: XCTestCase {  }
-
-
-

Triggering Examples

-
↓class FooTests: QuickSpec {  }
-↓class BarTests: QuickSpec {  }
-
-
↓class FooTests: QuickSpec {  }
-↓class BarTests: QuickSpec {  }
-↓class TotoTests: QuickSpec {  }
-
-
↓class FooTests: XCTestCase {  }
-↓class BarTests: XCTestCase {  }
-
-
↓class FooTests: XCTestCase {  }
-↓class BarTests: XCTestCase {  }
-↓class TotoTests: XCTestCase {  }
-
-
↓class FooTests: QuickSpec {  }
-↓class BarTests: XCTestCase {  }
-
-
↓class FooTests: QuickSpec {  }
-↓class BarTests: XCTestCase {  }
-class TotoTests {  }
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/sorted_first_last.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/sorted_first_last.html deleted file mode 100644 index daebd3dee..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/sorted_first_last.html +++ /dev/null @@ -1,415 +0,0 @@ - - - - sorted_first_last Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Min or Max over Sorted First or Last

- -

Prefer using min() or max() over sorted().first or sorted().last

- -
    -
  • Identifier: sorted_first_last
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let min = myList.min()
-
-
-
let min = myList.min(by: { $0 < $1 })
-
-
-
let min = myList.min(by: >)
-
-
-
let max = myList.max()
-
-
-
let max = myList.max(by: { $0 < $1 })
-
-
-
let message = messages.sorted(byKeyPath: #keyPath(Message.timestamp)).last
-
-
let message = messages.sorted(byKeyPath: "timestamp", ascending: false).first
-
-
myList.sorted().firstIndex(of: key)
-
-
myList.sorted().lastIndex(of: key)
-
-
myList.sorted().firstIndex(where: someFunction)
-
-
myList.sorted().lastIndex(where: someFunction)
-
-
myList.sorted().firstIndex { $0 == key }
-
-
myList.sorted().lastIndex { $0 == key }
-
-

Triggering Examples

-
↓myList.sorted().first
-
-
-
↓myList.sorted(by: { $0.description < $1.description }).first
-
-
-
↓myList.sorted(by: >).first
-
-
-
↓myList.map { $0 + 1 }.sorted().first
-
-
-
↓myList.sorted(by: someFunction).first
-
-
-
↓myList.map { $0 + 1 }.sorted { $0.description < $1.description }.first
-
-
-
↓myList.sorted().last
-
-
-
↓myList.sorted().last?.something()
-
-
-
↓myList.sorted(by: { $0.description < $1.description }).last
-
-
-
↓myList.map { $0 + 1 }.sorted().last
-
-
-
↓myList.sorted(by: someFunction).last
-
-
-
↓myList.map { $0 + 1 }.sorted { $0.description < $1.description }.last
-
-
-
↓myList.map { $0 + 1 }.sorted { $0.first < $1.first }.last
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/sorted_imports.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/sorted_imports.html deleted file mode 100644 index 7963645d7..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/sorted_imports.html +++ /dev/null @@ -1,407 +0,0 @@ - - - - sorted_imports Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Sorted Imports

- -

Imports should be sorted.

- -
    -
  • Identifier: sorted_imports
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
import AAA
-import BBB
-import CCC
-import DDD
-
-
import Alamofire
-import API
-
-
import labc
-import Ldef
-
-
import BBB
-// comment
-import AAA
-import CCC
-
-
@testable import AAA
-import   CCC
-
-
import AAA
-@testable import   CCC
-
-
import EEE.A
-import FFF.B
-#if os(Linux)
-import DDD.A
-import EEE.B
-#else
-import CCC
-import DDD.B
-#endif
-import AAA
-import BBB
-
-

Triggering Examples

-
import AAA
-import ZZZ
-import ↓BBB
-import CCC
-
-
import DDD
-// comment
-import CCC
-import ↓AAA
-
-
@testable import CCC
-import   ↓AAA
-
-
import CCC
-@testable import   ↓AAA
-
-
import FFF.B
-import ↓EEE.A
-#if os(Linux)
-import DDD.A
-import EEE.B
-#else
-import DDD.B
-import ↓CCC
-#endif
-import AAA
-import BBB
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/statement_position.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/statement_position.html deleted file mode 100644 index 7f7006243..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/statement_position.html +++ /dev/null @@ -1,373 +0,0 @@ - - - - statement_position Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Statement Position

- -

Else and catch should be on the same line, one space after the previous declaration.

- -
    -
  • Identifier: statement_position
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: (statement_mode) default, (severity) warning
  • -
-

Non Triggering Examples

-
} else if {
-
-
} else {
-
-
} catch {
-
-
"}else{"
-
-
struct A { let catchphrase: Int }
-let a = A(
- catchphrase: 0
-)
-
-
struct A { let `catch`: Int }
-let a = A(
- `catch`: 0
-)
-
-

Triggering Examples

-
↓}else if {
-
-
↓}  else {
-
-
↓}
-catch {
-
-
↓}
-      catch {
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/static_operator.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/static_operator.html deleted file mode 100644 index 50bd7425e..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/static_operator.html +++ /dev/null @@ -1,399 +0,0 @@ - - - - static_operator Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Static Operator

- -

Operators should be declared as static functions, not free functions.

- -
    -
  • Identifier: static_operator
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class A: Equatable {
-  static func == (lhs: A, rhs: A) -> Bool {
-    return false
-  }
-
-
class A<T>: Equatable {
-    static func == <T>(lhs: A<T>, rhs: A<T>) -> Bool {
-        return false
-    }
-
-
public extension Array where Element == Rule {
-  static func == (lhs: Array, rhs: Array) -> Bool {
-    if lhs.count != rhs.count { return false }
-    return !zip(lhs, rhs).contains { !$0.0.isEqualTo($0.1) }
-  }
-}
-
-
private extension Optional where Wrapped: Comparable {
-  static func < (lhs: Optional, rhs: Optional) -> Bool {
-    switch (lhs, rhs) {
-    case let (lhs?, rhs?):
-      return lhs < rhs
-    case (nil, _?):
-      return true
-    default:
-      return false
-    }
-  }
-}
-
-

Triggering Examples

-
↓func == (lhs: A, rhs: A) -> Bool {
-  return false
-}
-
-
↓func == <T>(lhs: A<T>, rhs: A<T>) -> Bool {
-  return false
-}
-
-
↓func == (lhs: [Rule], rhs: [Rule]) -> Bool {
-  if lhs.count != rhs.count { return false }
-  return !zip(lhs, rhs).contains { !$0.0.isEqualTo($0.1) }
-}
-
-
private ↓func < <T: Comparable>(lhs: T?, rhs: T?) -> Bool {
-  switch (lhs, rhs) {
-  case let (lhs?, rhs?):
-    return lhs < rhs
-  case (nil, _?):
-    return true
-  default:
-    return false
-  }
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/strict_fileprivate.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/strict_fileprivate.html deleted file mode 100644 index 1973f6f2c..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/strict_fileprivate.html +++ /dev/null @@ -1,383 +0,0 @@ - - - - strict_fileprivate Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Strict fileprivate

- -

fileprivate should be avoided.

- -
    -
  • Identifier: strict_fileprivate
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
extension String {}
-
-
private extension String {}
-
-
public
-extension String {}
-
-
open extension
-  String {}
-
-
internal extension String {}
-
-

Triggering Examples

-
↓fileprivate extension String {}
-
-
↓fileprivate
-  extension String {}
-
-
↓fileprivate extension
-  String {}
-
-
extension String {
-  ↓fileprivate func Something(){}
-}
-
-
class MyClass {
-  ↓fileprivate let myInt = 4
-}
-
-
class MyClass {
-  ↓fileprivate(set) var myInt = 4
-}
-
-
struct Outter {
-  struct Inter {
-    ↓fileprivate struct Inner {}
-  }
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/strong_iboutlet.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/strong_iboutlet.html deleted file mode 100644 index 8bbcf4fb4..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/strong_iboutlet.html +++ /dev/null @@ -1,365 +0,0 @@ - - - - strong_iboutlet Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Strong IBOutlet

- -

@IBOutlets shouldn’t be declared as weak.

- -
    -
  • Identifier: strong_iboutlet
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class ViewController: UIViewController {
-    @IBOutlet var label: UILabel?
-}
-
-
class ViewController: UIViewController {
-    weak var label: UILabel?
-}
-
-

Triggering Examples

-
class ViewController: UIViewController {
-    @IBOutlet ↓weak var label: UILabel?
-}
-
-
class ViewController: UIViewController {
-    @IBOutlet ↓unowned var label: UILabel!
-}
-
-
class ViewController: UIViewController {
-    @IBOutlet ↓weak var textField: UITextField?
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/superfluous_disable_command.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/superfluous_disable_command.html deleted file mode 100644 index e35fdfbe7..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/superfluous_disable_command.html +++ /dev/null @@ -1,343 +0,0 @@ - - - - superfluous_disable_command Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Superfluous Disable Command

- -

SwiftLint ‘disable’ commands are superfluous when the disabled rule would not have triggered a violation in the disabled region. Use “ - ” if you wish to document a command.

- -
    -
  • Identifier: superfluous_disable_command
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/switch_case_alignment.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/switch_case_alignment.html deleted file mode 100644 index 0ff8ee319..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/switch_case_alignment.html +++ /dev/null @@ -1,421 +0,0 @@ - - - - switch_case_alignment Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Switch and Case Statement Alignment

- -

Case statements should vertically align with their enclosing switch statement, or indented if configured otherwise.

- -
    -
  • Identifier: switch_case_alignment
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, indented_cases: false
  • -
-

Non Triggering Examples

-
switch someBool {
-case true: // case 1
-    print('red')
-case false:
-    /*
-    case 2
-    */
-    if case let .someEnum(val) = someFunc() {
-        print('blue')
-    }
-}
-enum SomeEnum {
-    case innocent
-}
-
-
if aBool {
-    switch someBool {
-    case true:
-        print('red')
-    case false:
-        print('blue')
-    }
-}
-
-
switch someInt {
-// comments ignored
-case 0:
-    // zero case
-    print('Zero')
-case 1:
-    print('One')
-default:
-    print('Some other number')
-}
-
-

Triggering Examples

-
switch someBool {
-    ↓case true:
-        print("red")
-    ↓case false:
-        print("blue")
-}
-
-
if aBool {
-    switch someBool {
-        ↓case true:
-            print('red')
-        ↓case false:
-            print('blue')
-    }
-}
-
-
switch someInt {
-    ↓case 0:
-        print('Zero')
-    ↓case 1:
-        print('One')
-    ↓default:
-        print('Some other number')
-}
-
-
switch someBool {
-case true:
-    print('red')
-    ↓case false:
-        print('blue')
-}
-
-
if aBool {
-    switch someBool {
-        ↓case true:
-        print('red')
-    case false:
-    print('blue')
-    }
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/switch_case_on_newline.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/switch_case_on_newline.html deleted file mode 100644 index 21d7cc502..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/switch_case_on_newline.html +++ /dev/null @@ -1,459 +0,0 @@ - - - - switch_case_on_newline Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Switch Case on Newline

- -

Cases inside a switch should always be on a newline

- -
    -
  • Identifier: switch_case_on_newline
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
/*case 1: */return true
-
-
//case 1:
- return true
-
-
let x = [caseKey: value]
-
-
let x = [key: .default]
-
-
if case let .someEnum(value) = aFunction([key: 2]) { }
-
-
guard case let .someEnum(value) = aFunction([key: 2]) { }
-
-
for case let .someEnum(value) = aFunction([key: 2]) { }
-
-
enum Environment {
- case development
-}
-
-
enum Environment {
- case development(url: URL)
-}
-
-
enum Environment {
- case development(url: URL) // staging
-}
-
-
switch foo {
-    case 1:
- return true
-}
-
-
switch foo {
-    default:
- return true
-}
-
-
switch foo {
-    case let value:
- return true
-}
-
-
switch foo {
-    case .myCase: // error from network
- return true
-}
-
-
switch foo {
-    case let .myCase(value) where value > 10:
- return false
-}
-
-
switch foo {
-    case let .myCase(value)
- where value > 10:
- return false
-}
-
-
switch foo {
-    case let .myCase(code: lhsErrorCode, description: _)
- where lhsErrorCode > 10:
-return false
-}
-
-
switch foo {
-    case #selector(aFunction(_:)):
- return false
-
-}
-
-
do {
-  let loadedToken = try tokenManager.decodeToken(from: response)
-  return loadedToken
-} catch { throw error }
-
-

Triggering Examples

-
switch foo {
-    ↓case 1: return true
-}
-
-
switch foo {
-    ↓case let value: return true
-}
-
-
switch foo {
-    ↓default: return true
-}
-
-
switch foo {
-    ↓case "a string": return false
-}
-
-
switch foo {
-    ↓case .myCase: return false // error from network
-}
-
-
switch foo {
-    ↓case let .myCase(value) where value > 10: return false
-}
-
-
switch foo {
-    ↓case #selector(aFunction(_:)): return false
-
-}
-
-
switch foo {
-    ↓case let .myCase(value)
- where value > 10: return false
-}
-
-
switch foo {
-    ↓case .first,
- .second: return false
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/syntactic_sugar.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/syntactic_sugar.html deleted file mode 100644 index 4a0eaa135..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/syntactic_sugar.html +++ /dev/null @@ -1,424 +0,0 @@ - - - - syntactic_sugar Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Syntactic Sugar

- -

Shorthand syntactic sugar should be used, i.e. [Int] instead of Array.

- -
    -
  • Identifier: syntactic_sugar
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let x: [Int]
-
-
let x: [Int: String]
-
-
let x: Int?
-
-
func x(a: [Int], b: Int) -> [Int: Any]
-
-
let x: Int!
-
-
extension Array {
-  func x() { }
-}
-
-
extension Dictionary {
-  func x() { }
-}
-
-
let x: CustomArray<String>
-
-
var currentIndex: Array<OnboardingPage>.Index?
-
-
func x(a: [Int], b: Int) -> Array<Int>.Index
-
-
unsafeBitCast(nonOptionalT, to: Optional<T>.self)
-
-
unsafeBitCast(someType, to: Swift.Array<T>.self)
-
-
IndexingIterator<Array<Dictionary<String, AnyObject>>>.self
-
-
let y = Optional<String>.Type
-
-
type is Optional<String>.Type
-
-
let x: Foo.Optional<String>
-
-
let x = case Optional<Any>.none = obj
-
-
let a = Swift.Optional<String?>.none
-
-

Triggering Examples

-
let x: ↓Array<String>
-
-
let x: ↓Dictionary<Int, String>
-
-
let x: ↓Optional<Int>
-
-
let x: ↓ImplicitlyUnwrappedOptional<Int>
-
-
let x: ↓Swift.Array<String>
-
-
func x(a: ↓Array<Int>, b: Int) -> [Int: Any]
-
-
func x(a: ↓Swift.Array<Int>, b: Int) -> [Int: Any]
-
-
func x(a: [Int], b: Int) -> ↓Dictionary<Int, String>
-
-
let x = y as? ↓Array<[String: Any]>
-
-
let x = Box<Array<T>>()
-
-
func x() -> Box<↓Array<T>>
-
-
func x() -> ↓Dictionary<String, Any>?
-
-
typealias Document = ↓Dictionary<String, T?>
-
-
func x(_ y: inout ↓Array<T>)
-
-
let x:↓Dictionary<String, ↓Dictionary<Int, Int>>
-
-
func x() -> Any { return ↓Dictionary<Int, String>()}
-
-
let x = ↓Array<String>.array(of: object)
-
-
let x = ↓Swift.Array<String>.array(of: object)
-
-
@_specialize(where S == ↓Array<Character>)
-public init<S: Sequence>(_ elements: S)
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/test_case_accessibility.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/test_case_accessibility.html deleted file mode 100644 index fd10cffda..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/test_case_accessibility.html +++ /dev/null @@ -1,431 +0,0 @@ - - - - test_case_accessibility Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Test case accessibility

- -

Test cases should only contain private non-test members.

- -
    -
  • Identifier: test_case_accessibility
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, allowed_prefixes: [[]]
  • -
-

Non Triggering Examples

-
let foo: String?
-
-class FooTests: XCTestCase {
-    static let allTests: [String] = []
-
-    private let foo: String {
-        let nestedMember = "hi"
-        return nestedMember
-    }
-
-    override static func setUp() {
-        super.setUp()
-    }
-
-    override func setUp() {
-        super.setUp()
-    }
-
-    override func setUpWithError() throws {
-        try super.setUpWithError()
-    }
-
-    override static func tearDown() {
-        super.tearDown()
-    }
-
-    override func tearDown() {
-        super.tearDown()
-    }
-
-    override func tearDownWithError() {
-        try super.tearDownWithError()
-    }
-
-    override func someFutureXCTestFunction() {
-        super.someFutureXCTestFunction()
-    }
-
-    func testFoo() {
-        XCTAssertTrue(true)
-    }
-
-    func testBar() {
-        func nestedFunc() {}
-    }
-
-    private someFunc(hasParam: Bool) {}
-}
-
-
class FooTests: XCTestCase {
-    func allowedPrefixTestFoo() {}
-}
-
-
class Foobar {
-    func setUp() {}
-
-    func tearDown() {}
-
-    func testFoo() {}
-}
-
-

Triggering Examples

-
class FooTests: XCTestCase {
-    ↓var foo: String?
-    ↓let bar: String?
-
-    ↓static func foo() {}
-
-    ↓func setUp(withParam: String) {}
-
-    ↓func foobar() {}
-
-    ↓func not_testBar() {}
-
-    ↓enum Nested {}
-
-    ↓static func testFoo() {}
-
-    ↓static func allTests() {}
-
-    ↓func testFoo(hasParam: Bool) {}
-}
-
-final class BarTests: XCTestCase {
-    ↓class Nested {}
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/todo.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/todo.html deleted file mode 100644 index 9fd3c03e5..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/todo.html +++ /dev/null @@ -1,375 +0,0 @@ - - - - todo Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Todo

- -

TODOs and FIXMEs should be resolved.

- -
    -
  • Identifier: todo
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
// notaTODO:
-
-
-
// notaFIXME:
-
-
-

Triggering Examples

-
// ↓TODO:
-
-
-
// ↓FIXME:
-
-
-
// ↓TODO(note)
-
-
-
// ↓FIXME(note)
-
-
-
/* ↓FIXME: */
-
-
-
/* ↓TODO: */
-
-
-
/** ↓FIXME: */
-
-
-
/** ↓TODO: */
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/toggle_bool.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/toggle_bool.html deleted file mode 100644 index dca8fc88f..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/toggle_bool.html +++ /dev/null @@ -1,369 +0,0 @@ - - - - toggle_bool Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Toggle Bool

- -

Prefer someBool.toggle() over someBool = !someBool.

- -
    -
  • Identifier: toggle_bool
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
isHidden.toggle()
-
-
-
view.clipsToBounds.toggle()
-
-
-
func foo() { abc.toggle() }
-
-
view.clipsToBounds = !clipsToBounds
-
-
-
disconnected = !connected
-
-
-
result = !result.toggle()
-
-

Triggering Examples

-
↓isHidden = !isHidden
-
-
-
↓view.clipsToBounds = !view.clipsToBounds
-
-
-
func foo() { ↓abc = !abc }
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/trailing_closure.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/trailing_closure.html deleted file mode 100644 index a3e763042..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/trailing_closure.html +++ /dev/null @@ -1,381 +0,0 @@ - - - - trailing_closure Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Trailing Closure

- -

Trailing closure syntax should be used whenever possible.

- -
    -
  • Identifier: trailing_closure
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, only_single_muted_parameter: false
  • -
-

Non Triggering Examples

-
foo.map { $0 + 1 }
-
-
-
foo.bar()
-
-
-
foo.reduce(0) { $0 + 1 }
-
-
-
if let foo = bar.map({ $0 + 1 }) { }
-
-
-
foo.something(param1: { $0 }, param2: { $0 + 1 })
-
-
-
offsets.sorted { $0.offset < $1.offset }
-
-
-
foo.something({ return 1 }())
-
-
foo.something({ return $0 }(1))
-
-
foo.something(0, { return 1 }())
-
-

Triggering Examples

-
↓foo.map({ $0 + 1 })
-
-
-
↓foo.reduce(0, combine: { $0 + 1 })
-
-
-
↓offsets.sorted(by: { $0.offset < $1.offset })
-
-
-
↓foo.something(0, { $0 + 1 })
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/trailing_comma.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/trailing_comma.html deleted file mode 100644 index 07dd9fa8c..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/trailing_comma.html +++ /dev/null @@ -1,407 +0,0 @@ - - - - trailing_comma Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Trailing Comma

- -

Trailing commas in arrays and dictionaries should be avoided/enforced.

- -
    -
  • Identifier: trailing_comma
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, mandatory_comma: false
  • -
-

Non Triggering Examples

-
let foo = [1, 2, 3]
-
-
-
let foo = []
-
-
-
let foo = [:]
-
-
-
let foo = [1: 2, 2: 3]
-
-
-
let foo = [Void]()
-
-
-
let example = [ 1,
- 2
- // 3,
-]
-
-
foo([1: "\(error)"])
-
-
-

Triggering Examples

-
let foo = [1, 2, 3↓,]
-
-
-
let foo = [1, 2, 3↓, ]
-
-
-
let foo = [1, 2, 3   ↓,]
-
-
-
let foo = [1: 2, 2: 3↓, ]
-
-
-
struct Bar {
- let foo = [1: 2, 2: 3↓, ]
-}
-
-
-
let foo = [1, 2, 3↓,] + [4, 5, 6↓,]
-
-
-
let example = [ 1,
-2↓,
- // 3,
-]
-
-
let foo = ["אבג", "αβγ", "🇺🇸"↓,]
-
-
-
class C {
- #if true
- func f() {
- let foo = [1, 2, 3↓,]
- }
- #endif
-}
-
-
foo([1: "\(error)"↓,])
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/trailing_newline.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/trailing_newline.html deleted file mode 100644 index 8e6f9d811..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/trailing_newline.html +++ /dev/null @@ -1,354 +0,0 @@ - - - - trailing_newline Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Trailing Newline

- -

Files should have a single trailing newline.

- -
    -
  • Identifier: trailing_newline
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let a = 0
-
-
-

Triggering Examples

-
let a = 0
-
-
let a = 0
-
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/trailing_semicolon.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/trailing_semicolon.html deleted file mode 100644 index 838d2edb5..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/trailing_semicolon.html +++ /dev/null @@ -1,357 +0,0 @@ - - - - trailing_semicolon Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Trailing Semicolon

- -

Lines should not have trailing semicolons.

- -
    -
  • Identifier: trailing_semicolon
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let a = 0
-
-
-
let a = 0; let b = 0
-
-

Triggering Examples

-
let a = 0↓;
-
-
-
let a = 0↓;
-let b = 1
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/trailing_whitespace.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/trailing_whitespace.html deleted file mode 100644 index 19a0ee94f..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/trailing_whitespace.html +++ /dev/null @@ -1,366 +0,0 @@ - - - - trailing_whitespace Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Trailing Whitespace

- -

Lines should not have trailing whitespace.

- -
    -
  • Identifier: trailing_whitespace
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, ignores_empty_lines: false, ignores_comments: true
  • -
-

Non Triggering Examples

-
let name: String
-
-
-
//
-
-
-
// 
-
-
-
let name: String //
-
-
-
let name: String // 
-
-
-

Triggering Examples

-
let name: String 
-
-
-
/* */ let name: String 
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/type_body_length.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/type_body_length.html deleted file mode 100644 index 1563af66d..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/type_body_length.html +++ /dev/null @@ -1,3420 +0,0 @@ - - - - type_body_length Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Type Body Length

- -

Type bodies should not span too many lines.

- -
    -
  • Identifier: type_body_length
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning: 200, error: 350
  • -
-

Non Triggering Examples

-
class Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-}
-
-
-
class Abc {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-}
-
-
-
class Abc {
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-}
-
-
-
class Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-
-/* this is
-a multiline comment
-*/
-}
-
-
-
struct Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-}
-
-
-
struct Abc {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-}
-
-
-
struct Abc {
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-}
-
-
-
struct Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-
-/* this is
-a multiline comment
-*/
-}
-
-
-
enum Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-}
-
-
-
enum Abc {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-}
-
-
-
enum Abc {
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-}
-
-
-
enum Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-
-/* this is
-a multiline comment
-*/
-}
-
-
-

Triggering Examples

-
↓class Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-}
-
-
-
↓struct Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-}
-
-
-
↓enum Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-}
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/type_contents_order.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/type_contents_order.html deleted file mode 100644 index b0a8ed6ea..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/type_contents_order.html +++ /dev/null @@ -1,559 +0,0 @@ - - - - type_contents_order Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Type Contents Order

- -

Specifies the order of subtypes, properties, methods & more within a type.

- -
    -
  • Identifier: type_contents_order
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, order: [[SwiftLintFramework.TypeContent.case], [SwiftLintFramework.TypeContent.typeAlias, SwiftLintFramework.TypeContent.associatedType], [SwiftLintFramework.TypeContent.subtype], [SwiftLintFramework.TypeContent.typeProperty], [SwiftLintFramework.TypeContent.instanceProperty], [SwiftLintFramework.TypeContent.ibInspectable], [SwiftLintFramework.TypeContent.ibOutlet], [SwiftLintFramework.TypeContent.initializer], [SwiftLintFramework.TypeContent.typeMethod], [SwiftLintFramework.TypeContent.viewLifeCycleMethod], [SwiftLintFramework.TypeContent.ibAction], [SwiftLintFramework.TypeContent.otherMethod], [SwiftLintFramework.TypeContent.subscript], [SwiftLintFramework.TypeContent.deinitializer]]
  • -
-

Non Triggering Examples

-
class TestViewController: UIViewController {
-    // Type Aliases
-    typealias CompletionHandler = ((TestEnum) -> Void)
-
-    // Subtypes
-    class TestClass {
-        // 10 lines
-    }
-
-    struct TestStruct {
-        // 3 lines
-    }
-
-    enum TestEnum {
-        // 5 lines
-    }
-
-    // Type Properties
-    static let cellIdentifier: String = "AmazingCell"
-
-    // Instance Properties
-    var shouldLayoutView1: Bool!
-    weak var delegate: TestViewControllerDelegate?
-    private var hasLayoutedView1: Bool = false
-    private var hasLayoutedView2: Bool = false
-
-    private var hasAnyLayoutedView: Bool {
-         return hasLayoutedView1 || hasLayoutedView2
-    }
-
-    // IBOutlets
-    @IBOutlet private var view1: UIView!
-    @IBOutlet private var view2: UIView!
-
-    // Initializers
-    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
-        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
-    }
-
-    required init?(coder aDecoder: NSCoder) {
-        fatalError("init(coder:) has not been implemented")
-    }
-
-    // Type Methods
-    static func makeViewController() -> TestViewController {
-        // some code
-    }
-
-    // View Life-Cycle Methods
-    override func viewDidLoad() {
-        super.viewDidLoad()
-
-        view1.setNeedsLayout()
-        view1.layoutIfNeeded()
-        hasLayoutedView1 = true
-    }
-
-    override func viewDidLayoutSubviews() {
-        super.viewDidLayoutSubviews()
-
-        view2.setNeedsLayout()
-        view2.layoutIfNeeded()
-        hasLayoutedView2 = true
-    }
-
-    // IBActions
-    @IBAction func goNextButtonPressed() {
-        goToNextVc()
-        delegate?.didPressTrackedButton()
-    }
-
-    // Other Methods
-    func goToNextVc() { /* TODO */ }
-
-    func goToInfoVc() { /* TODO */ }
-
-    func goToRandomVc() {
-        let viewCtrl = getRandomVc()
-        present(viewCtrl, animated: true)
-    }
-
-    private func getRandomVc() -> UIViewController { return UIViewController() }
-
-    // Subscripts
-    subscript(_ someIndexThatIsNotEvenUsed: Int) -> String {
-        get {
-            return "This is just a test"
-        }
-
-        set {
-            log.warning("Just a test", newValue)
-        }
-    }
-
-    deinit {
-        log.debug("deinit")
-    },
-}
-
-

Triggering Examples

-
class TestViewController: UIViewController {
-    // Subtypes
-    ↓class TestClass {
-        // 10 lines
-    }
-
-    // Type Aliases
-    typealias CompletionHandler = ((TestEnum) -> Void)
-}
-
-
class TestViewController: UIViewController {
-    // Stored Type Properties
-    ↓static let cellIdentifier: String = "AmazingCell"
-
-    // Subtypes
-    class TestClass {
-        // 10 lines
-    }
-}
-
-
class TestViewController: UIViewController {
-    // Stored Instance Properties
-    ↓var shouldLayoutView1: Bool!
-
-    // Stored Type Properties
-    static let cellIdentifier: String = "AmazingCell"
-}
-
-
class TestViewController: UIViewController {
-    // IBOutlets
-    @IBOutlet private ↓var view1: UIView!
-
-    // Computed Instance Properties
-    private var hasAnyLayoutedView: Bool {
-         return hasLayoutedView1 || hasLayoutedView2
-    }
-}
-
-
class TestViewController: UIViewController {
-
-    // deinitializer
-    ↓deinit {
-        log.debug("deinit")
-    }
-
-    // Initializers
-    override ↓init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
-        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
-    }
-
-    // IBOutlets
-    @IBOutlet private var view1: UIView!
-    @IBOutlet private var view2: UIView!
-}
-
-
class TestViewController: UIViewController {
-    // View Life-Cycle Methods
-    override ↓func viewDidLoad() {
-        super.viewDidLoad()
-
-        view1.setNeedsLayout()
-        view1.layoutIfNeeded()
-        hasLayoutedView1 = true
-    }
-
-    // Type Methods
-    static func makeViewController() -> TestViewController {
-        // some code
-    }
-}
-
-
class TestViewController: UIViewController {
-    // IBActions
-    @IBAction ↓func goNextButtonPressed() {
-        goToNextVc()
-        delegate?.didPressTrackedButton()
-    }
-
-    // View Life-Cycle Methods
-    override func viewDidLoad() {
-        super.viewDidLoad()
-
-        view1.setNeedsLayout()
-        view1.layoutIfNeeded()
-        hasLayoutedView1 = true
-    }
-}
-
-
class TestViewController: UIViewController {
-    // Other Methods
-    ↓func goToNextVc() { /* TODO */ }
-
-    // IBActions
-    @IBAction func goNextButtonPressed() {
-        goToNextVc()
-        delegate?.didPressTrackedButton()
-    }
-}
-
-
class TestViewController: UIViewController {
-    // Subscripts
-    ↓subscript(_ someIndexThatIsNotEvenUsed: Int) -> String {
-        get {
-            return "This is just a test"
-        }
-
-        set {
-            log.warning("Just a test", newValue)
-        }
-    }
-
-    // MARK: Other Methods
-    func goToNextVc() { /* TODO */ }
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/type_name.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/type_name.html deleted file mode 100644 index 75b13a5fd..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/type_name.html +++ /dev/null @@ -1,459 +0,0 @@ - - - - type_name Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Type Name

- -

Type name should only contain alphanumeric characters, start with an uppercase character and span between 3 and 40 characters in length.

- -
    -
  • Identifier: type_name
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: (min_length) w/e: 3/0, (max_length) w/e: 40/1000, excluded: [], allowed_symbols: [], validates_start_with_lowercase: true
  • -
-

Non Triggering Examples

-
class MyType {}
-
-
private class _MyType {}
-
-
class AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA {}
-
-
class MyView_Previews: PreviewProvider
-
-
private class _MyView_Previews: PreviewProvider
-
-
struct MyType {}
-
-
private struct _MyType {}
-
-
struct AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA {}
-
-
struct MyView_Previews: PreviewProvider
-
-
private struct _MyView_Previews: PreviewProvider
-
-
enum MyType {}
-
-
private enum _MyType {}
-
-
enum AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA {}
-
-
enum MyView_Previews: PreviewProvider
-
-
private enum _MyView_Previews: PreviewProvider
-
-
typealias Foo = Void
-
-
private typealias Foo = Void
-
-
protocol Foo {
-  associatedtype Bar
-}
-
-
protocol Foo {
-  associatedtype Bar: Equatable
-}
-
-
enum MyType {
-case value
-}
-
-

Triggering Examples

-
class ↓myType {}
-
-
class ↓_MyType {}
-
-
private class ↓MyType_ {}
-
-
class ↓My {}
-
-
class ↓AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA {}
-
-
class ↓MyView_Previews
-
-
private class ↓_MyView_Previews
-
-
class ↓MyView_Previews_Previews: PreviewProvider
-
-
struct ↓myType {}
-
-
struct ↓_MyType {}
-
-
private struct ↓MyType_ {}
-
-
struct ↓My {}
-
-
struct ↓AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA {}
-
-
struct ↓MyView_Previews
-
-
private struct ↓_MyView_Previews
-
-
struct ↓MyView_Previews_Previews: PreviewProvider
-
-
enum ↓myType {}
-
-
enum ↓_MyType {}
-
-
private enum ↓MyType_ {}
-
-
enum ↓My {}
-
-
enum ↓AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA {}
-
-
enum ↓MyView_Previews
-
-
private enum ↓_MyView_Previews
-
-
enum ↓MyView_Previews_Previews: PreviewProvider
-
-
typealias ↓X = Void
-
-
private typealias ↓Foo_Bar = Void
-
-
private typealias ↓foo = Void
-
-
typealias ↓AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA = Void
-
-
protocol Foo {
-  associatedtype ↓X
-}
-
-
protocol Foo {
-  associatedtype ↓Foo_Bar: Equatable
-}
-
-
protocol Foo {
-  associatedtype ↓AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unavailable_function.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unavailable_function.html deleted file mode 100644 index d070e41b6..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unavailable_function.html +++ /dev/null @@ -1,394 +0,0 @@ - - - - unavailable_function Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unavailable Function

- -

Unimplemented functions should be marked as unavailable.

- -
    -
  • Identifier: unavailable_function
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class ViewController: UIViewController {
-  @available(*, unavailable)
-  public required init?(coder aDecoder: NSCoder) {
-    preconditionFailure("init(coder:) has not been implemented")
-  }
-}
-
-
func jsonValue(_ jsonString: String) -> NSObject {
-   let data = jsonString.data(using: .utf8)!
-   let result = try! JSONSerialization.jsonObject(with: data, options: [])
-   if let dict = (result as? [String: Any])?.bridge() {
-    return dict
-   } else if let array = (result as? [Any])?.bridge() {
-    return array
-   }
-   fatalError()
-}
-
-
func resetOnboardingStateAndCrash() -> Never {
-    resetUserDefaults()
-    // Crash the app to re-start the onboarding flow.
-    fatalError("Onboarding re-start crash.")
-}
-
-

Triggering Examples

-
class ViewController: UIViewController {
-  public required ↓init?(coder aDecoder: NSCoder) {
-    fatalError("init(coder:) has not been implemented")
-  }
-}
-
-
class ViewController: UIViewController {
-  public required ↓init?(coder aDecoder: NSCoder) {
-    let reason = "init(coder:) has not been implemented"
-    fatalError(reason)
-  }
-}
-
-
class ViewController: UIViewController {
-  public required ↓init?(coder aDecoder: NSCoder) {
-    preconditionFailure("init(coder:) has not been implemented")
-  }
-}
-
-
func resetOnboardingStateAndCrash() {
-    resetUserDefaults()
-    // Crash the app to re-start the onboarding flow.
-    fatalError("Onboarding re-start crash.")
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unneeded_break_in_switch.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unneeded_break_in_switch.html deleted file mode 100644 index df964c7e5..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unneeded_break_in_switch.html +++ /dev/null @@ -1,406 +0,0 @@ - - - - unneeded_break_in_switch Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unneeded Break in Switch

- -

Avoid using unneeded break statements.

- -
    -
  • Identifier: unneeded_break_in_switch
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
switch foo {
-case .bar:
-    break
-}
-
-
switch foo {
-default:
-    break
-}
-
-
switch foo {
-case .bar:
-    for i in [0, 1, 2] { break }
-}
-
-
switch foo {
-case .bar:
-    if true { break }
-}
-
-
switch foo {
-case .bar:
-    something()
-}
-
-
let items = [Int]()
-for item in items {
-    if bar() {
-        do {
-            try foo()
-        } catch {
-            bar()
-            break
-        }
-    }
-}
-
-

Triggering Examples

-
switch foo {
-case .bar:
-    something()
-    ↓break
-}
-
-
switch foo {
-case .bar:
-    something()
-    ↓break // comment
-}
-
-
switch foo {
-default:
-    something()
-    ↓break
-}
-
-
switch foo {
-case .foo, .foo2 where condition:
-    something()
-    ↓break
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unneeded_parentheses_in_closure_argument.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unneeded_parentheses_in_closure_argument.html deleted file mode 100644 index 0cff6eb59..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unneeded_parentheses_in_closure_argument.html +++ /dev/null @@ -1,392 +0,0 @@ - - - - unneeded_parentheses_in_closure_argument Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unneeded Parentheses in Closure Argument

- -

Parentheses are not needed when declaring closure arguments.

- -
    -
  • Identifier: unneeded_parentheses_in_closure_argument
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let foo = { (bar: Int) in }
-
-
-
let foo = { bar, _  in }
-
-
-
let foo = { bar in }
-
-
-
let foo = { bar -> Bool in return true }
-
-
-

Triggering Examples

-
call(arg: { ↓(bar) in })
-
-
-
call(arg: { ↓(bar, _) in })
-
-
-
let foo = { ↓(bar) -> Bool in return true }
-
-
-
foo.map { ($0, $0) }.forEach { ↓(x, y) in }
-
-
foo.bar { [weak self] ↓(x, y) in }
-
-
[].first { ↓(temp) in
-    [].first { ↓(temp) in
-        [].first { ↓(temp) in
-            _ = temp
-            return false
-        }
-        return false
-    }
-    return false
-}
-
-
[].first { temp in
-    [].first { ↓(temp) in
-        [].first { ↓(temp) in
-            _ = temp
-            return false
-        }
-        return false
-    }
-    return false
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unowned_variable_capture.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unowned_variable_capture.html deleted file mode 100644 index 0e70ac87c..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unowned_variable_capture.html +++ /dev/null @@ -1,363 +0,0 @@ - - - - unowned_variable_capture Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unowned Variable Capture

- -

Prefer capturing references as weak to avoid potential crashes.

- -
    -
  • Identifier: unowned_variable_capture
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
foo { [weak self] in _ }
-
-
foo { [weak self] param in _ }
-
-
foo { [weak bar] in _ }
-
-
foo { [weak bar] param in _ }
-
-
foo { bar in _ }
-
-
foo { $0 }
-
-

Triggering Examples

-
foo { [↓unowned self] in _ }
-
-
foo { [↓unowned bar] in _ }
-
-
foo { [bar, ↓unowned self] in _ }
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/untyped_error_in_catch.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/untyped_error_in_catch.html deleted file mode 100644 index a95956c3c..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/untyped_error_in_catch.html +++ /dev/null @@ -1,392 +0,0 @@ - - - - untyped_error_in_catch Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Untyped Error in Catch

- -

Catch statements should not declare error variables without type casting.

- -
    -
  • Identifier: untyped_error_in_catch
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
do {
-  try foo()
-} catch {}
-
-
do {
-  try foo()
-} catch Error.invalidOperation {
-} catch {}
-
-
do {
-  try foo()
-} catch let error as MyError {
-} catch {}
-
-
do {
-  try foo()
-} catch var error as MyError {
-} catch {}
-
-

Triggering Examples

-
do {
-  try foo()
-} ↓catch var error {}
-
-
do {
-  try foo()
-} ↓catch let error {}
-
-
do {
-  try foo()
-} ↓catch let someError {}
-
-
do {
-  try foo()
-} ↓catch var someError {}
-
-
do {
-  try foo()
-} ↓catch let e {}
-
-
do {
-  try foo()
-} ↓catch(let error) {}
-
-
do {
-  try foo()
-} ↓catch (let error) {}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_capture_list.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_capture_list.html deleted file mode 100644 index 4f2af937e..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_capture_list.html +++ /dev/null @@ -1,435 +0,0 @@ - - - - unused_capture_list Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unused Capture List

- -

Unused reference in a capture list should be removed.

- -
    -
  • Identifier: unused_capture_list
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
[1, 2].map {
-    [ weak
-      delegate,
-      unowned
-      self
-    ] num in
-    delegate.handle(num)
-}
-
-
[1, 2].map { [weak self] num in
-    self?.handle(num)
-}
-
-
let failure: Failure = { [weak self, unowned delegate = self.delegate!] foo in
-    delegate.handle(foo, self)
-}
-
-
numbers.forEach({
-    [weak handler] in
-    handler?.handle($0)
-})
-
-
withEnvironment(apiService: MockService(fetchProjectResponse: project)) {
-    [Device.phone4_7inch, Device.phone5_8inch, Device.pad].forEach { device in
-        device.handle()
-    }
-}
-
-
{ [foo] _ in foo.bar() }()
-
-
sizes.max().flatMap { [(offset: offset, size: $0)] } ?? []
-
-
[1, 2].map { [self] num in
-    handle(num)
-}
-
-
[1, 2].map { [unowned self] num in
-    handle(num)
-}
-
-
[1, 2].map { [self, unowned delegate = self.delegate!] num in
-    delegate.handle(num)
-}
-
-
[1, 2].map { [unowned self, unowned delegate = self.delegate!] num in
-    delegate.handle(num)
-}
-
-
[1, 2].map {
-    [ weak
-      delegate,
-      self
-    ] num in
-    delegate.handle(num)
-}
-
-
rx.onViewDidAppear.subscribe(onNext: { [unowned self] in
-      doSomething()
-}).disposed(by: disposeBag)
-
-

Triggering Examples

-
[1, 2].map { [↓weak self] num in
-    print(num)
-}
-
-
let failure: Failure = { [weak self, ↓unowned delegate = self.delegate!] foo in
-    self?.handle(foo)
-}
-
-
let failure: Failure = { [↓weak self, ↓unowned delegate = self.delegate!] foo in
-    print(foo)
-}
-
-
numbers.forEach({
-    [weak handler] in
-    print($0)
-})
-
-
numbers.forEach({
-    [self, weak handler] in
-    print($0)
-})
-
-
withEnvironment(apiService: MockService(fetchProjectResponse: project)) { [↓foo] in
-    [Device.phone4_7inch, Device.phone5_8inch, Device.pad].forEach { device in
-        device.handle()
-    }
-}
-
-
{ [↓foo] in _ }()
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_closure_parameter.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_closure_parameter.html deleted file mode 100644 index c87c6bb53..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_closure_parameter.html +++ /dev/null @@ -1,474 +0,0 @@ - - - - unused_closure_parameter Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unused Closure Parameter

- -

Unused parameter in a closure should be replaced with _.

- -
    -
  • Identifier: unused_closure_parameter
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
[1, 2].map { $0 + 1 }
-
-
-
[1, 2].map({ $0 + 1 })
-
-
-
[1, 2].map { number in
- number + 1 
-}
-
-
-
[1, 2].map { _ in
- 3 
-}
-
-
-
[1, 2].something { number, idx in
- return number * idx
-}
-
-
-
let isEmpty = [1, 2].isEmpty()
-
-
-
violations.sorted(by: { lhs, rhs in 
- return lhs.location > rhs.location
-})
-
-
-
rlmConfiguration.migrationBlock.map { rlmMigration in
-return { migration, schemaVersion in
-rlmMigration(migration.rlmMigration, schemaVersion)
-}
-}
-
-
genericsFunc { (a: Type, b) in
-a + b
-}
-
-
-
var label: UILabel = { (lbl: UILabel) -> UILabel in
-   lbl.backgroundColor = .red
-   return lbl
-}(UILabel())
-
-
-
hoge(arg: num) { num in
-  return num
-}
-
-
-
({ (manager: FileManager) in
-  print(manager)
-})(FileManager.default)
-
-
withPostSideEffect { input in
-    if true { print("\(input)") }
-}
-
-
viewModel?.profileImage.didSet(weak: self) { (self, profileImage) in
-    self.profileImageView.image = profileImage
-}
-
-
let failure: Failure = { task, error in
-    observer.sendFailed(error, task)
-}
-
-
List($names) { $name in
-    Text(name)
-}
-
-
List($names) { $name in
-    TextField($name)
-}
-
-

Triggering Examples

-
[1, 2].map { ↓number in
- return 3
-}
-
-
-
[1, 2].map { ↓number in
- return numberWithSuffix
-}
-
-
-
[1, 2].map { ↓number in
- return 3 // number
-}
-
-
-
[1, 2].map { ↓number in
- return 3 "number"
-}
-
-
-
[1, 2].something { number, ↓idx in
- return number
-}
-
-
-
genericsFunc { (↓number: TypeA, idx: TypeB) in return idx
-}
-
-
-
hoge(arg: num) { ↓num in
-}
-
-
-
fooFunc { ↓아 in
- }
-
-
func foo () {
- bar { ↓number in
- return 3
-}
-
-
-
viewModel?.profileImage.didSet(weak: self) { (↓self, profileImage) in
-    profileImageView.image = profileImage
-}
-
-
let failure: Failure = { ↓task, error in
-    observer.sendFailed(error)
-}
-
-
List($names) { ↓$name in
-    Text("Foo")
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_control_flow_label.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_control_flow_label.html deleted file mode 100644 index f73a6bd23..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_control_flow_label.html +++ /dev/null @@ -1,388 +0,0 @@ - - - - unused_control_flow_label Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unused Control Flow Label

- -

Unused control flow label should be removed.

- -
    -
  • Identifier: unused_control_flow_label
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
loop: while true { break loop }
-
-
loop: while true { continue loop }
-
-
loop:
-    while true { break loop }
-
-
while true { break }
-
-
loop: for x in array { break loop }
-
-
label: switch number {
-case 1: print("1")
-case 2: print("2")
-default: break label
-}
-
-
loop: repeat {
-    if x == 10 {
-        break loop
-    }
-} while true
-
-

Triggering Examples

-
↓loop: while true { break }
-
-
↓loop: while true { break loop1 }
-
-
↓loop: while true { break outerLoop }
-
-
↓loop: for x in array { break }
-
-
↓label: switch number {
-case 1: print("1")
-case 2: print("2")
-default: break
-}
-
-
↓loop: repeat {
-    if x == 10 {
-        break
-    }
-} while true
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_declaration.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_declaration.html deleted file mode 100644 index abf660465..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_declaration.html +++ /dev/null @@ -1,577 +0,0 @@ - - - - unused_declaration Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unused Declaration

- -

Declarations should be referenced at least once within all files linted.

- -
    -
  • Identifier: unused_declaration
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: Yes
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: severity: error, include_public_and_open: false, related_usrs_to_skip: [“s:7SwiftUI15PreviewProviderP”]
  • -
-

Non Triggering Examples

-
let kConstant = 0
-_ = kConstant
-
-
enum Change<T> {
-  case insert(T)
-  case delete(T)
-}
-
-extension Sequence {
-  func deletes<T>() -> [T] where Element == Change<T> {
-    return compactMap { operation in
-      if case .delete(let value) = operation {
-        return value
-      } else {
-        return nil
-      }
-    }
-  }
-}
-
-let changes = [Change.insert(0), .delete(0)]
-_ = changes.deletes()
-
-
struct Item: Codable {}
-struct ResponseModel: Codable {
-    let items: [Item]
-
-    enum CodingKeys: String, CodingKey {
-        case items = "ResponseItems"
-    }
-}
-
-_ = ResponseModel(items: [Item()]).items
-
-
class ResponseModel {
-    @objc func foo() {
-    }
-}
-_ = ResponseModel()
-
-
public func foo() {}
-
-
protocol Foo {}
-
-extension Foo {
-    func bar() {}
-}
-
-struct MyStruct: Foo {}
-MyStruct().bar()
-
-
import XCTest
-class MyTests: XCTestCase {
-    func testExample() {}
-}
-
-
import XCTest
-open class BestTestCase: XCTestCase {}
-class MyTests: BestTestCase {
-    func testExample() {}
-}
-
-
enum Component {
-  case string(StaticString)
-  indirect case array([Component])
-  indirect case optional(Component?)
-}
-
-@resultBuilder
-struct ComponentBuilder {
-  static func buildExpression(_ string: StaticString) -> Component {
-    return .string(string)
-  }
-
-  static func buildBlock(_ components: Component...) -> Component {
-    return .array(components)
-  }
-
-  static func buildIf(_ value: Component?) -> Component {
-    return .optional(value)
-  }
-}
-
-func acceptComponentBuilder(@ComponentBuilder _ body: () -> Component) {
-  print(body())
-}
-
-acceptComponentBuilder {
-  "hello"
-}
-
-
import Cocoa
-
-@NSApplicationMain
-final class AppDelegate: NSObject, NSApplicationDelegate {
-    func applicationWillFinishLaunching(_ notification: Notification) {}
-    func applicationWillBecomeActive(_ notification: Notification) {}
-}
-
-
import Foundation
-
-public final class Foo: NSObject {
-    @IBAction private func foo() {}
-}
-
-
import Foundation
-
-public final class Foo: NSObject {
-    @objc func foo() {}
-}
-
-
import Foundation
-
-public final class Foo: NSObject {
-    @IBInspectable private var innerPaddingWidth: Int {
-        set { self.backgroundView.innerPaddingWidth = newValue }
-        get { return self.backgroundView.innerPaddingWidth }
-    }
-}
-
-
import Foundation
-
-public final class Foo: NSObject {
-    @IBOutlet private var bar: NSObject! {
-        set { fatalError() }
-        get { fatalError() }
-    }
-
-    @IBOutlet private var baz: NSObject! {
-        willSet { print("willSet") }
-    }
-
-    @IBOutlet private var buzz: NSObject! {
-        didSet { print("didSet") }
-    }
-}
-
-

Triggering Examples

-
let ↓kConstant = 0
-
-
struct Item {}
-struct ↓ResponseModel: Codable {
-    let ↓items: [Item]
-
-    enum ↓CodingKeys: String {
-        case items = "ResponseItems"
-    }
-}
-
-
class ↓ResponseModel {
-    func ↓foo() {
-    }
-}
-
-
public func ↓foo() {}
-
-
protocol Foo {
-    func ↓bar1()
-}
-
-extension Foo {
-    func bar1() {}
-    func ↓bar2() {}
-}
-
-struct MyStruct: Foo {}
-_ = MyStruct()
-
-
import XCTest
-class ↓MyTests: NSObject {
-    func ↓testExample() {}
-}
-
-
enum Component {
-  case string(StaticString)
-  indirect case array([Component])
-  indirect case optional(Component?)
-}
-
-struct ComponentBuilder {
-  func ↓buildExpression(_ string: StaticString) -> Component {
-    return .string(string)
-  }
-
-  func ↓buildBlock(_ components: Component...) -> Component {
-    return .array(components)
-  }
-
-  func ↓buildIf(_ value: Component?) -> Component {
-    return .optional(value)
-  }
-
-  static func ↓buildABear(_ components: Component...) -> Component {
-    return .array(components)
-  }
-}
-
-_ = ComponentBuilder()
-
-
import Cocoa
-
-@NSApplicationMain
-final class AppDelegate: NSObject, NSApplicationDelegate {
-    func ↓appWillFinishLaunching(_ notification: Notification) {}
-    func applicationWillBecomeActive(_ notification: Notification) {}
-}
-
-
import Cocoa
-
-final class ↓AppDelegate: NSObject, NSApplicationDelegate {
-    func applicationWillFinishLaunching(_ notification: Notification) {}
-    func applicationWillBecomeActive(_ notification: Notification) {}
-}
-
-
import Foundation
-
-public final class Foo: NSObject {
-    @IBOutlet var ↓bar: NSObject!
-}
-
-
import Foundation
-
-public final class Foo: NSObject {
-    @IBInspectable var ↓bar: String!
-}
-
-
import Foundation
-
-final class Foo: NSObject {}
-final class ↓Bar {
-    var ↓foo = Foo()
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_enumerated.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_enumerated.html deleted file mode 100644 index 8ea9acf61..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_enumerated.html +++ /dev/null @@ -1,384 +0,0 @@ - - - - unused_enumerated Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unused Enumerated

- -

When the index or the item is not used, .enumerated() can be removed.

- -
    -
  • Identifier: unused_enumerated
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
for (idx, foo) in bar.enumerated() { }
-
-
-
for (_, foo) in bar.enumerated().something() { }
-
-
-
for (_, foo) in bar.something() { }
-
-
-
for foo in bar.enumerated() { }
-
-
-
for foo in bar { }
-
-
-
for (idx, _) in bar.enumerated().something() { }
-
-
-
for (idx, _) in bar.something() { }
-
-
-
for idx in bar.indices { }
-
-
-
for (section, (event, _)) in data.enumerated() {}
-
-
-

Triggering Examples

-
for (↓_, foo) in bar.enumerated() { }
-
-
-
for (↓_, foo) in abc.bar.enumerated() { }
-
-
-
for (↓_, foo) in abc.something().enumerated() { }
-
-
-
for (idx, ↓_) in bar.enumerated() { }
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_import.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_import.html deleted file mode 100644 index 881a124e2..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_import.html +++ /dev/null @@ -1,392 +0,0 @@ - - - - unused_import Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unused Import

- -

All imported modules should be required to make the file compile.

- -
    -
  • Identifier: unused_import
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: Yes
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: severity: warning, require_explicit_imports: false, allowed_transitive_imports: [], always_keep_imports: []
  • -
-

Non Triggering Examples

-
import Dispatch // This is used
-dispatchMain()
-
-
@testable import Dispatch
-dispatchMain()
-
-
import Foundation
-@objc
-class A {}
-
-
import UnknownModule
-func foo(error: Swift.Error) {}
-
-
import Foundation
-import ObjectiveC
-let 👨‍👩‍👧‍👦 = #selector(NSArray.contains(_:))
-👨‍👩‍👧‍👦 == 👨‍👩‍👧‍👦
-
-

Triggering Examples

-
↓import Dispatch
-struct A {
-  static func dispatchMain() {}
-}
-A.dispatchMain()
-
-
↓import Foundation // This is unused
-struct A {
-  static func dispatchMain() {}
-}
-A.dispatchMain()
-↓import Dispatch
-
-
-
↓import Foundation
-dispatchMain()
-
-
↓import Foundation
-// @objc
-class A {}
-
-
↓import Foundation
-import UnknownModule
-func foo(error: Swift.Error) {}
-
-
↓import Swift
-↓import SwiftShims
-func foo(error: Swift.Error) {}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_optional_binding.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_optional_binding.html deleted file mode 100644 index 28888a0b1..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_optional_binding.html +++ /dev/null @@ -1,402 +0,0 @@ - - - - unused_optional_binding Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unused Optional Binding

- -

Prefer != nil over let _ =

- -
    -
  • Identifier: unused_optional_binding
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, ignore_optional_try: false
  • -
-

Non Triggering Examples

-
if let bar = Foo.optionalValue {
-}
-
-
-
if let (_, second) = getOptionalTuple() {
-}
-
-
-
if let (_, asd, _) = getOptionalTuple(), let bar = Foo.optionalValue {
-}
-
-
-
if foo() { let _ = bar() }
-
-
-
if foo() { _ = bar() }
-
-
-
if case .some(_) = self {}
-
-
if let point = state.find({ _ in true }) {}
-
-

Triggering Examples

-
if let ↓_ = Foo.optionalValue {
-}
-
-
-
if let a = Foo.optionalValue, let ↓_ = Foo.optionalValue2 {
-}
-
-
-
guard let a = Foo.optionalValue, let ↓_ = Foo.optionalValue2 {
-}
-
-
-
if let (first, second) = getOptionalTuple(), let ↓_ = Foo.optionalValue {
-}
-
-
-
if let (first, _) = getOptionalTuple(), let ↓_ = Foo.optionalValue {
-}
-
-
-
if let (_, second) = getOptionalTuple(), let ↓_ = Foo.optionalValue {
-}
-
-
-
if let ↓(_, _, _) = getOptionalTuple(), let bar = Foo.optionalValue {
-}
-
-
-
func foo() {
-if let ↓_ = bar {
-}
-
-
-
if case .some(let ↓_) = self {}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_setter_value.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_setter_value.html deleted file mode 100644 index b1b58a05e..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_setter_value.html +++ /dev/null @@ -1,434 +0,0 @@ - - - - unused_setter_value Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unused Setter Value

- -

Setter value is not used.

- -
    -
  • Identifier: unused_setter_value
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
var aValue: String {
-    get {
-        return Persister.shared.aValue
-    }
-    set {
-        Persister.shared.aValue = newValue
-    }
-}
-
-
var aValue: String {
-    set {
-        Persister.shared.aValue = newValue
-    }
-    get {
-        return Persister.shared.aValue
-    }
-}
-
-
var aValue: String {
-    get {
-        return Persister.shared.aValue
-    }
-    set(value) {
-        Persister.shared.aValue = value
-    }
-}
-
-
override var aValue: String {
- get {
-     return Persister.shared.aValue
- }
- set() { }
-}
-
-

Triggering Examples

-
var aValue: String {
-    get {
-        return Persister.shared.aValue
-    }
-    ↓set {
-        Persister.shared.aValue = aValue
-    }
-}
-
-
var aValue: String {
-    ↓set {
-        Persister.shared.aValue = aValue
-    }
-    get {
-        return Persister.shared.aValue
-    }
-}
-
-
var aValue: String {
-    get {
-        return Persister.shared.aValue
-    }
-    ↓set {
-        Persister.shared.aValue = aValue
-    }
-}
-
-
var aValue: String {
-    get {
-        let newValue = Persister.shared.aValue
-        return newValue
-    }
-    ↓set {
-        Persister.shared.aValue = aValue
-    }
-}
-
-
var aValue: String {
-    get {
-        return Persister.shared.aValue
-    }
-    ↓set(value) {
-        Persister.shared.aValue = aValue
-    }
-}
-
-
override var aValue: String {
-    get {
-        return Persister.shared.aValue
-    }
-    ↓set {
-        Persister.shared.aValue = aValue
-    }
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/valid_ibinspectable.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/valid_ibinspectable.html deleted file mode 100644 index ccc21d6f5..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/valid_ibinspectable.html +++ /dev/null @@ -1,421 +0,0 @@ - - - - valid_ibinspectable Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Valid IBInspectable

- -

@IBInspectable should be applied to variables only, have its type explicit and be of a supported type

- -
    -
  • Identifier: valid_ibinspectable
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class Foo {
-  @IBInspectable private var x: Int
-}
-
-
class Foo {
-  @IBInspectable private var x: String?
-}
-
-
class Foo {
-  @IBInspectable private var x: String!
-}
-
-
class Foo {
-  @IBInspectable private var count: Int = 0
-}
-
-
class Foo {
-  private var notInspectable = 0
-}
-
-
class Foo {
-  private let notInspectable: Int
-}
-
-
class Foo {
-  private let notInspectable: UInt8
-}
-
-
extension Foo {
-    @IBInspectable var color: UIColor {
-        set {
-            self.bar.textColor = newValue
-        }
-
-        get {
-            return self.bar.textColor
-        }
-    }
-}
-
-

Triggering Examples

-
class Foo {
-  @IBInspectable private ↓let count: Int
-}
-
-
class Foo {
-  @IBInspectable private ↓var insets: UIEdgeInsets
-}
-
-
class Foo {
-  @IBInspectable private ↓var count = 0
-}
-
-
class Foo {
-  @IBInspectable private ↓var count: Int?
-}
-
-
class Foo {
-  @IBInspectable private ↓var count: Int!
-}
-
-
class Foo {
-  @IBInspectable private ↓var x: ImplicitlyUnwrappedOptional<Int>
-}
-
-
class Foo {
-  @IBInspectable private ↓var count: Optional<Int>
-}
-
-
class Foo {
-  @IBInspectable private ↓var x: Optional<String>
-}
-
-
class Foo {
-  @IBInspectable private ↓var x: ImplicitlyUnwrappedOptional<String>
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_parameter_alignment.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_parameter_alignment.html deleted file mode 100644 index 03d84e61b..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_parameter_alignment.html +++ /dev/null @@ -1,396 +0,0 @@ - - - - vertical_parameter_alignment Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Vertical Parameter Alignment

- -

Function parameters should be aligned vertically if they’re in multiple lines in a declaration.

- -
    -
  • Identifier: vertical_parameter_alignment
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
func validateFunction(_ file: SwiftLintFile, kind: SwiftDeclarationKind,
-                      dictionary: SourceKittenDictionary) { }
-
-
func validateFunction(_ file: SwiftLintFile, kind: SwiftDeclarationKind,
-                      dictionary: SourceKittenDictionary) -> [StyleViolation]
-
-
func foo(bar: Int)
-
-
func foo(bar: Int) -> String
-
-
func validateFunction(_ file: SwiftLintFile, kind: SwiftDeclarationKind,
-                      dictionary: SourceKittenDictionary)
-                      -> [StyleViolation]
-
-
func validateFunction(
-   _ file: SwiftLintFile, kind: SwiftDeclarationKind,
-   dictionary: SourceKittenDictionary) -> [StyleViolation]
-
-
func validateFunction(
-   _ file: SwiftLintFile, kind: SwiftDeclarationKind,
-   dictionary: SourceKittenDictionary
-) -> [StyleViolation]
-
-
func regex(_ pattern: String,
-           options: NSRegularExpression.Options = [.anchorsMatchLines,
-                                                   .dotMatchesLineSeparators]) -> NSRegularExpression
-
-
func foo(a: Void,
-         b: [String: String] =
-         [:]) {
-}
-
-
func foo(data: (size: CGSize,
-                identifier: String)) {}
-
-
func foo(data: Data,
-         @ViewBuilder content: @escaping (Data.Element.IdentifiedValue) -> Content) {}
-
-

Triggering Examples

-
func validateFunction(_ file: SwiftLintFile, kind: SwiftDeclarationKind,
-                  ↓dictionary: SourceKittenDictionary) { }
-
-
func validateFunction(_ file: SwiftLintFile, kind: SwiftDeclarationKind,
-                       ↓dictionary: SourceKittenDictionary) { }
-
-
func validateFunction(_ file: SwiftLintFile,
-                  ↓kind: SwiftDeclarationKind,
-                  ↓dictionary: SourceKittenDictionary) { }
-
-
func foo(data: Data,
-            ↓@ViewBuilder content: @escaping (Data.Element.IdentifiedValue) -> Content) {}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_parameter_alignment_on_call.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_parameter_alignment_on_call.html deleted file mode 100644 index feb620607..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_parameter_alignment_on_call.html +++ /dev/null @@ -1,414 +0,0 @@ - - - - vertical_parameter_alignment_on_call Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Vertical Parameter Alignment On Call

- -

Function parameters should be aligned vertically if they’re in multiple lines in a method call.

- -
    -
  • Identifier: vertical_parameter_alignment_on_call
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
foo(param1: 1, param2: bar
-    param3: false, param4: true)
-
-
foo(param1: 1, param2: bar)
-
-
foo(param1: 1, param2: bar
-    param3: false,
-    param4: true)
-
-
foo(
-   param1: 1
-) { _ in }
-
-
UIView.animate(withDuration: 0.4, animations: {
-    blurredImageView.alpha = 1
-}, completion: { _ in
-    self.hideLoading()
-})
-
-
UIView.animate(withDuration: 0.4, animations: {
-    blurredImageView.alpha = 1
-},
-completion: { _ in
-    self.hideLoading()
-})
-
-
foo(param1: 1, param2: { _ in },
-    param3: false, param4: true)
-
-
foo({ _ in
-       bar()
-   },
-   completion: { _ in
-       baz()
-   }
-)
-
-
foo(param1: 1, param2: [
-   0,
-   1
-], param3: 0)
-
-
myFunc(foo: 0,
-       bar: baz == 0)
-
-

Triggering Examples

-
foo(param1: 1, param2: bar
-                ↓param3: false, param4: true)
-
-
foo(param1: 1, param2: bar
- ↓param3: false, param4: true)
-
-
foo(param1: 1, param2: bar
-       ↓param3: false,
-       ↓param4: true)
-
-
foo(param1: 1,
-       ↓param2: { _ in })
-
-
foo(param1: 1,
-    param2: { _ in
-}, param3: 2,
- ↓param4: 0)
-
-
foo(param1: 1, param2: { _ in },
-       ↓param3: false, param4: true)
-
-
myFunc(foo: 0,
-        ↓bar: baz == 0)
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_whitespace.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_whitespace.html deleted file mode 100644 index a325e42b5..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_whitespace.html +++ /dev/null @@ -1,378 +0,0 @@ - - - - vertical_whitespace Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Vertical Whitespace

- -

Limit vertical whitespace to a single empty line.

- -
    -
  • Identifier: vertical_whitespace
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, max_empty_lines: 1
  • -
-

Non Triggering Examples

-
let abc = 0
-
-
-
let abc = 0
-
-
-
-
/* bcs 
-
-
-
-*/
-
-
// bca 
-
-
-
-

Triggering Examples

-
let aaaa = 0
-
-
-
-
-
struct AAAA {}
-
-
-
-
-
-
class BBBB {}
-
-
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_whitespace_between_cases.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_whitespace_between_cases.html deleted file mode 100644 index e325104cd..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_whitespace_between_cases.html +++ /dev/null @@ -1,432 +0,0 @@ - - - - vertical_whitespace_between_cases Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Vertical Whitespace Between Cases

- -

Include a single empty line between switch cases.

- -
    -
  • Identifier: vertical_whitespace_between_cases
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
    switch x {
-    case .valid:
-        print("multiple ...")
-        print("... lines")
-
-    case .invalid:
-        print("multiple ...")
-        print("... lines")
-    }
-
-
    switch x {
-    case .valid:
-        print("x is valid")
-
-    case .invalid:
-        print("x is invalid")
-    }
-
-
    switch x {
-    case 0..<5:
-        print("x is valid")
-
-    default:
-        print("x is invalid")
-    }
-
-
switch x {
-
-case 0..<5:
-    print("x is low")
-
-case 5..<10:
-    print("x is high")
-
-default:
-    print("x is invalid")
-
-}
-
-
switch x {
-case 0..<5:
-    print("x is low")
-
-case 5..<10:
-    print("x is high")
-
-default:
-    print("x is invalid")
-}
-
-
switch x {
-case 0..<5: print("x is low")
-case 5..<10: print("x is high")
-default: print("x is invalid")
-}
-
-
switch x {    
-case 1:    
-    print("one")    
-
-default:    
-    print("not one")    
-}    
-
-

Triggering Examples

-
    switch x {
-    case .valid:
-        print("multiple ...")
-        print("... lines")
-↓    case .invalid:
-        print("multiple ...")
-        print("... lines")
-    }
-
-
    switch x {
-    case .valid:
-        print("x is valid")
-↓    case .invalid:
-        print("x is invalid")
-    }
-
-
    switch x {
-    case 0..<5:
-        print("x is valid")
-↓    default:
-        print("x is invalid")
-    }
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_whitespace_closing_braces.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_whitespace_closing_braces.html deleted file mode 100644 index 7f2092de9..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_whitespace_closing_braces.html +++ /dev/null @@ -1,423 +0,0 @@ - - - - vertical_whitespace_closing_braces Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Vertical Whitespace before Closing Braces

- -

Don’t include vertical whitespace (empty line) before closing braces.

- -
    -
  • Identifier: vertical_whitespace_closing_braces
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: N/A
  • -
-

Non Triggering Examples

-
/*
-    class X {
-
-        let x = 5
-
-    }
-*/
-
-
[
-1,
-2,
-3
-]
-
-
[1, 2].map { $0 }.filter { num in true }
-
-
[1, 2].map { $0 }.filter { true }
-
-
do {
-  print("x is 5")
-}
-
-
do {
-  print("x is 5")
-}
-
-
do {
-  print("x is 5")
-}
-
-
foo(
-    x: 5,
-    y:6
-)
-
-
func foo() {
-  run(5) { x in
-    print(x)
-  }
-}
-
-

Triggering Examples

-
[
-1,
-2,
-3
-↓
-]
-
-
do {
-  print("x is 5")
-↓
-
-}
-
-
do {
-  print("x is 5")
-↓
-
-}
-
-
do {
-  print("x is 5")
-↓
-}
-
-
foo(
-    x: 5,
-    y:6
-↓
-)
-
-
func foo() {
-  run(5) { x in
-    print(x)
-  }
-↓
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_whitespace_opening_braces.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_whitespace_opening_braces.html deleted file mode 100644 index e14a57c0f..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_whitespace_opening_braces.html +++ /dev/null @@ -1,459 +0,0 @@ - - - - vertical_whitespace_opening_braces Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Vertical Whitespace after Opening Braces

- -

Don’t include vertical whitespace (empty line) after opening braces.

- -
    -
  • Identifier: vertical_whitespace_opening_braces
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: N/A
  • -
-

Non Triggering Examples

-
/*
-    class X {
-
-        let x = 5
-
-    }
-*/
-
-
// [1, 2].map { $0 }.filter { num in true }
-
-
KingfisherManager.shared.retrieveImage(with: url, options: nil, progressBlock: nil) { image, _, _, _ in
-    guard let img = image else { return }
-}
-
-
[
-1,
-2,
-3
-]
-
-
[1, 2].map { $0 }.filter { num in true }
-
-
[1, 2].map { $0 }.foo()
-
-
class X {
-  struct Y {
-    class Z {
-    }
-  }
-}
-
-
foo(
-  x: 5,
-  y:6
-)
-
-
foo({ }) { _ in
-  self.dismiss(animated: false, completion: {
-  })
-}
-
-
func foo() {
-  run(5) { x in
-    print(x)
-  }
-}
-
-
if x == 5 {
-  print("x is 5")
-}
-
-
if x == 5 {
-  print("x is 5")
-}
-
-
struct MyStruct {
-  let x = 5
-}
-
-

Triggering Examples

-
KingfisherManager.shared.retrieveImage(with: url, options: nil, progressBlock: nil) { image, _, _, _ in
-↓
-    guard let img = image else { return }
-}
-
-
[
-↓
-1,
-2,
-3
-]
-
-
class X {
-  struct Y {
-↓
-    class Z {
-    }
-  }
-}
-
-
foo(
-↓
-  x: 5,
-  y:6
-)
-
-
foo({ }) { _ in
-↓
-  self.dismiss(animated: false, completion: {
-  })
-}
-
-
func foo() {
-↓
-  run(5) { x in
-    print(x)
-  }
-}
-
-
if x == 5 {
-↓
-
-  print("x is 5")
-}
-
-
if x == 5 {
-↓
-  print("x is 5")
-}
-
-
struct MyStruct {
-↓
-  let x = 5
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/void_return.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/void_return.html deleted file mode 100644 index 2c6d89527..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/void_return.html +++ /dev/null @@ -1,387 +0,0 @@ - - - - void_return Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Void Return

- -

Prefer -> Void over -> ().

- -
    -
  • Identifier: void_return
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let abc: () -> Void = {}
-
-
-
let abc: () -> (VoidVoid) = {}
-
-
-
func foo(completion: () -> Void)
-
-
-
let foo: (ConfigurationTests) -> () throws -> Void
-
-
-
let foo: (ConfigurationTests) ->   () throws -> Void
-
-
-
let foo: (ConfigurationTests) ->() throws -> Void
-
-
-
let foo: (ConfigurationTests) -> () -> Void
-
-
-

Triggering Examples

-
let abc: () -> ↓() = {}
-
-
-
let abc: () -> ↓(Void) = {}
-
-
-
let abc: () -> ↓(   Void ) = {}
-
-
-
func foo(completion: () -> ↓())
-
-
-
func foo(completion: () -> ↓(   ))
-
-
-
func foo(completion: () -> ↓(Void))
-
-
-
let foo: (ConfigurationTests) -> () throws -> ↓()
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/weak_delegate.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/weak_delegate.html deleted file mode 100644 index 3caa00c5a..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/weak_delegate.html +++ /dev/null @@ -1,407 +0,0 @@ - - - - weak_delegate Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Weak Delegate

- -

Delegates should be weak to avoid reference cycles.

- -
    -
  • Identifier: weak_delegate
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class Foo {
-  weak var delegate: SomeProtocol?
-}
-
-
-
class Foo {
-  weak var someDelegate: SomeDelegateProtocol?
-}
-
-
-
class Foo {
-  weak var delegateScroll: ScrollDelegate?
-}
-
-
-
class Foo {
-  var scrollHandler: ScrollDelegate?
-}
-
-
-
func foo() {
-  var delegate: SomeDelegate
-}
-
-
-
class Foo {
-  var delegateNotified: Bool?
-}
-
-
-
protocol P {
- var delegate: AnyObject? { get set }
-}
-
-
-
class Foo {
- protocol P {
- var delegate: AnyObject? { get set }
-}
-}
-
-
-
class Foo {
- var computedDelegate: ComputedDelegate {
- return bar() 
-} 
-}
-
-
struct Foo {
- @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate 
-}
-
-

Triggering Examples

-
class Foo {
-  ↓var delegate: SomeProtocol?
-}
-
-
-
class Foo {
-  ↓var scrollDelegate: ScrollDelegate?
-}
-
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/xct_specific_matcher.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/xct_specific_matcher.html deleted file mode 100644 index 7397b80de..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/xct_specific_matcher.html +++ /dev/null @@ -1,489 +0,0 @@ - - - - xct_specific_matcher Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

XCTest Specific Matcher

- -

Prefer specific XCTest matchers over XCTAssertEqual and XCTAssertNotEqual

- -
    -
  • Identifier: xct_specific_matcher
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
XCTAssertFalse(foo)
-
-
XCTAssertTrue(foo)
-
-
XCTAssertNil(foo)
-
-
XCTAssertNotNil(foo)
-
-
XCTAssertEqual(foo, 2)
-
-
XCTAssertNotEqual(foo, "false")
-
-
XCTAssertEqual(foo, [1, 2, 3, true])
-
-
XCTAssertEqual(foo, [1, 2, 3, false])
-
-
XCTAssertEqual(foo, [1, 2, 3, nil])
-
-
XCTAssertEqual(foo, [true, nil, true, nil])
-
-
XCTAssertEqual([1, 2, 3, true], foo)
-
-
XCTAssertEqual([1, 2, 3, false], foo)
-
-
XCTAssertEqual([1, 2, 3, nil], foo)
-
-
XCTAssertEqual([true, nil, true, nil], foo)
-
-
XCTAssertEqual(2, foo)
-
-
XCTAssertNotEqual("false"), foo)
-
-
XCTAssertEqual(false, foo?.bar)
-
-
XCTAssertEqual(true, foo?.bar)
-
-
XCTAssertFalse(  foo  )
-
-
XCTAssertTrue(  foo  )
-
-
XCTAssertNil(  foo  )
-
-
XCTAssertNotNil(  foo  )
-
-
XCTAssertEqual(  foo  , 2  )
-
-
XCTAssertNotEqual(  foo, "false")
-
-
XCTAssertEqual(foo?.bar, false)
-
-
XCTAssertEqual(foo?.bar, true)
-
-
XCTAssertNil(foo?.bar)
-
-
XCTAssertNotNil(foo?.bar)
-
-
XCTAssertEqual(foo?.bar, 2)
-
-
XCTAssertNotEqual(foo?.bar, "false")
-
-
XCTAssertEqual(foo?.bar, toto())
-
-
XCTAssertEqual(foo?.bar, .toto(.zoo))
-
-
XCTAssertEqual(toto(), foo?.bar)
-
-
XCTAssertEqual(.toto(.zoo), foo?.bar)
-
-

Triggering Examples

-
↓XCTAssertEqual(foo, true)
-
-
↓XCTAssertEqual(foo, false)
-
-
↓XCTAssertEqual(foo, nil)
-
-
↓XCTAssertNotEqual(foo, true)
-
-
↓XCTAssertNotEqual(foo, false)
-
-
↓XCTAssertNotEqual(foo, nil)
-
-
↓XCTAssertEqual(true, foo)
-
-
↓XCTAssertEqual(false, foo)
-
-
↓XCTAssertEqual(nil, foo)
-
-
↓XCTAssertNotEqual(true, foo)
-
-
↓XCTAssertNotEqual(false, foo)
-
-
↓XCTAssertNotEqual(nil, foo)
-
-
↓XCTAssertEqual(foo, true, "toto")
-
-
↓XCTAssertEqual(foo, false, "toto")
-
-
↓XCTAssertEqual(foo, nil, "toto")
-
-
↓XCTAssertNotEqual(foo, true, "toto")
-
-
↓XCTAssertNotEqual(foo, false, "toto")
-
-
↓XCTAssertNotEqual(foo, nil, "toto")
-
-
↓XCTAssertEqual(true, foo, "toto")
-
-
↓XCTAssertEqual(false, foo, "toto")
-
-
↓XCTAssertEqual(nil, foo, "toto")
-
-
↓XCTAssertNotEqual(true, foo, "toto")
-
-
↓XCTAssertNotEqual(false, foo, "toto")
-
-
↓XCTAssertNotEqual(nil, foo, "toto")
-
-
↓XCTAssertEqual(foo,true)
-
-
↓XCTAssertEqual( foo , false )
-
-
↓XCTAssertEqual(  foo  ,  nil  )
-
-
↓XCTAssertEqual(true, [1, 2, 3, true].hasNumbers())
-
-
↓XCTAssertEqual([1, 2, 3, true].hasNumbers(), true)
-
-
↓XCTAssertEqual(foo?.bar, nil)
-
-
↓XCTAssertNotEqual(foo?.bar, nil)
-
-
↓XCTAssertEqual(nil, true)
-
-
↓XCTAssertEqual(nil, false)
-
-
↓XCTAssertEqual(true, nil)
-
-
↓XCTAssertEqual(false, nil)
-
-
↓XCTAssertEqual(nil, nil)
-
-
↓XCTAssertEqual(true, true)
-
-
↓XCTAssertEqual(false, false)
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/xctfail_message.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/xctfail_message.html deleted file mode 100644 index b1ae0991c..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/xctfail_message.html +++ /dev/null @@ -1,361 +0,0 @@ - - - - xctfail_message Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

XCTFail Message

- -

An XCTFail call should include a description of the assertion.

- -
    -
  • Identifier: xctfail_message
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
func testFoo() {
-  XCTFail("bar")
-}
-
-
func testFoo() {
-  XCTFail(bar)
-}
-
-

Triggering Examples

-
func testFoo() {
-  ↓XCTFail()
-}
-
-
func testFoo() {
-  ↓XCTFail("")
-}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/yoda_condition.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/yoda_condition.html deleted file mode 100644 index 5e46d5e07..000000000 --- a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/yoda_condition.html +++ /dev/null @@ -1,385 +0,0 @@ - - - - yoda_condition Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Yoda condition rule

- -

The variable should be placed on the left, the constant on the right of a comparison operator.

- -
    -
  • Identifier: yoda_condition
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
if foo == 42 {}
-
-
-
if foo <= 42.42 {}
-
-
-
guard foo >= 42 else { return }
-
-
-
guard foo != "str str" else { return }
-
-
while foo < 10 { }
-
-
-
while foo > 1 { }
-
-
-
while foo + 1 == 2 {}
-
-
if optionalValue?.property ?? 0 == 2 {}
-
-
if foo == nil {}
-
-

Triggering Examples

-
↓if 42 == foo {}
-
-
-
↓if 42.42 >= foo {}
-
-
-
↓guard 42 <= foo else { return }
-
-
-
↓guard "str str" != foo else { return }
-
-
↓while 10 > foo { }
-
-
↓while 1 < foo { }
-
-
↓if nil == foo {}
-
- -
-
- - -
-
- - - - diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/docSet.dsidx b/docsets/SwiftLintFramework.docset/Contents/Resources/docSet.dsidx deleted file mode 100644 index fd0795d395242f734bdc413b87208e1c509684ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 135168 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 TO0xq>+;M6El|_dk#`ymLTwoJq diff --git a/docsets/SwiftLintFramework.tgz b/docsets/SwiftLintFramework.tgz deleted file mode 100644 index 0bff5ac99309c52b868b4214bd7040d48a21020c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 430816 zcmZ^KQ;;q^*yPwV@7T6&+qUg9wr$(CZF|nxw(T?4e*fNVZPjk&rjt~1kyPdB>h2Ik zLjiTm^B4nxUi-rO=xBJpb!v32txj2Qc2!+gHD;H{Uy`RCx1(^VeMMz+$`g-!vZ>XV z{`nkhD!DY$xripQz>6Pzv1ni#3$Tr0f~dJF0EO^o9K)=)9VlQl!~unfIa_6di20s7 z(!c2Y*FeW}gZ}O3Sn~ANch}SZlzWGypLp6dUMlKFOGg_?Gx6^*P?I?esX4d6j-Y>U zZ*6Hw`sc3n_cM6spa1(3_BjHCmv{GPknfee ziDF}CCyc|f8|trrpwE!mxIbs+->66%^CuLeog;#O?vUMe@xN|9)|kIb#^jkY5~J{Q zAAVS1GMU#9js-vGH@EaWKY?|(`a2&IM|+Uk->$Y+ znRCAn4+1V8u2j2Sv}G*H%uFs8`vJeR>P$#-V8wI2NzEi z5;_y2mVBP4e;*hnZKfQbb;eIhd`K=ct0|L2fp$DjhBCb1~49qW5$~RaD?YK28*xgqam97NqT|;cQg-&&?%&PFPd{G%edUp|y3MFgYJ%+z2nSFY z@M~)u$Ut1dHM^P;`ge1cAInN12__^xgzj7RCy+xw>UZbQ|G#n}$uw#volo?+L*_ir^UH$?w}{lfHRe{ynId^bL)uKK0{G|e~an~0ypPI=#!+3*R! z0@HSQ??3j9o$TmI%+ZvbIkRWQnlqFBGUh0lhOS&37iAEFEa>HC4hr@w5uReifq_&F zvGk%g2q40t46ZX#Wuu`C{{)h}*Kp=clQpqSQT@F>3>=3nZAr+$xKa=W1pbj9w#o^$ z+P^&>#AnD!M^<*bYeJlh4E`h^y%uIxmk@^9o^J?5^|x6TK$#FfD~fM_DA<4;6>G7% z+(X&HtU>yed}T`EN6Ryi=UbExJ47yYfei~9V6*>qx*W{qwR{-NUC`yGE2<=f_$Br zFgfq<+J~+HQWkChgH*_0%Rmg4K$xUGe|SHLz~$>jM7LTlCB!DmE#7W5X6Z$ywZe&=qfyQ^&sQGv-HVUV;xQ`XO%jZ>lq(J3^5I2Pkbb|v zwl-zsaU=49h2-v0NVuV=tC>#Od4O}6eWf|k7=HSxTN;`~`mLlfedXSq2F_U2)}sgpl@)Y zfD2Dond0%7zYRU20%nr5q6|fm*mHtEgu^` zfcn9Pi?@i6)eD%#@j$#6w$hi4uma8vHKxv-y=9XvKQNWWjgyfXC06@;t|6TZ=kmvh zgn3Aq9~H(Wy!pL@lZ5O@82xqZZ5@0?4ah*lRIH-I z$Wk`9HTI$-g^zxE*B^rJw-#4LVuh(z^l#VLvc9eCf2)QwHmhPU$`UTdmUkt`RBPDF z4orn5^CxHQPN;M33uq-mk?0i0yv9@xr7+yn2UY9&2Zy`*y*77 zZS~LW-gs=T9>;B9Zi{E_9mtQ^Iu08tC_)NSg zjpOJ_xnuA^^6z-$b3_zKK7Vr+ z?*9i>fBJ6~dr;CdtsVdDVIMp^=WkSf{?2mY-=R#S@BQ9s?mr++*t~!5m5a2Pz5Z@7 z{Lgxu;qQJi9&sJl-+sAh^Xl8*-6sz&@63qwM`YR)Pq@Q8 zMertHPYH+%cOee48(RPul`~bEE{=;agBob+M4cUmnyp3h$+}?{nE49@<>65EkQYcV zr}d7iqbKi5g4^!VX+9^Cok_vR1(v@sMJ-q(Vt9rSOpYRaP3 zsBcA9aX738LK71eidc68Bf}W6FnRDfg=EY`%c+IZOqzyu zu`tUHrZ8uFPL_nCJ8wul5P-x?x>*E(7hJiR+S>xR`Mwgsh(qAW7PQp6&40&O-CL)4 zJ~~=I!P5}n{YJcZ5e%nuOf@!d6!eL9;uzi;oTtQ&Ezye_8R_VVuNO~D;{YTHi1vfW?ZHkp!&-vg@I?h4%S% zQ!pNZ^H$mCfCsGnEvCI8ew3ZG1LxrFA!^9 z)W$<7YCKHpdwO4)xr=g4K0<3d=|Ap=A;IHFA6$`-GViW!L(N1k`JlV$zznFatY~t# znw$muh^2#a`IF74Xd~QEFN_o9*DMa^J=sRgDyvW<>A{YRP^`uvQ@oJwIn5uSQTSsQ z+!5D; z_znzjX8S)RuTh@~IIQ1ROT}{Ebp+jcjqwj8KRO9V6y5GoWE$^q26fs27CiP z)$9_xS2eD1{ZCx4VrzB{9J&G)s3hF22t0sD3N=P|M0j z-JoOY(*HV@pPQX+X$WpEXgm8XRmP=Y+PC+1b_y~$(a^|N5@<5U*j9z!-5uX_zSkbS zTr?v(sl#=ghh3)H78L|LhT>97D>{9JW0$( zqq!~xssNw=&WJ6Z#j+2BYjd$lQyUq%QJyS*K({yh$@6plXrcmIqr7C1ystHR>jcaA z!kjN=j(BELsdOpTnc;>js}59`8-GAYyn}v^N?G;*m^>6r+n-#-L^%TFeXY4?4%EFt z)0jP1Vc~~i1va$2dKdJ+SB2sejj$Z-K9#V2+&iOJfY-HXn!RSS5VpV~W@``EtWh0@ zIL(dvFnrQp@gu24tY4IgAUBWKE>0^~gvotx+|`ppD_MfxcE+jRa6fZtyMiMK7;_tx{c2x;Lj7jsSIvRn>bbO zp~n+Z-7v@CWhqjam?8N#&@Tj?PdQ|s8JqKzDb@Mws@XKY>dmO3!iE>cH_6VU_4~5a zZNnY1PG5zT4z&_!pTJ-6tnpSL*YHZF_}PM9ml4*Dj~@8k_#{+XL+`1--UY^GN!oc18W$*0f!SeVlWX_0u8e01jHx4Ne=j84?<@pM1K}_5o^fLL^32BB(yF4?Me2EUc#F7wVYX z$j#2wlu^`7uLDq3y{d(6c|5G3%zjY7ovIKK`Xy!cxCG*EjiQn9x`0U4VUA1xy)=gdb?msLTru-KpZ}dOC2_Qpk2x)NOq|zYPgmv@ z5xW*9&d=$MaZ{+(T+fjG6Z+9Pd#bd`_$j@W_da5Jt92lvzdi`loN3CNPWIU9fPPaY z%uTL`Wa6EgsdcDc87F5Y9X7-Lhjm>K!IU$H0Q6TRb2!Pm;^lhjA}z>W*-gASv$)ns zbrblm>^i0=)H1sI7407KUsK_(gNriew>nr}TN|)T8r7Zp=s|>`=k*)7-4MrIm~(Sx zP09??fkvb&mG_V;y}|>(MCf+&gQ*J>GmYsyueNTPJ#QB)cVGWVFEZ=2~6(x>rj{E{p!IE?)l?~nD0gvrB| zUfO7_^Q1MhMQnqe;a1OiS^4r%UOb2<<0t{EO8*!K3_fCQg9%YTs>~@-u=fe1)JWQs zLoH|lMzP~iI)<*SN#!^HDPO=fCiSgm^TfJdPJQO2*?nGNYA_lH-l<*Y2km9BR*Uty zv+)H5-E&|VM<5Oe7`LBpj$FOMBDw{4#em2J6HHlD46Mf|Qr$SuXx7DAMhyZBJnsEx zipVNj2C6a|aDk8ZcO`w@4vH~bPl))r@iB8op@^==6WE`o&h(Gc?b*3)wi)=(5GPo7 zz3R3W(_cKiJd0lN_=6Mgbk;2(-gS;33^NI5Rms+sQx8Los4r35d6|4&71Dl zJYP277B%S^I8@+JvKkh5uRMFZzz8Fh!w0Wsz8%bp>8ESmksCpsq(^RxmiYDaYQu|B zfWS0e`2bBpvcPHZ5iQqo8M5k``})0$rU3F+AU%9tB7P81HAH|xf`K#|NKNkr(gs|rkN52Z#Y@A9RfvPHyukZJ|!_SwX|YS(};TA06KSDVP<|3 z@U{;YohIUR5|kldMfT4%Cv32Q3xXNo|AXX5KpZ3_Ce6(QaeOiYb85fTwa5}^N9Xck z+LwbJO1rlTLec?g8lU{AxZISv)`NsvEeHNZCToc*o<26P8T=(j=K!eQJC{w#n3S1l z4K44I#>v5HyT9oRibea|s+%PyYrt;b!ay}epPo7hK0`AD*2P*OT=<{JK`Mw^JQ&?z z-?y``GVo1vYq&I?Ev}pIOs1RTymH~tv%6sCpWHk5f~0fY_5JJm`Fr*9yLR(izx8X- z{@ZW&>%a5!`~RHizj^u17B0r)@%gm})!OenG|$%GHFfWubnSiu%w8EXiL!a)?945P@xao> zBoe;M+x}ZpiXuyvtDQ3jh=J)#1Bb5Lp?(JR}V+ zN_H-M7mEm|B=%ZhZ{upGBPOYMA|~nCsGya9y>qq;#dsmGOZu}od&MB-Gs>VTMQ?#zH9A;`tS0kiSc{^4+@QF4MrODABbp!DUcWIzviL2C1a82G6 ztfylZlXrI*I0rclqxCGJWK-$+l%^67zL0qlTCQGlJ+#~LC2!Y}XEW5)jw5obL0Al} z<`o-nI-UoG_|F3BP&k5RLvVx7fG>F;uT zFkIQ3n00jTs!XHt48o)gn*chsmm3=XBt#V1A5V(u zmSi(0+UWchIG^*fhF9f`6h1_A39s`dJZ_EjJ7NmWjiPTGnoUf&*q2k)zmr$kHMVw&6#b(Lq5?Qq^a5gv-_17^*3TZfScC? zKlt^S5sOdunWk?xq~QxTWHMTqs|C=U57Yw~B79LEv0ax@Qd1Fjn#>(}ogogQ4=KPQ zVRURu(dbqmx;D)(TGRa3{10%n-C&`7_FyS5ZPAn{${f9emD$0)c&wuLm*$!Rq62@< zsPv}7gjiTNOTkds6mbkr`&DUUQzV=uj*h#?qbe&&ak5NN`5GXkLV-h8)Fasy`sA_6 z$R=hX=Qvt-w6hK3AV?r2$#!U98Aj!+n=VmIo)I_YIxWM=+>MtMF~X|6RE$8a=LSRXc1SoheE z)Q7iiej8;QXa73LPF}@wveOYx(~EBkQ#~LW-T|zj<&DzCJ>7J^-t*UU8TlR^!G0iF zmuze6=9TKT{2qqEbIs->?C)u>2ggpAIk@-a>JnRnjK~7SCQlLo@0H^AHNT5l-{$jk zA64LzE~j?+<v@ZK5S^*sCE`4DRebex>fRI42X`%s-RBp;}k z#{;?s&dO7rp?L_D$M29wM^yWwU|o! z)YW(G2%N{5WD%D1QF*FJbXVrs`w|o5E)Sb5Gi4})v`m?0mGx_dVO{Gb%lB6WCzL$K zGG_4%F(Q1a=nY+L4mu>M2%2?6MWRk&B$%6Cny&5%10u!pIinoa3R>+ge}J|EkquhA0(I(HuI9gHTa*0#lh-@Ud6%IUwy8mjX4RD5%n z5h?_Wx`MuUR=?kV&@Tu}?v-N~z7y`Vua2doH{bD!@8*|;8w1<=wr5tqCdbBuKk(!4 zfP00 zLq`^EP)eIGHksqQ&447&{Xw}6FvCSOYWY80;PyQu!AcCM^SceChJb>@7RGF>5{=Jh zW!i2<1OI|vRHghFN<>8?;k83aP2uE{ci^u{Rgb=Rve1KQUP0RP%ouTpTxc@mj^maV zQuDT;RYL>tkV^>6mN`lc>=fffhZ>wej%MS{mR}Sf%e7sfAOHj}SUPS}orR?TR3#~~ zOS!Q9N6#k2uxa$6Q%RP(*ge9OCB0e+ zNY!TF!qSiz^7G7t!2pc96w1sQi&1Xm1BSt+{d&?Pij+nR55&iz1!S`f8Cq9Wz6z4O z6&ds6LZh!u?7`LJ!eUV*lPsH^?nUA}*QpT@*JSalzyfT{)<^WAW7{>216%iA&3|*9 zfV@*+_P#ypt8qG z5_UK5M6f)A67;N*MyaddYH48U5E_rXzSXNuZ3eCz-q9eL{h&~4Y?ClI4<)&AFjMD) zwzEaCxY`ZrKg4}KD369}IG0*;*>g&4yJZ{+P`}hcHX{V1qwjN{=RpT7K?tN@?o&gq zLrNwSZR0c*78KqN=*GmNNOqGOO~-aiHhOwovicRek~MbVOt)_ImwQh23!TjzoxxV` zF>JxYC2v=POm4E$L7|#T&WcSb$VUCs0(lb8c~u>k`HE%k3gr$w)@wkpINP~4PK%$b zWKnP>7ioo5lQ>>i41SHkK11tGh(WQ0P0_qf*L=zIi_1& zeUOjsm+udIcTlJOyM^8Q)ma+s3;u+g46z3cn`-}%5UTF-)iPj;z9UBc;lb#7uG>sl zreWY)g=13Ehff%Qj&B%_vNpRnf|76&SPu>}A<7%?epgFYfKxmXE`CuUA<}_i7YGLk zo7Wt%6pikk+-1)gshe-lD&fbnO{|iHvfT?|W&qRNRB7M?wFX6tei!cao}@gVCn#-(2pX28)XkrH!d*3^(H4no z7|KjstsV~H7!MdMswq-7^Gnx}3PT7W88bUs6~k!qUBFZ^9ejIY{&Cy8hvHv`g+HaX zbRA*XvM^b3;x;4++%*}=Kyi(c!~+$JX!2Y_!_QHsUkN(IM3AAPHo#r6>zj&_J`t|q zSx$(39rtu=NiO2VxIZUlh1wQ>r`?&-3NxiE~%v2m#V zbv=Hi`3uU&eOw(V|&C|k_j`OpqCVHGf&oJl#L?GBj+6!YLQPbHLcst_(1DG)p;>8 zu32sF#ZFOWIAQ6PSa4_Jb0$l|c?8=R|uo+l&j zoSEc*2G5uJJRvAN{NDIwMqGF;9W66q)}n?DvVA@#$GB{gF)_0nFgEUTwncJ{z*deFX@)b(!P z{dm?G;2E}Mg=)_l_h$}QNT8ke?N)6A`$MdFRwoie;{*IAz#7S2=@oQk-zG5L*XrOl%QTx=yc z{oEGQ>xfSBsAj!sp8qyPoavpq+2r{ue@$l^c2^T2MnGi0BWYJ1H-ZTFAGjsd`T3C+ zQD!LDjH4BI?NIivf>_mY|Gcf?Cx{`sUX4AeyVRU^MO_O9?8tDO=8>UPUg*HX$DZNSvgf`4m-j-6FF;d~NB{tDdi?Oc9 zQ@?3>K*kdoXPjNgOdmmZ@+(A)E(}>-iyJ#4VQ7$z#tqSi%in+T+r^ig>O@-r)fPz? zklhJ{^LRt5xC^v$h%xTxo&Z&^Kvn6wO&{FJ9#o*+&^A)$MJ>{{QsA zXaMLka$sc+J{Q!-fuQc${qvOgKJ4oanm(`hX$XPpfZXku;xPeFEuU1cPD`Iz+Ij>| zy<==g-1|NVx{iI5o>)CIR<1oWj}5Cr)<^h!%M4q? z_q~H*A4vOypTN$M-rTFkzU9Z76So&fx3Kp}eUgB&Gh%dZG8!xH@_&&f3pONdo@JR% z_uXX7)K$`1F52-%en>8OBu$VlA@hz@djr&5nC0xdrPPfPxay^X`cc$J!IM1?HQY0pHBP7iern;!e;)gEa zl%Daqsf|P?cu|md-*A34!_6hyRbnY{iBwQ>{61IY$OBfjqgWx~w z7>Z~Tu^u6VFf)*6&4%JRE9O1m7JjhL&lEgi>6zb|mq;&RFQwpY8FOXLB}jXyNS8c| ztxB+qxGOw1(BU$cIWO*#nFt?cKNMvgW@ zU6?r-6ap9Rwe2#-%F$9&DYkmVQPm*55Yneg8A)A?1}6olpX71QnJ$ySQ)6Y6sASYt zLR_A6oXpcFis?Q{T^p6ClVuCRL(o|+BRcB3xT9BRl{BbEiLsdY%WFeaEVU|Vbp9O_ zN)?)oyVN2tprc8_(jXPVl+>2a6h8|{zW*3wiReVpbtsld4>=RCF{i0Ur72r(%+Z?Y ztPj^z@Sk2{+|kaL0@rZ*LonzK5WRY7HbJm@yS;a8o&HqBAdq-NDSB4hK{>1BJ<(pw zS0o^j2$LtrNNcVO@^BP8{ZVa2y=jimJ!ur@Qn62cgiaiv?NvHwkWz@+ejPA;9XhdD!E5<0K3u-u!X37_w7&CK0Nmbp<(T}8%Ty7%@dIKrVLS=nRgiHIh(QfBkf%I1>T?q|dB>o?reBIo$?caLw+xm{px9XVoPx8ll)xT1x1!(bGYz*>G z{m}AE`y^@s8GzLbt;poa?f}xU0iQG`_!B}<)tn4aE0YnxFN0RFV|sjGL_!eumZ+x6bNAza(= ztDvf_VH0A<4WQ#sd&74Bl{|<|tiU?T!!LokD(8-w~p3yE-EF{Bk^ zMS!Pys3$H=x;nb2?JU9{ZgW6yaRt48Ja0Cbk zyT|4MXQhgG)qlMZ&rl>;U3cRPsF4~E!z$~Z#xn=YOq>^C@(`IbnU#;q(&x>rx#hY7zAm$gAFdkMt|Ttnvz2N1bI+1>Xwvy{FPuB#pZ(yFl8?e7B>KP1sRXBu zQVDpw1HmTzoOO|w0yY_7&&9(8=ZpK;7gXYO;j}JKh5_PLD&54}P3cw&p}w98h@dOsU?_4VB?h z6ol}#9{MM@9dVkV)D4A3D5ZfXs_2^&#QZ(IL6x*EN-fI9(eu_o7{P^u;>M6HEi>9Q zOzVQe8*VnW{17%Fyo1S|FVvI~GzT6H_2B$Md0s5uksTFLUh=(Em!%zzO>wA&*4&!E zzx4Nb`#)yw{TKCF_%7e&R{%YvH6e}Wr_Wgd$K9K^yd&2**cXMsyLAbhyCzrGzNUpm zhtOYsfjQs2>=wUyZmVZ)ejBaEYm48|Z(sHipFpkMit_&2-+d@>eUH3aY}|EGrTKrA z)*?pK8}fo?&$k1=)q~gp2HX7@VLRBh4D8<6O zL5a|jm}ogz$(0#bTvc;KGt!Z=(l6&Rqj{t4)Y{!P?4ggN(01vsMr8=-9x@b2CFAQ| zQal6oslXMK(P>@URgr?Hh-h_5QgmV$-Wp1*){>>)Pb^b!dOoU^C6Bg3Cqr54D}=bW z9O@aD$$@8$kyxpqdqMIjxV~wfs|Oaf5x#>&vDL^;cucW4R7?w1-g;WeG2C_@97N)v z03|i!Hf}eLtHR_HV^`_vYx+w`NtxP^j7{_9#Dv^){lMUAjoj8P6ulj2zKk4+suvkK zc6`_Ca=q4BBWIojZskS&s|dBG!wLdE4n?QaYG<_*I=;(w9=wPJ@#7pinc1<67ux|MQ0xX-N$zR71gQnvj-)s5PR7zF0mUHEC<(aZJ;M z{=^MudtCQsc=C5L^pXAEKn%fY(>{1i8D1{@>E->sWBMwu?DQ2 zUL;J3hRUj|LH(AL{?tK9)gD%T6`A?n(#HFeF+RJcHAoT^oXz{_AS<(80{1c2`c^n=Cg4%l~3-wCyU5od+AXky462`a)T7FaK|QT`Y0 zY!!pT7jh0q|3A^pU2N55jv$Hx5J|+HxV_)kfHja;@9qA5^zH9kJh?gc-rkFevWYSt zy*)R+BW*|5Zp^dh**!;k&Mmw>m!7G{y&v&U{H?w*XZWeF=ALZt=x6WM3bRn(uy>-R zIKh>xI=f&ADKK3ttq2*WmaDYLyXIR(u5TDYHCzIe`1LG{X(`Ux;OJdpNf|iT?OwD8 zpB7Q&vmG-~A+?fS)-eEXh{?!s^=l|*Ar!)(5`K&~EZ^oq1y{z(NAZv4_%N%T+Ne^3 ziH6+#x|#!UT*Ch3Qz~}D=s_AayOoKv90D(UAp&n0`Xl2*Jnd!qCL7cgSoZ-Evev-U zP?RlNFcJP6Z^AmaA>xR6tNfE-pr>>|@jZV{of794Nc=xY``~cLx746&Cx;F?qHdVj zh%U&3US7^Sx(Mt`c89Fx#7k-m*^Sfvx9u@JFJy!R2a3?U%=KX77DQ3YIS?#YlN_S^I@txC=hz(D=`JC`lqJKQDym{D02jJRN=Bn)QqgI6NO% zJin+ae`qRaAsPbWT!h7>xA=A(;+oL90;@F}h;6NMjnXO~)F-D4i~?rJ+-B5i(}lMY z17ufEGC8xL?X#2ckhc*4*pN7Bu^J?Ms^&Iu2iNimpO=AlQ~~B9rca+L7quVO%}61d z?{P&!N8Q)&qiCYL4*QCv?4nHet;+&a z;WpeGg4+C8W$Zra#@ugu5!05VUFQtwiJsnC^s6oxIx_i3-w{5LYHRh+OvW!tV&4t{ z&SUtL-Ts43Z#83fmOY4PzBKm}=~cRJ^aJ6Oe(Td_DR$4&r{`fcte&H%!cPV-L>y%G82GHqELoU%|oM>T9&SLj_ z9~9OhPGGNjm*BqHqYjID?u6u&F)2OisdE%tDO2X;D)X5~JqCMo$xfGrCQCkF*|Bwy zV`$jZLMP>tRBe0-*d++SL`F z3u~3iw4nyDZ}Wi4E4A%EJ4}A*7+2bqtjoX_?ornJb2O4&t1lc085Gmc1r$11|48FX z>-A(kdo$&FlrGhDY^E?bEWycgy?O+(TimqIB11YsHsO02ukFMNeVMScGzQ7|CJrk;fHm8W?HWsshFun(QjNg07kb8aa~NEBI3HZ3M$d15Q_~ zEZK_+jRl=~t`8`BL(x|)aak(ZM;3E;Q^+V@*wr|x)h3K~p7l+<(W0=8ktE>EH6^|i zQMul~qkZBrZdr>rRXLTWcp}p})QG(WI|lYd0utqxLu6^BGz|own^3>-TudnVlBb`@ zXs1(!ML;8AhQ9~^u*nRp90{19)6ayURfM3hTDuy$Ok1X|@VlIYp1qzk;0`<41Jr$w zfpY>O6ZT7q2FB3R$;Fe=@pj}&H(D*eI}y*n_D23t+x2!I9!pwlpL%+;GI16+pEd+7 zcy?dr#oY&T@FHLK&UC2 zk-}*ozZfjphdy+tUm*#gF6HGNJ>7l~t;ceI61sS#5u$sM&P zP*C!}k4>aumY3dyb9WEI?=jl+G^WhS85-wrf`V$AagG?+>?5KSpDc-M+t66DVcF(PN=}9+rGI?>vrqdtvCak%x5-hUcjEbs9U}^%qa|~Xv zM`XIx4||4W01bhJ5vgzQ58O)~IS;F|#s=7;sCA)w;G*dkgGGSgIe)<5so7vLD0ajEQFltoSeJ z;3^{Kccml4gCC_?$mi3-w4b%iak?$L2jOS-$Kw@u&_Ui)k08+md^ zcee3sERi{m#ZcuE%irvf2D#p%H(4;un3pPzPs47qp$`_u*R7io8Wdv+J9Box=o68F zcD+}iHTX1=F#sSL$q3l0U>bbMM$`=gAm@&qR&mF&&6^cwF*T8d-9TcBtpJXnc?Uwj~#&59Hs8{gs_Lx%NqWL~eo#jn#_37vyE;FBe z_OtEm0sdC-n$-#dhhz zwhcLrnKR~Mo147=Z{Q3b3?vIRjH!B+pDDyA^)fFOR8^u0JM3q%+>3;KhyrY+rz1Hs zg2e-wKoK$i0)9xcM>H*1T553~>fH5?_@cK$vNYuLbZhfFTG!E*Rdi35Y3<_|N&8S6ycJ2)DRcadm-gvgk zReGKnAte-z0%0zn;|H;BeIz(S`fRWIJ7wa%t@ow8x$nBPkbda2M|v|Ro-0v z*!XRz2Iu@mHfz@8WVsdF)fNilTw$g|We-~`u%cP;jbF!Ppl_dJu1qM5VwBq4Fj~vB zZvr&gqgs^)7eWkB*8wx+%Ujq=Onf3GsE!N%DW#NH+8Ps&c7irSu)^AAQj8{7a<+W z^wKoECF3$)CAAdInZTG~Qb@OtBo$7lua7~5l*^kiXav^Ju4x@@n`J(SNKpR0!9&o< z#)^-?6FW?auRQyLYgMJWND_xcP`y4CbI7K`A}ONDBd`Orp(Bq!M~;_xV(!5;v%r)_ z>gD@YsVkkU3;qX$x&t|ZyZI`mI5u<|EBt0vA;QI7I>|58+TR=1i)<;OPsi9^jhk#O z5J?<V3-wP~*hSuO>(u9Jh zT7>auu72=gmvyr`I-tzEW&p)UYwffwo+xA57t52T#LbX7EL)eFz*V-)+Q&K%=SiXI zSB1(?(1d2!B`6$xQNzzfq5lT4(i~8>X6nLxilZMon)x%H&UXRi9E$U(T=k?P7x6M@ zq#Re!RoZ|;|2-`SHZQ6(k3SfZP*`#c=Svawgg`vdp--Bn&aRO!ECMWLU`r+IHc7R) z)An_=_Y;(RZXw8gnGHAcj#n|&rTz?_r_Fa(R3ycZCpQb{{Mf4f161k4d%G~s&q}+i zng1fUC2{>Ns5R4)K4mr&R#K=sn$T#SqQ#PVp>ePhy!?lCn{rmvv~sY2$(jd_CG%lh zhZ@@J#l%g|z&|SIHEUfU4b8gnU`8X194R{uv{Zu_no(l3axw&M1?}3{#VuE8#xQpX zg=;w_f`aWmC$7kTBu99#_5B_@tBPh6Iq{*e(kO`hziM2Tlm zO4?<`Ued@D!SD7-d=jX^KM3jL5X5w;wZ^3%8%fTwN`YGzuHiT}mgiAY3ig=h(CZ6)DR6 zXAJ++i7F<2;Yrc;G)gNod#r|F_x?G&sSqfXRd`MWjfdNt3tMPQP&;eJ>{+6lJz2P; zDm)>9@t3NAgrv&jh9O;wh_nKh)>C1yEB}%Y;P!aWKYeGz3Ks4 z32wY9bvRk-0q_594+em`Py322Ey)2`8|yg!7gOIDok{b&9dkFfZQI#wY+D=KcCtw} zwr$(CZF6JWy5D=B-~Yq=rRJQzy1MGjnVIgZyQ-%3%E@K6<@V*#k`k2GE3!vu-y=34VEML z)#LT(+ChnifF!G}KS^a!3L%JkkuPL*x|+}YBQSetxn0XgyE9=D;|cZEU_z~ar7PHr zYj%y#au&bWsUjYyKj0@c^m;}JTBz~Q6dH?o$>1%>i{geh>A$2+CJ`ScJ+(35@9BtE zQNNplU5aNugS+rx*kW+2W~7(KQ|q5G*Ckc=J|RISbXy}Zlcyi*R7E1VkY(OppBP(T;l8dIcH^HvLBGYmCr ztquh~VQ|HfkzlSpbZ&Ej>*Cy?xwP9;BCc!g+DqLn-}a;6)ybTx_v|{ zMO#qHOM*Tj;UgP;)A=u|yZB|WUygvSrI)}va|KtO6H4k9k9sp;sVP}zv55xH8p?;B za4mX6wt2t2cDaFa2HlpjYd+)`<(V&>n^9@Fp$0rp+id+-G`OH*Yt&@bz&wWs$ryU4 zd8gKHs}zr#Tjru)hL|Bb0l}{r+8N3a+O>ZA!h7)+P7>M&v~&-q zbue-R3ydVWBbEdWnIO)f{FW%0Em+tm^`GJ+r*r*Nd?!NU;tX}E64hjlzs_XidgR4e z_tez}WCue_?J~By`7~OQ>Ae`OH)zBSV=!HjqUsf;`Yh-&Cr`Fq?Fe*d?Vt$lR@(Z% z^PT+MU~ldTi@;G#6M|@0eCR@J^$g=zu)p6e#%LAybG3z%SHGR~E}a!otF=2PYd3>u zs8`+&T87mcPMh+-PB2gy{rfwiR>l_P-ig)T3kCx2(Xg)%{DQ_!n(r{1W_7IYI$WA( z*ec8aR#)G&cDD)=7csi&2Xpd(UE%6&h-u3xk~%L1s;XB_`Nc@7hARzlwJ+a&pe>Qz ztnQV&4%yjvx;tZoVnvBaORt|aQ1>ba*hZ4Zg!z=t?%kL_|$kgH%!Q` zXVKa7x9yL^m%)|pCg>CPk@m&E^Q8*4={pMP$j{TKosSwn%TEPGXH(IiA*3D*(J&4c z0s$p>$Tw+63a{HMWzGt^Bx#{!gXnZ~EGi5pbL#-MA^iJHgQSq^e6^6UX5l0jwC$aR z5YxLSUd$0_Uy&y!jIen#LAVNUf#7?KIC1H&2w?Ecqp$VFFw?29(I3l*T{p)zJ6KNY zDJchPY4F+Pu>zH^eqk=8KPifBR!b3~D~}8)Fr`F)Td0|%f?Mz-)1;Sy@gdK5;lQIG zbT^;)DY%B=YIPgUthZjgb1zu7;m4CpZA1Pwud-Smb zF=AlC7o^NhZH08cmWO-KAL5Z8z845_nWeN*Vo6oga(rTfc%n_GK@JlVgG$GevPT!nARS>AVJyg*1hGXRfhM783&wzHjzQ}(7q z#0F4~nr=PrSyiMd0?~;Kku6}Yek!OE*`VOJp{hX2Pp2o$hl+>N&YgS*t|=0ALN=92 z6RUbB!j|Vs=6NP)`MS9pHoTooZAT5s6CA`GZZv1i-tt!zs*Gk27x~qh=Iu2L59~KG zpEaCP>L$vnBe<9};4_euzeg9JZg+1pVQgWk2>4k?!WzG131AuC^0Ne{DuAokJ49s# zkW9|j=A7`F41aL(tuqea!U;$?EF%&=%1KAFvP6(j_0M)Bsz`SKcz|O0J z-s-$%YxX5?m=c$ft(n8S^zYaoXq=0Wh7V=$0KvYUai27=KNF6Wt=g42jor(heV!qQ z+!G^oH7#`7(e;AHJ0k+qPppE!1SUJ9!&sqv<$F7jwWiGUfn;T!KR`Z4ioPDTJ=1)F!N?kK-mN zFayDw2tj-!$v1}xI}fA|G{F>X^x=1HY699<@&ON&JlXeL2N<_0{xtway55vBrU{ZJ zXgEZN+!@sM(EJx;;{E`mY}T^?nsxP2IjAIrN+q!?0JJ24R!FxrH$d--U9#{YyPq84 z;_jlRcyw9O{ReA#lIrL)8UsqH@!9auU?<+a;$udl6{F5>FM+(-oS|^&@Zq77RIJwv z-|1fwDBhiDBQH-)Ge5<`c=!c8CAU)hXmDu$g7FVzRE?$XQS!KTlRJse?0!uIXOBOj zMVMMxN+b#KcDaSslI@+Wld)L_YN1BNZgllH8J&-r8*tf)sgSt`l_t!JkJRd zoIRn?in(WxPJ6#$j|=ZhhNt+BS1`(`?PONUsA*{-_m|BJ(I!w|e=8ZAM#4M}HW!E& z8xe}vN-HOZN&fKRTQf#f1_bRWhoqpBX{Ma~j92u`(C96el;ldni+r z&@+2ZaKRwwfky6MnYE~qid`9p(4=(=71cmdT5JXJ%fkiBLOSv&{95Z*M991q3FQIL zmu9yJ|E)upL~k3}ghm$o4!4hYa*M|xH?n3-SF@%g!*amQBX(3e=R9dn&7p!tekpHU z+Ac35a8nc+y2UiEYnv{97K16q#dMao-kE-%-OscotO#w4IX|}9xj8v+=V8Y8(^ZTQ z$09LCzL=y%=ozK~&%-8obR7ld)i9y7F`QZ}gHy4jjbaDl({(ao}PzyHpNU%)QU}2b$=Q>E@hFZ)V$0m;^1j5T<_RxkM z@8V~ww`c|(b&|C@g}+46Fbv|~PIymYpfXUYwM2j}~NSpu8? zO$Rzp9T7B$K?W*JowJ;1I`@3RDA;#z^6i2>zL{U+WFNG>=M@d{z@=C3!8H0>{ur){ z&-_VTxmq;#+cft*Q>zwB6CZDaRM4P7D9h_rafgSr~0QptbvR^~A zMz(Q|LHGEk;*9z^C_){fH3KnSffbs^fT{+oJMGbPV(b1vRy)d zjfJDly$oC*l(@%5W{!`L*D*8zro^80C$7yf1-{C1kB}d%{LShB%zMwk5X=h=-=NVk z=LP)S`}Y@~&X5sBs8!6Lsh~HIs}W^3nu1L$i}JKDwC>m;rWu^G^gRgsp;#`qqPg0~ zs&Xs24Bzj*H`|dB@?6QwyvXZfGd4d4-Y^N;>L9K++v-nPS`Rb(WwL>@?=lhvev)Sz zRB#2Y^VliuM$86C#+Jv`j%n)RG86vckcrfYO09Zc_$B~Wm6{l#D!C@5ue+=N*2*x0 z)S~rp7E;@~9{5GJEimkAzDcN}ar7a%cXTqdLj7W zX#44A--H>0>+uq!i0GJF1=TsKMO2PbQRX_qRVuX0&0$ditvs-a(728<+(-ta!;tBl|8(2H z+nx+Cv5PIbhKYAxc#A(*&aNbyrGCt#@-{H*S^-YFhuXnzE9BqnewJHbe*YHVfO9N9|=!EqU$BWO?oSWaNmXPpo&g zcakThdzYiE$r)zKG_@NSksm`df15fEpUplpXlkAbOZ+$2c`B zTXk?V9dg^vPmfln>LL$8DE^p9JpXP({Wjm;9MRdBOz;{JBQysIddt9r4x-E8Q=;9G z(7BKoWuN@g-yc$OSD7bI#?EJDgJ=G9F-c)0>7g_de}~l)&#ZSX$=BGd>|2Jxk_O{L zAc9}&kw~3DITOb_ikEjry`F-ti$m>aF*OnpL9otBP3N5dE=uwH==|rPvt3yoosYg& zM^-0emEAd>t`%_C(#)~p>OHz@Yd8Q_o-1w=gCA2opCnl~|4SI&G;cIUh2dweY^4V` z(-pUBx~S+Ct+L$GU||rSpsngmOnTe#rxgK9H(W;0N?%A&-axFTjNLji6H$VuvQQPYo%zh$WWfIJtxw@`U5AZV<0*1CRLf4A4nEX>t7*=M z@N~bVK*+q)QBiRpB)K*yUsUW$<-_5OpOYXXEgxBuU_nk{mySGrsB*J`_Ba=PO-kya zL62Se{BFEux5#4VJta%E*4Z%DtA)BY7vbuK!ww@%v(&5Qg#4Xuph~3TRb3$ChlRG2 zBZ$M8lSrDVq6YO>{Idu2+A-&TsI~W$+*^60RMLdlnu#?XQ4I#JCOxj(B(|Ov*?n7g zHQ{p&d#oxWZHoEk)!Do;jr-5wHO&aA{)!QoM6nL}9W4_d~3L1*gyn-f7^5(m2-e`MHY2g*|1qV>ks%^wbE+6v2u7 ztx%!Sc_dkM*<0knX!mrQw0p2D$T7M2>?}ReLmsB!V&ITv*KCMv}&}T4O%^bj{ zM6zF%KC*Wk5kHx#uDQuN9kf>zUWw_@{DGr2rrd}eq*Bl*=CM7mt>e-djpNqH%vv+1 z`T1#w>&(cmS?{WnY$;Ao>bzA@F@=Jxo{ZK$elTW~MQlV*o`0(&rX^Nc6Pr4dXCYdS zlW^FUMB!B7{D!tAa~@Nq^k;JdF+p$nJ#?r%?*s)mp=&33qNqfhSX7>KOD5c^iEP4b zg2zWPe?eW)tuq83c1y2Kk20A*n7seFQk|&21c}nCz_eIDhX4 z%D(+K?vO0(k3t!{<0wCvuRFg1+O{aW`+l;Hc(KohmcoqU{A#({e(s zt^-Et4WOtwf(xqua>tWS{uIQO!SF@{o+f+NX=3u(4PXYw3<$`$?3k8zWBiTi8|h#5 zp6#Q{;Fe#0m*vnEcg#y800XNC*nXk<<1vO;EVtN=EI1BPt=PlF5uT)@t%)pi?q$56I+g2bx8zx!RE)LdJsxa24hUnGsinVT%2*cG**={w1Zxr8?zI zRY<5b6p8+^SJWvNTb_=l^#sqh7nVjQX{4Z~w_8XrmiGneA`yVY8^XYFa+fwn#VM_e zLk}Q$+fJ7shVUMWP7+B1?lZq-)#p$01S5mU#ngbbgKSN#Nf{;Mi8A8y>Xut^sP7^*w@ zpp;%P=k6f&Y*9cG;!J*W)GKLO-59yRZt%OY4(VdVK1H01RX|y7Rw^lN7In}3jDf>c zvHF`yWN`ynI#YIkiDN^C*bu4;a9-EtqEMr2i(hpva8=o&xE4$xY8jgPYe5m%Sb~y$ zvlu2@aH}Tj29`!?Mj85gByj{4J;jT1M2WbF3fgYQwd zrH!Lm)n=bbOLf4(q719SeSbCG5KA*d5|@)eK{E#2`xS2IDtH7bUhyL67mo!_Gqw%O zInvS-_IM5+FbFLp(H_D^aW{qp%f-oMk$tmzYS)iC;xA$KH+^YSp0-H+E{=c)R*>4A z-vn&JQYc`;Y~5$uEM74a0xW@+Kio%2V7*OUYB!AbXTBBNQzHbj*zbo(=s&Le3ub{nhgQ$M19&Ss{wQhV zm_!ZUaL1%7WaKHzDrQSANo-nQJ7p45(*xCFi7DPTDD%IU??%(bGWAWzXsDFntof`-(mqox#c-k~b^$hC(MLsIy1cj! zHkUqb-TUshv(7gMAyupl57s6~5vHbASFZV|GKx#wxd=_QJRf(QWGP)msl-W^3vRyP%7c-4$bnfOs_*W}%sTcDe zXuLVac0N(QInh3r68e-p{Cnwyq{6$o^6(X84wy{jVB~m7a(k>%gN6FO!Z6FN>b#&e zf3#Q>cXw%ZTqZBdVpD1oWJxdw(WZJVQDIqEbg9KF&Gx()o|~$eM2nSR@{KjzwNiwR zExec|9nFIxiNjV~!lNc?{hM%Aai|ei|oF2KJU8O}0cE7sLY$#4vVWNk;AnDnOjSr{B zKr*xYzJzmzdqnTGOi}uD#Pj`6$8z+z9@h$KqF^(J+*|L73Ku!b`A7Vk{vip=rBRUU z5SfTwi*>x*S@4S3gcgnU$6t4I8E-E0S)Z`VRc>9qR9 zyK!Haf{G{47!7C=XiAY^eDy?J06OrzE#2xC3?6k%+BPVqB~hfZjE6(8)EMM#`xNWc z5KkKz-DK-XSteVT?^6|VLo2QH$DE94T9-gZ_4lMK1T1IXoG#TBrWWHtToVX1gU3uLY^1}fZ(^UQtnjLHW(KNvdD!rieYKnTH!r$5+ z3AT)%q8MaMCCC@>Pp)fwZw&txrZgsQ2U-%XpZ&7MQ8;YhHx z+1XR~xILR<$-WzCVdiVUZP4usi_~vif3Z=iF~Aq*a(fhG3A#l8Q%i?^jy)7y!7Fin zwd2Vi9bCaVS~`w!Fsx`XQh#5bA?4|?fQrIVPuGQXidrUeXNejoQN4p}zoLp6WmZ>R zDpgX=Gj>^Pj;V)+oet|=ksMF$fFu>p@fUf>Ro#k4PbS%F&E&PuQ!fiaziG@jf#VFk z?cS0UyC6SPf*!C$Iqx;P1m%brXS7y&xz;54aOIZ7NcuNbS}csK@pq80ZqW8;wc~mU zNYc+HhA78V^(wY>33Qj?=?V-S>Tn5~L+Nx!lV!^BuHJY(1-$6e;xLY|?b;fagFmvo zDhQIoQ?07_Rgx)YkS~CXE}KX^@pOveh6(auI~oE0?Xv}2W%N~UU@()-*sVuO43X5de7W=7LY2sdj27Yx&W-&XzW z+yp8OUP263%>Z=m-Y~FVsJCLBb|S`u z_v?CE^X{K-L+St)qX>s*Wd!P-kysc-19&3O$1N>`S@t;cwxaxX+QuH!s@de?UmLGy z>eebHJrWL|6@Fn=^YwRHS3Zx@&2NsMual?E{<9nMH)UOJ?~ofEk8$il*Lo3z8|Op8 zP3rOXFL%r8GgxkeXX@hHFK2_>&-O1@eCZv_>Lb3`6!V)d-RTWJ6>OC`8Tx4$jG(OW zXtY)qOB66L&>Qc(P%{njFRnfJNwyB>yJ`9KtL99nH_a{qMP{(cj* zX94shX;Z)Q-=`IwdNez8{EC=k_!+|bL+=P@Z4j?>dwKwL$aCA!N@+*f^r7g)`=V-F zbH|8=b<_X=E~9Sy&AQ*iy1v)tz>1!`stJ`9+ZhAbRhD6Tb993z&U4iNwhJJwtlNzr;tMVvI8T z9w;4bI&T{&-Jw4h!aFrD$E>5Zj(rHZtn0~rGLZk!)PApc=w8HSJh&dVvUv~6w(4mT zI~suMc6R?>G15n0AP>xu^B0ig`nL5%BG5g4$Gb_k#%vfgbfMNG|0xuUv&ACF^HS0C z`8AZa@~k(yM`eF0tiP^OL%8x~bnfc;ChTPe807iWaYj7WlseCbF`%Muv>%>BZcS`sJ(sCVlWtbi3_Ql(LE)ip{-96TDhai#7& zzWfZlTHi7*G*_B5yf*dw`HJ|*i?ak8)AtgObY<8GJOdJsw1p*FQ0xo*y!X)&&BRK+ z$Ne^ov!~NWyvK-tJVU6b;dEjtb(f#qaB`djI*9f&PCV`AcG2!3rn>^Afj znGP4$%ty_4@#Nn!6aJk~;ut=oXWvGx0B>&*8<^W4RoYgVfMaz;1{zGjo!yq_VNK8c z=d|B#miW%=#Lk!5&X-${kHu$B)sEjQXHEB4{lnck`yr!Vr`H$VI<23>?eVXu zUYsmdtB1o+%qUJ@pI69WCuS+?6N1@{kPFDMDKlXcf&P`+$LE0|aMx6BE=c`=b^8VN zmu6M>l8KbKk?7ACUCOsl`gBTUyg8+#YhCaA#}+-LELOeu z8K}l6zeX|r^`psKp@zbm@g2d=mxz^Hcv0?en(r-w?e6D~IbE?K2~kZu8frYBMR`qt z)1#rT6~R3vo@_D*q~9@BI#A1J4(KIpR(>n#zpAb(e_h&Xu>NTjFIoAzn5e?M?!GBZ#j6Y4vnV{=W{GEt*Mcjgjf6v?Z0f=(Qb5LGE{yd+hfr=&Cv0OfNE;nm6(y|9s_!w4WIk1 z{O*?k?@K+mmitM9q!j?b2XBt|JK*K1r}Ya^37C5uo&bDJ+^4kY>v^3Dx}T;nejXI{ zJX8U`wEga?{0_DE?ePD5)N>fWQW(FsF#R6)W+X9g{`=JBuzp(bl{{PScu&-?JDaSv zn94L`x6nP^cST_OUQbP2wGT$`e>EF@rVjDg%jDpn_g{%46R#pBk_6e1G|P8-kzWbhD*i|DhD?)VLLf_0816_xkl}2;Q#yHMvXO zNW96f4r|Bf>kHV@`Ra4NSe1bJZlL~vQ&H-Ku^qPeWm>oG{k1&=U(@r--)wd^n957# z`|zRbS{?Hz7x$t)&lHvFgsha?@wdi>Th4W?XSV~byV?$l(uL&L)%|4z=C+5?jGO*I z4uf}6!RH5!#RsRr?)3@8JcQkKV~$-N*+&wcU;L~|74!@zqh9Olu)$^&pC3k;+jIL& zM`g1BoW37{f$PrJaaIH-kDWIf1@==3S}c+spPhc^%_nEI(>J*QXHd%$M!$29h%L`o zw$o*4D5X*~OufQm+>8DRHzS5l5n>6a6_c0FF@{|49)+WdzxTAR)csZrX;QG8YHv^X zgv@RD(jm$j#)hZM#J<_jgIDqnraC5dDmv%Do2)}y zBvV63d6&SO%R$_rIjs3DB5&GLCqMx)pggKUDsQcdUW@_o%g$44PgIq$D>V_05}2u z?*Sovp?iJ3yN$>JzQH+NOpSV_MNcy=o#Io|OS!D$_#Lw*-jBC-AHRLyZ2x>de75L+ z2~=TD>oA5SbT_kqgy`#))ZF+T)EKm}Nb6%_e)-)W(!&7)zumwiO~IkRitGE{=6?*U zGeXnG-;Te{T1EkM$=o(d=Cb#r2PxvihcZwS8cC2KzmzTbUCaPGW3&g`G*Imo7z zE{od)t464t5PHAP^tiu9=>wX3eztL=%bf(nYQS~_-X?a4U%GY3c4^TU1i$WTW;wjb zk(ELBIk30-k*=v#Fd|0nV=%oalFe8L){{e-}?WVUi>-rFsvFJx4y5^+VF@docyy`V1Pi`A;8&|fPz**zW+J$#xLz{Oi zi-81@le2{}w*qoX);ovW!ZGW|9QF4ihG_Bps1fGZ)kk|kcD%gUEAM8eVo2Iglh~)# z?RAtfzmBc$_QMo_Y0JV^oBz5ATQ7GC;Og0SbI0%DG%zDHyt<`Z8bBnf6jRMvyM9td z+Q{2CAL>i2ALgQDFHhtXL@loMT$!pyBdV4|f=|1GYYn}f`pcRFNi}K(m%`Vy z`OlxZAE@{-HJqa>%c!Rjj2O6dwMonoVcu+tqkhGL8Ppu)Y?-sP9Y>GDn|Pc%Hmfm} zHj2h41Lskc5Cg|fm5dz4_3gJo#=WcIULEwb$waV$^x^nvB54(#lJKLsqW)>rs4swyjrgJgX2roOmzOC*Ko z@=4p=*ov30{ou0Urm%Rp{qK2L|Wn^~}mKIP`w)BP;?!g``?F;_mL9 zIum6N5-b!`%)_Kg4$B~RHdkFs{6qkaEzXPKSay`XX7E?rG~GbNN9((WA1!*tWmK`H z!|k%VVpMSPs?LETlGgOn^hmk}z+wnfP=!AW@&s}azS(I=|1D7zW;4`r93BYnTXB?N zY<74w>d}OZ(;hJX-gLD*^~Mn&vjtX(Ex(Ze>sTd;rp;kg{dE+_Qb&0T{mLUj_nG~J zUo1|TIsL&^UZGscnN1(@ej0+^^P)rF3l@Z3cFf%pVjPvIKv9^vU~aBdz!^CtjxKdO zuLwzx23ZtgF^^r{TNW!c&Mx5%!4SD~`dW*<>cm*8U?iAssa5oMgn)$*(;otr@9f^$ zxpViys^6JzUHl3#F^eo;^6tH&2nbc!J7>cN#bOZ4@$^n&$@@k^fPL;B%nLBTRp&Gx z$6TRw8Gn{16}xe~TrusKPFB@MCBv6VeIamJE?z#1XQs6XmqTH0;~Y|EkyZL`&GUGF zskK}R`pP+b@2YrKwU>i5xgT%ot@2`GJU^|!_-{MeJb=lcQ4(JhfTmH|uY9v4kJV^S z6=VF!EziR_56e6`oDH-Ln78%V;Flh^;A5=y^uIE(hsXKU@dnL9-k`;&y!lp(K>cRk9JIQMg~c} zWq7ugPwv-Wlbu!Ta08!u+(&A^QhLr(knosl^p^{ZV8WSVs)DC6^|%)yv@haI@lRHn z4f1NoX^D9_u5)sR#LI2S&KN`vHM(4{(O;K zveSLevZ7kf_yI^9fvqASBUN$jtJ7x(U0TO=lzPn&e8JHKbqP2wsB8w|5n2-drro5a z(P*9n+0upTA88wCHMd*f3Hr>dU5nIVuq6B#ciLVNfD@WSnNz}uy;@T)v=u+aJ5O}R zCO?=^-uD(M#cv%pBM%B{0;t4U7WN*LySI%4U*P1s{rgBJs1@xIi@Q!_!WrukIff@q$WS+dbruVNy zq)+QBw<66OwCwj>Qw9FLS0s(6QVe?=Mr1x2-cn0>D;*4~pM&^t~>t^uxa0V_#N7#UDBE z%xbzhlnE4hS@#(~+~8o2)T(v%X-r!giqzPXgS63B+&K$0U9FIWJVN4Y7i39$yA*WI zA(ZqOsHPMiEO+VDqe`l;#Ze^3K5lPGrnn#^InyqpMb zaRpv30CKs50_nVFO772fiL$ViFk_> zi9l%~{uYVNqZ&)+Sy~}EmVYP}Q4sy ziBTNo0*zrXxm4K;$RqV7R!8>lBbp+*9X!tFhJQ=tfX!Gb~JkqjLjc=} zU^=i=JO6SY^j=DUyc&Q|k-=8PWbhr(+TPXW!M+O!G6q7~}>nye0Xia>;)d_dcz;%2MU=e`ALmE%V$G-y6{t>iVpmzzn z^$kRwP*r(3up(wN;CDp~A1F{b-}Ekp5JCNi(N5t1Q;6YF0r~HmIS5fLpauc+Pg@*$ zwr@$C`JZT82butOtIq}Mugh!z!Qf+Rpu8diqH6BDXQY(=yJrPNrT;nep9gW+WdE7i zJu^Zd1!7!4%!vG7SNI?Hk3vrNIzH~tEvw|iFocA9-yT8-Z!*1R^`X*n-GheHqbbsb z^dX34RWTM_pv&mf4W*<_xVi9}A3%aw5P{De&!zm(I;U*U=76`)kU&ak5w-nj?%Ux|(9$-y7ETs97K62J zi~a|U5Cr;)fDSk zs%mM?nK%uwvK+_yN~Nhg2np-p&%F}EsBnA=C}9cfA*X(3av2Qe_-q--kl~9j7{Gt` z#;R1nkZy4&?4R%*!_;xc@rd(*#;^!y=W9OLkHdWL{IJRHpr5hl zV-Pv`r}{H!)eQs$kHLQ+SSIJ<13;RFAFGT&kI6TjS4>d;5>&4P(FreRg-aQG6<(KqYdAlYmC#gM=~s538-; z{7<1&7_#@D;;5v|F7+=_|NpenK=Jt?(ZGQsv4a0UmBI9 z%BZl|IkJqOyx7o*^99d*ImtuM*@o*h8+z`9xw)k}2X{i)_52o_h-zU#RPiHyJM&lJ zo*6~GqvRn5(GiE1ZYBiQa{n_L7fkE#gInUqNBi$l+kxV4-Q&9`iD(>y4%286$8jM7*R>!lLYDh%$Fl+gH$h?U4rfE_oM<-xH z#uZz~5^m`+uY#-iw_Ld@=BEGdg4F!@pIr%t(yWU*l4 zNa&tWkBFdkSi6Y~G_NXNp6JGQCJw_6&G9<&jCmFnqSR<3qsnZREWGML7NoLBKWgKQUJtdd;jTRMnx{0Ian| zdcy}cW0bw?f6P2X+TVK*!x!`a3k`OC>>Iu#1T=Sodk7$Qx(hl}Km_$qX@A@iI$M0# zqf!{s{}|bwzzGHQhOZh1$(;aLTMXu;_g>?h^R5S-x);blBgv5H?gUn>HsIMKa5Ksv zGe%cL0msa=e7hc#utYa}7!W`>;NLL7R#u5!4~Tz5>p-#qA!s0^{u`PvMiT^VhIFd$ z$ivyzf!%_|HKKz0dlFODtSm2qXWpyx%uRc0s&*J z3kk}aILW1V_TErfam=@8v9$VC3E@X9ALJ?qw3s`IW<8N?xbzX6Ii6@7{$?tYD72}H zpCrFr1fqN;Shi5_8e1!AD&pgjVH#e4mcixqu@00sZ0^ha8vm`bnL1ji^z&MntMT7}`7r!ogF5t*J}y?-h;?u>b{bC_T0OZ6jZ6HJvBs)IAt&rjk}v z0GZ`n4!GK+SDC4cVjHcA^FF8h)ec_VvG6fA3gA#bh9ba6K%YuIf3ZK>2uDapo&hvB ztZl8s-t@R|w)g|866GnrIDt!Y(5pz+UV38pU4L){uKz><2|_Em%3`}V_c?BDFDN`- zZSNs0g2wJ0-wzl%`(7~U|6iy!V1vTzT>S`uWRUmo1xrC7sO^O{1o@{_Md$V_034$g zICpF8`a?2MGK0czhJyq^0>=vXN1(GG`T>p6>evMR&xnquLI7kn#{$Q%fQlPFNT5js z6ph{bexQCP2pGJM5D*6H`Tr9vfe;v6{|&7QEc>J50EBGG-GRm-iE4Z2@T@Vo&I!~P zx<{6ruN{K96$MP0=ep5R9foHNem5AoyY(5PEB0x?TK{YX72`2op%p(7;h;QWLO;wn z+18YrZ;?O!((qhv88rr7=bS&3`QY z@D*HerdY^$BX!O#P#7rjm>mdUM&z7Q)fmujj<{`p36ru0!m>J7Ly1AhH&L6horRO*=+^s^D-UhHPuWn4zBi26-bCvV|Ln6#U|5m%q` z*p`bVWD3Gs=sE+ZJu1@(j7b=YvMOilOMR_6rJzPr1EJziQ4e#x&=>09EFwAKa1B97 zk+!Jqf}w9EHd@G5rfe3bGBx3OZ;{#lPQjSm%3R6$$4rgE=obD-&Q&twuP;yd3|n{i z5fA)7uq(rDx$96CW%J4;%j^B3!}`^j+fkUy4T-+z%txuXG}ch3+r!~(%{tJGW)%h5 zQ*1m5u~~6lR>s{)Cl3`(w5@69&r`0)ncqaPNBSm~`)OAER?($3sA`ajk?OLh)~X0~ z3){o-I?I%n=g##pTW>f!+pWc8C4gFzSu%=0BjV^w2^J>HbIqTVp)tFzq%_oAYF*%j zL}VMdm>~6b;u{7lziEx0mLNz`%Klrjf8snKHnVtaDE47ar8#KJ<{33=zj^WrpC8@7 z!j*XDm~OboCJn3HVT7GCd+$y{{v{-}!Lh*ZN&fPr60Wx50Dl?Bced{=oP3gnN+-&Y zyJs2?r8aC494ALQj7gGNO~JlXzs|%rD`K9UNNz$Yo2GL_Q+IGc(GCgc^p4Uq!;x%k zQXMgfWHjr2s+J{~K#^CovEWK(T^CS^>J|GY&_6RTSKK=PF z^0^ke)Feoau!vlq?uXG@pNXJ{DMDX*6y@TT@mqM=ufrp5uNDuS!F|(rr+WAEnGvJ5 zo0NE>O1|NEz*z0VNt4#7Iu*R_MxzO{- zSA{d?@HhPc(vj|I4tF1h1&6~69ovTX+|oDVLZ%kIJH2|;F!ZcR7Qt)#arItKf#ujk z@MH5jGu~D)@Y1IJhIh8Hkh6V4YRv5r8IL7U*z|?&bL<4L7P~|WNtnLMgsAx(>il8t zxA!S%cX^>>1N|Y`;?~^U2XMm9k@?CIo`)WpG26U#${g(5XLa|6ikaEHT`L{kcgnQY za~nEe^(s;<4MQ=c+&Adp40&3 zN&ou%<4OF$KL2>qzw1Aql&ucrNx)H@{_!NIe>}V zm0@)>-Ih4P-8D!EP6!ss+WS=7r|;Ne zefY1q(M*hfd#8_KDHb-RARCV%eB8Flmh357K(rO;yW-PYU0XSTxg!DgcN%?OYr=uo zXus+KB+hTVJwHv*!%qabw&=e>@L`E#Q{Wu?Mle*Q*hcUO2BD4cu4@}E2bnK9 z`aeV2E+=HTX$!a!a|4s;vf#xoJT-B;$F8TZ&-o6l5 zOFz-U*DE_mRSK%9Pa?Ze!<@{!oM;IWbt0$G%py!BTNuLAMPxDI?a46TV~f({?6_6( z#HD9GxfYv3gvLn9Zyws_^|y#ov3?4%f1zbwOfd10Fft{z6tz15vE%P=7XI9$hiE~=E`zk>;O}y zcs83|c{&YUf_^F<%XqBx@Y@zK=`omk-fg2^2g!9X@HKjh@M{tE&z7%(9QqGpGiq|x zt7)1&VQCUlkNfUS>1=KlBxL?3M8aH{54w`^0yi@1L%re>vroUf7=?*m8qMG@AEYSa zj>H3m&C^O&_8sqVb0EIfZAfS${ibi^0L|6023)Yw%dT$0fqr3Ch9(g+?AdpD5MvE2 zrq#~Js#ukjF>=GpsC9aAFg;IkFUIGo$X`1nMf0u2OI=;c z2lIr8((Jz>UA}N-LA|^ppS*g#ypB0J6WqNH-x+MZM#b}}`@ZfV?Xd?pFYL=TDI1-T?A4UjgKe^PNB8fD^gA0LbHheM26w$SZ)naql#;OZ-Nq|T%4hqEXtY@M?t(c0@4G~6f2ZJ{tD(i|uehBD~@3roCvdG69)d-;mq z?@C$ezhH8%-GU=h3h_Cr)LGo%Bdv^vASf#RqbEMcN>gV}*az%#w0Dopv`Q-I7S$`B zSJ)4^K}p_pQTH)qe|uazC|BTbhpOW)@Cz+d9;;;rJeh;_7PEmQfSm4K*8(sXU0)pRe}=MMb||d{06B~n0CI5H0OSN< z^@6=k`UW5e0imt>4LRLF9zc%P0)QMwy7O+}ndPDjAg8VR4LQIf3jlH$E#8oWpz(&B zfKdQB-M}-etr|d%)&hW>w|Rd9@XTtf{#zPAj@ANz9L8e+IXG+pasmpzEVNaR83M=| z0gz+QYM3|3U>^YY{pMtUpEo2DS=GT|nV;R%A&Tn8SBBB|eHeHzb@y%?e?0{Y`$xDK ztS*}CsX?ftyQLkZ#cF%|kIac5q9WQ;5@UtgLK|6AgxF}5eFU8X9o;0A^pehfgy&9w zeX$`tTp*oA`_!lzB{RP-jWd_e5vy%U9=j5TK2$xHkT@Ogcu_AL-ibMP2Wu&BxgP4l zlt9p4S?!yv5nLF;5O}#5%mJ0RTp{4lr8$yA{d*<{mvaZzFmXNv!gF6KgeV`mG!Ilt z4%3x#B$&-HmNg<^iJ8mR;T+k5S{!jjb!F?X;px9sTxRoy%o_E<70s=r+iS0KBdQ(g^zdjtLbQ119qAxPS7(slRqxSy{b4YQ`OckAMQ4CkFm7lXa8 zr*XXJ?OC=R&N21A>qK{}e?vs*-Rf62)76TYYoxms-*KY5l`AM%k5gAIXeeIi4SU#s zgxgZr5Z`eg=j@+*nN<86_Oh@jcPr4JeBLIhByycMLuR=X(SUiJ0{OUPpK;HxK0o)6 zJx;&!!}8whWdm8@Yt7pt?R3RI_q5VX3C^2UfHu_Kiajix2XK5bc$T{i7?36f(!jjG zAw>Wp>u>2tnrI-!0i-(6xi{>`AyDsDOp)2LTJ2rS#2Kvv)KaaMqU5uLqs|OTz$+lstIn*Nk!I*XI^*BUpZ) zbeJ0#L^pU#u+O3|EFqbPw9?7C8zk;U6?@L?<5@U}Fh_G!mfXa;Sj<(_U<@SO448m0 zhO(#7YKky!uVAG zkXrQ!!G5*)ALR)q0lsuGH4F#d7Lt2+L2_!lxpLwl_ReM3wDk-h0*bNs3q zHT)8{VQcwGY2Xfa;eZ;80NoYYNWggFk}MyN4C!vU*OW%tdqxvV@r67XT8ED@eSBpP zA_lAlN|pmxhoS1IAe+ep9cWlu4%M#No_H=dmhDiwuF9UNBL{|d55`p=Y(kT+@iE}t z$?ko}R}-%KayB-bQIr6$o zeuG*7dCQY^O)SlXZyuVPAvea=(>hCefGge~TR!2*sI| z+9Pq3wol4sGLHVjP+#D^41!|DF(TCkmzq3lV#dniuSQ{MynRD2Km|;dtfd!~;J`E} zrC-Lx8&O@n!)YfdUUUDbCE?+OKUh2$^ZVPd$mtR( z$9G6qiDB8b)j*v;;6u5lQX#R~4afT7g{j01d>h#H7DC}n_qniV0f7oqjc)91$-;}4 zzl3*di_($o4?h0DAQ9VG`;~y``aSK~tb>PjLrga}uFzO3Z4@??P+G1Y$~Qr0MlGF} z%r6scUv-m?w%Mjr?9^#cWl^Ir($<^?&wzXJC=8@Z-QdxH^GEMPz}fnu*;=z(f|z}- zZPId`<2MrHvDky$T|q4Mg0VvD9tT$Q-@~PHw3vYz_3o$jys8=XprA2)&oznT6!OoU zl_qScbu#4K9})=V@uA}K>)Z-i|6t;qe^R!M??Nm@TWv zP%t!m3;BK_3}dZ++IgkaMqA(>~!?uHb776-2#bQiHMN*5^)~z)ZM5>i0!=m?@VqYa29e zCi1z7Fe2V3QcCdV1FtbxI&E(9fR9bBxTJP^QnFGoO>MW{O zl#^#$EwAdE7u%*67oi@1TUa-?=Vg~IeWc3LyVZa8(MPG}q(`2kX>ZUQCScJELWOmJ z>+Sr*aa|CzGZ3zjNa1p3qBF#6$|z7u?kfGJ`*fVAmNGm|jWRIur2C!D7i=qxKd5cXy||wuhK5>rmpSms z3TBdk@(+$m3)z}cds-OdhZyb|3Vq~D3*_yBbWE)WASmbV4YfeU2ESOyJ&y>}%#HWC z%=>mTMxDDr%MtaK-#%%KDrvZ4nw9XRcXQdwJo;tGm=}@gNz@Lqkx)9d^{Kx@4*7tm zBRsyof%bWN?Q7$t2*2(Eu6mcAy!~WCB_2(2@N|} z$>_L2%dS#sCBumCG9y5QL&Mty3 zFGx^JB8YS5pi2|OzWtd&4cw{&c6Z6D(3wau3Jb^Ai6LOgnAjWHJaqg$+7|I7!v%&nIXwr{A;TtweP~;yD41dPYOvStS)1Mr5e|LxS^{C8W7?6r_ zaL8omUj^SKI`qI<1GOlchjE(ydi+BdrRU85EnTpZw#c*V*s$3yJN0r>GcAsi&|G_b zt-=OBZto-HFi3KEH~a$!Ox#rYg6A?9L|r?Q$gfpV#ORj_nfY!*&^fjVt{by|4mmUv z&w=##JB)pJ;>Eqs#xWyw4%%_62~BIgNG$f~8+N))$khVvR@sZ1S*9Wn4XPBrl(>~{ z_>~*kPzZ^0e$Z~M#zSk%;EKBz&0oqn?wKO7T6qR^BQ_fxm+-=s-Sl_bjIT^ypV(;P z1~2x5yXI!*=2ZPl>LH`L$hyi4KABqxFWwxl?q)c1>5OZ_Gm(hj9)d2Ji?TeE%cqjFkHVYR z^M{L^8TdJN2_Ykv!%wHkS{K`~Kk2wnvx;bVsld{rd)!~r%!LN}QgK?^P=GnHM7i(L z#47j1&%BTH=rYQ9jX$^-PgsJ_u=R_z_>G27*Ugn{3fD@u;^aeASwMswIb1rH@%{Kc zA(z@%Burnbu~=32qGVCU(p1n{vz7~}K38Vf$}2#9iuBUvLPsL3<)f~ewA;c|0p@4b zva8!e#k9U?urBVoMQ)MsCVMmEZld`{))_;{XcasB*6Gc*;vF+9Vl}orRey}{Bmv;% zG6F0~Q*hTehKvhz<~_d~b2BzQo_!0xASLz@8|s*^j2)?^N&kR4Ej?-{TD~$scIq1| zQGM)&+?9k5Q#ei}b=~An?mFyA8A#d^Hq#vs54;bt3qt;e-G`i^1bUbPF-~S)tcU7B4b4au-$n{t3oA> z&ENphX{-c!`VRbx*&j~W3*()eUZ4SY;>WJg!q4l@4#XD+YpYzQMM#<9I=gb)DUf{e zV|%}SkBX74aVV_<%@HdvJ*~6yS5@GItXevP6QH&W)4`Yx)BR-CWhfa~4fuEK!;G5*6F?Rxu;xIZBh_4U7 z8L++$d)-`TEwhs+8sw~xvJz_VXYJb;Hn!OjG#H@6h~W%4%Z52<>!!!!z5-=k+Y3uK8W3o4Bl+%83g{bS!Kl7s2@ z{wd8*j72Qgyg7cRWi_S9+)5UnqrXr} z2Wtvb(#3+O9>3VCjY{P~3w_CN584w2~_ z`9VX0<&@YL(IN)3=?6;~QxjU0p6&WgtP>&#ZpT4`0VaIRa_&bsGRsulYiuG*6F>hb z(|#(Zu}9U3$-=E5U`weh%0ev6Mjrxb_RAU?!7rC`N;%{ewSeKjXA&YNuRl& zGOvP_1<^P>wrcKfUB|Z~TB1+1wxZmT2n~WAW7}h|E<66ic4^Rwg&MGDdnA6FlSuB7}`+ly@N1^f)7Pefh zU2T|2Nszx(lWBqt#^IC!m1}5P3t!`DOND-4z;dn;@U|5hef25-hzWQ?u^Dr+${|?k zZQ((25nJOJ==EeS#?g+^1U0-jv$i;~s7I6cgfXtTU;I@d)B2n!=@2EF^bLV``$52g zC{sG%zuf1xh`;~T8zx(i413* z)`T~gF$6Iuu3Vs3v{aSDEKEUosRRCqj7fC^7{_fIN($pmIV zrHOU)$B+uc63krVW8IU+MIR*-mYKb2-%TWQ>L(VnV3BaivGX5Hck0LoE%9X}kE1lf zEBGP@`HoF&bL>`FEcHghqZk>*U$wrJ#1aH~Bt-d18lPIQyIK*Avp;$EE<@PsFNlsl z+r{VR-9O9-^}U!?5gy!5n03-!ZG02==A4q50qfJTd9Huvjo3_;1H9W=+9L*U2s#*%s1`(q1C%JeVF_6eJ@v*5 z$VXCKx$@0y*5VaFHYTamw8P+Z4H|0-^}hLSvzB~`4k>nA96U2_J}VpQj>_O>HP(FY z)Mr25EiRjH``>JDtL5RiDDc6pD(xwXe*DALxE3)hNs4G-Zq3mfD8TOODBbKIRin3! z%vWqytj>Sy%7?@5_|1MVEC+TLqG0v%CYTO&r{=i5`3f3@a!y`bzMDOnHS3@2pOOSv zMyb0<39NdEeDV0G2sZD5CR-YCc&U0jm_2Jat)>ywZC=byq@q!I=>Q4v>c6SdbAJ6n zTVn8G`;R(9er@E&W}WIzM#qrXjO;0_{j7R2r}X|)Wx~w!#{i6^lkq*5NKx2WYHBHa zA}jfqBl=h@w#v0U|1+;nZxe?W&z5K2`tO%N_}EeK+jW*CgXT@P%vmlPhLx|2D9zVu zCiqCNKjDNKhiZ^u3zjO}!duwes9iB)KX-IuM=Bj^B~)55mZ3OUE}0IWuIO8zeKY>$ z$?<3);zoAj>~Soq^_#Lxt+dugR&;Tw`}rHK;bz9>(h*-S2A;9H<#TE2txdI(xSEHr zBQXJv(wCoir|oq`3^%M_bIx*R$#-GHwoty$wxX|&t*y)yBYfW^w_wr}DfBbyaXhw^8>%Nn`9Z9Ex zIC7N4YD(?b&7S|oq2qig=fi^D(a4P`Gh9z3972GyRtU(Omq}_defq-=OPseCHc3fi zf>>qO)VXBF$nx2{_Gh?D^UC?-*{@{c6S3TKJDFA0AJ|8(~S3-}rawa`)#nVwfYfADv+=epsOJFYf&yk>$V3+xkxJ(|RpnK?}|3u=SRy!JQ;0PL8 zL0Y?dcRVafe@q`j@BTpsh>y{B+j=S&a6B0^EKH89Vy=9MPPrj&1B6rUG^cP^#irSk z!XinEiuJJ8boVMz#U;M>@#`hmM7H@47yZpY$U9jpa8lNNKAql<=f^* z@0D%r>}oHd(jYTf;<{M6p=j$8LkbS$*l;S06$?y>hAhS$BD8*8MA}wm1{H8mr)YP1 zT2^;o*LS0tL4@1N_i=EuS){dzTU@&9#C_{iC$a1{+g(Uf?hofYUW^s*Vxst?(_o8+>@b>Hhi4>_AqdM+owN_)4(9#8)-)EA( z=rk654-|$wbSWk(xx`7XlqoX!BsSs~(-oi!F^!o#3LIK+CyxNC=P1(Kx=_&GeV~~S z{+9V@$x1%7r*sVe=^dwU=a{K0Q|SHi_|&e9`A~PczfOypY0Hy7oRqRa;Sf8q#q^9R z`ZAr=6C)@z`3saBos)k#K_c#T3E*m(|OmqY@p z==@?zi()QOsH+ves!^{8pEusOY}hYut0P{%RvDG}HDj5V=l*2e9RC>um0a#2H8*2r z_ZWanoFhqPfJrXmqMzTPi+WNFVWCEEspj&-_Y3VndO#nv^QKOb7B-S5ga5GMUH+@V zpV#te@jM3VpoMF1o8Z~Woa34gwvjp80Qtc(POkHHZ?s~R==@c4h$`-N&)~pcf4^=Q zcWG$QaWB0T!6(c3{0h-4vunIgJ|=5VX~=A~qVPIGBheRfpBvZmC%A*IGy-zA{VoDD z>_k8}EbIhr7bNTiTml&EM8d#2I4p8@7dQ)tPh|$5qzxF-+h2cT&wql~lfrQLzyPC% zi3s`qA@>0;#NSVV3xS*sa3S6XIsjYjTV0 zAISX`0YAw7a-gJx3>Yv{K<@8)KSt!RtHG3*T<;Sxs~MU`I~yRZDv3S`j@vP|cW@n@$dAeF zYMT5mb=bqlBcpt;pF5g>mMYet>}tdmEdKQ=fO$}7^UocO{kQM?JoZB~q{~k*N3He0 z#GMaL@Cz$TM0w7VNp~1(x)Xo28o|Ym?-xqkKI2mNzKeR()8MWB)zhSWts@^ju*$1b z-&XLHaNhMB+>c>rh}5l!^RG!y8V=Tak^r+)0qq=kn0=cl(E4s%E2u!M0eBJqLs4^Y z;h-}7FG-ESM?g|@|0b!SPWba)F)1pNi3d2#7+Zq?f78n$O6)d<0Btc$>@clO(oS+P z=rcf|+hiI!-&Aa#JQC(1g{u^1UY@{QouOufrsl2dnSX9$Hw0M&=jB~*ZB~BHNW`}j z&Q(O>Kk=w- zf)>U?K`?qqSc#aYfn`EG4V8VJ(wEa?lBNrf|Hy zoGBvSS3%nT*s}QX0S!uDJ*kJ!smkgBZO^ucdz^Izb^ec_Z**C?kl zA^X!d$q0J##Mi3n_xjHL)V1-{OI$KP-O;BlYKf&^il412M)FPajFZL zB7pdJQo;`Mj3@u9N)SAlBMFeF_>g_7fkrBK3)DiJ@NKEW-3PLjH(+mz&?3;t-Od^< z!OVDKWfp-QcB}|MIBJ7j_*auK_<{60APxRj2AFIV&A$r!R=Nq^07xMNsR}6I#sFgW zA#bX`(5h&a73<<`#k)w}2UMQax{`LGzJ4!!ww=s}Myt0iFLujQ9%&&1!*+f}ZlVb; zUK8#9*buasaiH@|-Kr8|Fw1lRy`(hazD5KvtKDM^03%3u`R^{^p*(s|j;^>d?nvS{ zl{u$a-w!6k%uVWe!`~Ylcdk$H#kVuwo3D$%V2c5v3;RHJevBpT&W>b5|qXnZLuFR5cuUwfYWQi!{n+042hT)(7AB*K2cQ7O*&EmA6<)orvX zYUFl&XoL3%36thEsk2mIIs|ire@d~e;4a1i-vBDMIE>=(i+b)Pn!c%w!$~g(5)#6w z%Dk7_I<<=0C?2hO>ZZOlaIWv(>3Jz3}9~IRUy~#?*p^K6<9H>nGAO{#K;5W})Z4qn_;2-Jj7-9Yb0N{werKVBXls%&1K>-Qo;|02>S&W24jaZ?1)JZa3V{?@%9`G2MBt`I|+} zWjZkhKt-Y;rY)T#iiknZ0#BqdxXg%CDzn1a8)Xlvdh+|^qTGgNU2%$}m^q`I20dFi zzxq01j7!Yg*1EN<*H4Fyt(K7%NyhUT$-5&z=FE6f@Gc$ni=_z$^5ZK23H>I2jEOK2 zt?<^kSYv5EiyNP(&jTQDPiewuQ4v)Yb++cKRn=WpSk#pqtRMKc9mX3wI_SYaY;~Zj zP*_1Vg`-V}Zd#Cr<9}<_MFWT+1qp>rV3z(!3g6D(qavb+acH*48Hu&Mn2OtEb2HjM+|; z2}N07cofC6_w5r9-EFziEx98H`%4k+09S+Y|MV*uz`tw#gF;5L6KsMJ2H}yEDch(V zM4cuar+7gA2Q{iDa`ye2rCQe!TS&{p%#;YswVI9;6B|Kzz@u9a1$-&cZxOACsY)DL z`B%Rsj@+9~(E{C&Gl%;~Sbl8O_G&dy-z~Wx^Z#N_z?92MJ~tLhDb}qMrYHJAez!EU z6j5D2r12#XiHV28pb+?Q;hHCbTH_86FSNZFw}%E6Q5zy41w06B_j8cdZcIMlMXU+2Ie)mJ5B@G(VU`UL$cKTL2R&aC!3cW!9{DaIz$K!U_X zO+Ggd{BJ50(+brjN)!#zxQGO2Q)fE~#=?~z;*)IEfG$EFD1-Z@LsAX#~PAg%GDe13*LV$zlD9ZL> zLSh%x6Ol zVoV|p4hsbBi9X0D?+0S2@{QL=_TV(BWvn-tsn0L!z1mJtR^TW!jHf=s5%U^OSCRHj z_?PCarJKqA29wZModu)cHgwHpJv9*(t#!k6!l4dVV13HsZgHmqOF}8dUz2^jJ%j$+ zQwg&{R;O*sb`CKlGNm#D(`WkOwd9r6XCqzwTn0*A>oaiIT1^VXIJWN`5-g4Fgp9<$ z=B?SALfai_BT``Hux6uf?eO;0y*^58!n7o%wsu^OqWo5<)tydk#=~!A^X5QseXG&e zFxI;H#dEK;J=FQB==7xFLg4Y@qI?p8yCmzoRq0g;IpzbA2E)i9B`Qp913RH!Pquqa zOW{gaziN$b5a5!aM4!z|wHJ>5Whkg^G(nS6Zi$}9+dIAQ3Ze{FZ1u%3SZ`R%6eD&-WB|@f2)_E-`QI7a_Z&x4>N6P)+9ADZa;=h;| z!_mHBi;8Ri}b; z8Ut&Q&j>U_WrV?XPXBWKn>U53(`cJ@UXLyrEa`g_F5zpV|N zRR}JuaX<1?6}tuNmVpq$u;Hp5HHf|x={){fLHpl57POqJ;MMBG9OmVoTQI6@GZVJ^ z=Eqpy=TiI``o%VKq+FRRVeS(A^6}!Cp2U^Oz_t!sFA&nvd)}?Wn`6afv&cC0u4Wpi*Q^KYAj5QaIabyFzzax))Kx6hBpR{}ONMDSI_#qIg5HHY7* zohL>V5#GRLa;Ss$YbSg>pJc$#)mOnPPJX?C}=k&4?~3mW%isMwx-%ewss) z`J*W}d;TvCpQk%#mjEHCQ@RB0!qcAl5lhb!QSsj z{pNU(`Q~_#HKArqNtqWk`-3CDGi6h3OhZ@L+QPQx%yjdIv!Qb4Skc_7+S1`?wfEFf z6^xM> zY0#IY95CHxI-L~pS-?qDWk|A@&6c+y=F9U&Bx+{Qic8W}A77%D7E8-Re`S+otX1=( zA1=?=Cmdp^eL|N!;o2FFQ4NZ9r&a)E-?=4&Xv3RsJ1*pP zGJ!XmKhqX{;G;Ms1_hG<#9P3}`Xuo0eS>U&C{D3#e}J(+A+YNji@Q(ii;VuyP*%ta z$@#|ECwgP-BLj^6Y=3~U|27F=?DNCIIYa~O*9ie253pZ3-x&Ku6cYjf`*oibV81#< z1MJtgMcx?uL~o3Je%Lq0KCtB5Fo6B)5Dl=V5) z_K^X`ezrfr*msEjvxU8^7@93k9yP&pIY1t0AaIo^TM|k;N0H9; zK)OZ#W|%`&VS*4o-q#D(61BsaH{)<}8KR<7V$5H+;t~n^u*?w36o9q4CU_ z%R`C_S)#@@7fjxXtY4Tbo#v24HJ9enztNIA`qa0tgQDAlWnszh-3Ltafw?o-_+!kL_(_y?ssNcWw|(I5{WuHUzX(Y zu@u~BUFg@a-82e&)7p<%DI~S=8AX*Ul-$=BWquq^G76)nNT5hKRLS&r2HGCKX1k7Z zg03x15DeNc=((`UT)f{mr{o#2G@Nvl+Mt7qK;@fIpNy_m2`bWw^dn~M`Xu7ZlT-xN z?0p)hMrc_bzLvTc*s7xLJ}uP*4ypafERHZ63#}Fj{i28^0UD;&DQ9g{FZqpy-%J+J z*1b>r&Q{A(RmhOA6Cp*ZQ?_(HOVcopwZsiJ)oK4^ETc;zR{nFPSDY*B`-(!#@qVp` z+U>jW)7m0}yDsTz-ue2dc;1UA@7BNT65F9B-49z>5zc;fX44*D$2m|*Yx1kQr4CIi3oI2dw zPzcm?F+h+?rI7QeDgDT+GTkzcwOLT)-7l`2(aMiffw?b~*lqu%fsr~?;5^#~eHk|4 zQ;(2q8~-j8`QyvNpfIrvVW$#|yB_#wRGz+=A#bHA!-jaPf?Vz|J6p=3e-!H0kPBoe zz8UUinr*LzKn1lV_N_p{&olW;W>N^Y6j$!-F@nA zB025Fn7M1>;T66KHN~Czrnvjn&CUzPVT?3~wZi6r73Gb(ZG`JB!Xjrk^_k7#kIA?{ zz7~fD0Y`+Q`O^h-8Dr_uYpK{alw)+UsvV^S{;a38*Ov7V^z>r;7RiaTte*7l!PeI( z^}hTB`yR}fuhfYpJlrV*`Rrr)IawFuui_i8=4TFE;4hsr?&h#}uS0JV7z9ZY+}AOV zZSC>_-)$6*7oWEf9?J2emoVL;K@Vt{AHd5FI{;Oerc+)UH0~%&fC!k?2(*`umZ}WWK0-#|A@%=3gXqd~i0S)u4 zHK1WWeA6&L0FVLkJ;JC=w{~F}IX3Hi3h+5^yNq}`)UDfyJt&Pj+})*@=?1qJX9h+y zdeqTTLa!G&z|!%+Y8%vo!DZ>v>-z?bpZX3nWg&7!XqD~Q7%2VvRG$fF_m7y+^&)i;F^F!)U;0+bPbQy4|PDU5)EfX##pZz!NJBKfN@0?P#4 zU4RmQ6-M%Z6-EPqPQ(LnncyaQQy4`7Z_2lMfA7WsP#FE|KHd~YQNWvWy#GyM1bDk_ z+-Cy{Ba*ez3Z}g7%*T=K>+^0xyD0EN6|hmbM92J$;$Whw?535zF>@#3xus*?0$b>q zd?yD3)a^k%@IHY*5r8e2yaKca-?DHCUO%uewS|YA!v%9t5D4oL^2jr zlqYi5zqBzp@nPru$`SQhkW>FR`Sp)UcO$+Fo@Ai)o%{K7JGnkKxR@DR49kS*vB7PP z!Iq*r>(qOh8XYTd7jG+?1v){FP?qeyenrs5_OkO2hk}`!>Ql8O>>u;%^F|0&d-aJx#)OLTH(b4*L>V-qr_G_!qq zlmp!$yh;*jBB0y75^md9IA?ls|1kO{UL>!B?bj`AJPA!gx|jwc%Zcg3X1vnMj%HB&)fR)~ zcC>i2xU7b5kIk|(V9Xlw`A;m$Hu~-&M|wL#B)CayUCA=~tnUyqbAH0SE$>6M6GWKl zrb!GcTojWpd;W^=fkLcNdTdws>DM9?@w`d%)ma#r|JXzDdei`qEsOmWv@t@vQ4$-1LnUIB*jFo4QlXFBTTa`Bv%rWsZr9 zSU<4!H*{6VRBD*W?>AraLR?6gWpIlOZHid^JlrwO`nGflO_oZh6Pes{9wsAeDu?r= z9(%}Ng4bz2hz7GmiT3YmMy(0v(#{8d6q0r8hAmPnH{D6iXF{^@;>JKa8>)SRjm?{X{N|K~c{WL~1} zk%HhhMIt7?_oPT}cw`r{7G^kin5A`OM*okHblBQFTInawpM4DUl85r3A=1|C$9{YQtb~Joa#NzmYh-M@p=r)bUko?}VkYN20P_KD)$wJs%myi!TRR5) z_t?$l$c}V)CAXRV2b@gPV}FX%bMfrI{Q$3ba}ROQvxH{C9`pWgDI0Ykv-4?km@j4~ z#_wwjvk109AkC=Whg3D_3)Q%(jaUMX6o5BO@tX}3~X7<$#p;(31moRiQbaX{P{a;9gy99WpM zISCxxl|4qS7d%H&3^{CbnBKY#3R?X6W8WoQzS$ z$9*L4v-q*wimt9Q&`RF0N!7?GslnLhXu!-(q};?fzB*R0t%`4I&(zrqC1C0&!?JD4 zm4)8@Xh>y-u!fJa@U?F>KT$vC!E!E={%l@Th-OzldcR8u2G%2{^Gs$aQ)iwwCf>ErM)_*$FvcksycV(JCEGhE4T1LZng}aEj<-2#aJp+*jlB#eA32; zAUuP;rxlG25w%Qu=f0}6Urj4CW#RT~)yA@E-5Csacf+~YyHraorS{E?nBhm=2PC6 z4cQvG8Df6t7C;+sY(iTcf0Td*;ZI-e7G{w`P(xZ*SEz=OXegN@V>``0z9?nYyc$1WTN%$w%OF1ZwQtgaAWB5jG6Jp`O~#Tr2sww`hQ@)RZCv}$Qz|G*vf(#vAp*8n;i9EmO>5VBn2FU%*=y>bIoqYLawY?;{2PM>kfp zg?0%$!CXF=B@+S4k>9n;xs~tSj&K;hxBFZDYaif8IQo;Kw-}7ZcRc!j>BvdF1r*U6 zP}k^tc_T{vH?gz9lo;bAN$Z^Fhf@ghE z%iMt*Jl`7)&=yJuna3~~-QpsSJzZ$ndp-ta`KVqL*TUc5&A{z*P|F9U(%{Gn~;W>8Uq%^;uA-q9KO1{r8DKGlkG(~>P<0%OJi&Q(~MR^Wr+_On`pQm{&6}Cz?gIn*I+UT38wFn6ZZe(mf7uEsZ&}5y6%kx< zB3-AiGe6JCl=i~jpBrYuf<~WJHJ~<@2o?0)T_Kf6*BDkn5LQ{}S+cAHFPShY9xs9% zFQ}VmS(`3?kN=6`%l2mXhPk-WT zt?aH043IAke2o)zK7-o06j1JYG<|((2jk`~wsS#?EHK|uc&NMl}qY+vl-(t(fYExyQRm3mj}1L z%Hkc>b=-usBd_Ck!A||*9>aF1ZvMubKp_iU2Mm?@c&fq?E=9z6iEwilew7l#-uVxDzn~)NdDfUQ2@)(QbI%t+yN=Lkqb{$!3<2^5- z_M=$c{aMt3Y+I_VLR!r*+_caXZ* zmBLMR?CcHH4d7A7!)X8L{7cWD=x1uaqVZN?{1Iz&1Rtz05I_GU-`j#xwc$#XE$SSc z>IljC@-g+ioM%gX$40-Q-~HBj*K!twdwM(csR^R>NxAd;hL7uW?Fag=a(96&LI1Wf z*6QGzsL}5h)J;&yoy|f)RAk$$7ymN)`~UDWzTpzI_V#;9Jz{lt+$2_;5OLAgg`(~H zjIc?i-09dr_5Wg45+)Y9{g2d2{~AxX)8K#k8XFfq1W&m3TB%;krJQWK`(VhivH(B+ zJO_VzDI*;wTCByu$QQYiWhx=f87m#?N}iesX{~ecl?7g-lGrM`-{jee34dKVZ~J98 z97)iIvUn&kmDK6$+~w%&=-(-W_H*AI1p5<(qDA$yXA#;8(3`(uRi5%@BZ1nR$vHpt zbtC-DZeTP(ar@itPtVZ%=`UfATkGEpFMJb(9M~`)5SaBcR}+l76kSgJQw2Qpd48F( z{B=7f(O=yV9*0&&8jmXfkj6g{{Qb}R7N#8RnIy7hkEXVrTpS|^Nnwn{_oNp~v{y?G7q>1qN&1hm) z3$_i*%y&KB82^qfMf)$?f15Cqs%NIty=iEhE_Xl6OK?GAL5{EgPO9BVq^#4b5Bu*! z?5!>|N1M@E|0hLHRiujI$c3-;h;G(6u{+;rWUk?KB_h23A^UF(r1HAP5aoT|qj<7j z%*FBSo*63Fc>HKDLiB7=7F#?ramZJVz)F( zWKk99Zz#qk+syWfa& z=v+NU4ACSvNk$eE(4dSd1e2d#&8O6ZwuM+F9tY(@*p-5S`xS!*?MaWIV2IT~f@!wf zDdQ(x4O)yst}<;>-`w~XHU!U{nyRt*dJMkY$rNogi9cr$!0Jq62pJL2Aly^X1Lb0z@oaKuI;RQQNB2mv-S1PJ<@ zH(Ege?V$D-a?S*x9jbc(+F_1N?Jo`_N#zSbJ7@)g33?z%4?sK2nScrU8(lC#|2RQH zt@hU{9Iyvyhw2`Hb^zN!f-e9Qs1@|;8lWAjdjQ&DZXKW<(bpXW`j7Lry*|mLV(a zy)!Yw@;fFy;+oAHgN0_<1bgBgt7XvZ!G%!UCIZDdGUs|?e8r@^zRC59pGGSTO1zAf zW(R1H%6$zv*72s(S9O%tt4j{FQejSARlcwxIC7+7E1iEYw{~AjP`wu)za`=Etv+%7 zfo*8z+me0w6&X0gnp(3%y!`a~qa}ms(t@95RU%=n+i!M9-kyavjhWAKPjC5zl?&Jj z7`&-C^-FA`d`ei63_38UD$Ly{y1Lam?^DHvJ^H!=qks4E`av1c7lsQo6vRHO5@y{c z9dc#8AtSsZm`59H)Rm%EyLeXB?OYZF*u9D=Pn$RQ1z>hBC?*vs)a1EfRssjyU}3Y1 zLxL{=4#a8xJ>aG=6iR@;FmxPTsM+;NhCe6_Mn(Mpm+EqENP$Xlp+*Z_r~ydf!ca`0 zPy-klfD1LS?rN`v8b}f?aG|CWT&ThRDGuP^pb)@;yV`4^1{eSrYP4PpHDF2@2nnvs z061`00~cy40UUtsAi);^2kvUGuEB+xN&p8Wv*1DvBe+mg3>0eA)_?&~!kGqGgg}eioQXw2*1*W)()gD`jx6$@=37+vl{Fbw?Gb z3s!u*J4EdN5i#x`CcE&HO{DXq<=o$!R?bKN`YzA_Kr`KaCRCS-d;fuiqH1jW@2n6# z*?Kvz!Kr2kV!X8h1^@Gm8BY^jRYB3vSt?%#Hk6-`ZsasE>$c2!Cd7SvExq4o0^FG< zDUCby7H9hM7WF01BYKY%|4O?U^6A~OY`W^`laOwqo}c3^DQchziIC*T9#^0DVQ4xQ zKo#FVrn5Qtma(4BkhU>J4%b5PTa^ z{ADiWNQDO_naQ?0y{ivD6$r-OTx7p}k~7eD?)HKbb48{e!2mGYBl(mcS5B%RMOOJ% zOA3_J3+h}w^K1=$?lD|t{R2t||40$h1QddVx37B;B;MSbn1W!z7j8y#kg}TU@rR*W zC$Sf#ogT5596CO7(B#z`d?EOVK3K(AfX)C5&x`~KZznGT@)3wU}?W~|5o%&vgw@!Ulj;~?)QAvZCbOW;dTWhHq zwX{CD&fBs@y?i9TBTNJ1%3u_SEP}8K!aw-u~ z&s52+;TpFGl--H8M_88|coGWeCDSFA#Bo~u!11Q4gO5Hmt(76A6>JJpc?2f2dM{g_ zn#T#h>oPD64qawVbbY4$q*7Ax41AVxGG&{u^}uW4k%>LKeNOvILnBaU(o)xfmZ`>G z;CyzW=KE1M)?b0yRG2b8`6T;5OC6O?l6P^us69hrCWCI?n{jxp+ovZ{ZMOw8n}7Pv zB0;d*5F5N=(bxLBK4f;@=#S*)RJHH6wZjKv<47^~JARZRG)^K%qwrzK! znZ%^+ueA^ns=Bi&#L6ev%3pK63A-#nR!e=vv@3z=n}g|OLY{bE9J(3x(0Xcb>qDVQ zs8pPEN%e4q17ftlY#8@|{!-4Ey3ua^R{Ql*D0Q9v`~2flA{CKBYV_4ts$VHBj0wyj z#W@x^4{HZaW0|U>M$I`P133>phPhvRhRqC-t=BLW{>n_q4u{wso=Y!?Iu74G7cNO= zx3kOdk!X*Ps%v;or&J0v>aXKAe!1+H@6Dyob|Lq-!kyYnAse0R5BRE%(e@1$zHg>k z)2WVe$vOyO!%CaMHRAC-z>YQ09Dzu3Kh&=#yBlYPBn8ulM(oknF_p5ztjtS%5_h zpaz)FgdG5e1k)VEqrP=-BB1-6$&WE{214G)Ek|sM@q8_S8VH$Xr3S1RNr8*J7+{iE z`M>ZQ`f~r710$scU*ewBkTW?`bmXR3HGI^j82K9lRBD0IIgB^$0-NIXLX_;kF(n6w zhX;-Lkzp?T!Us&0U@*Pkicrf)tx287~9Ve_pHWgl<<78=}euK@$|!7Jj&^Xoj=~* zru*H$YE08!p%BbtlO(`$Kvn5j>1gQm4L8==%b+5ik%&>pB4+n{mB5eAdTk`c2uAG; z1%{*UpI6seXjhW)Z$H+Bva^*09B}x;pBG_}Z86UeKK;?Zv^) ze^=?@(ruC->b+=dtSA+UwSa+)B@gb2c?RK!v1V@2y1;_%skDFtf8tfQ2-m z2AJDQxW{7tj6DD(UGvZ-Fs7-&9?>!CP_4s`1N4wYE2<&tQ1*D3B`{hzXn-j-Ibb5E z^}q0y%+&vx15OeU*sa(+H8^b$u+@g~uT+Q1SH0sjWPm&?@HJoS$<*LozL_AacmE}>P!T*I?mj<;XzC-PouoAzMM zhCcG6`XzrLF=Y7b+WEBez}R?Yeb zfF08+I)27d+P%`pgSYjYSr)%HN3P1s=?XcIN^ht}^*-B%NQ|#l>_Os4ttRG>!hV-~ z13QlWrBOV?@$?%ji_Wj1HyeK4igr%c-nF9R{J`;KlfGlZg@|SQakt03PkFq4KlDhH z^9Jqi?X&YGu9>q`c7dZbAeNtuUuFjwCG|wwWMtXn?iKTP;FqBz8yO`t;UTS1l_##9 z%nCVYB(?j`K3y>05V8+Q;aeok#GCo3z*kK#+VfENX>vFh_4+$crW){D20Gaa1d}Gs z|Exc5YOc=>-)J8-c;{(4pC{Sx;)66|l_st4s5eEuJWVTzBD9_rJ*X7yFuqqN`H3;| z&RTBccR!oSt)>l+jY4V4lSn7cAFCM+Pp`uyV$U_=(;`_+l*5PZxEgQjhZVwGxzsH- z4@<81XxDP%zSMN-(tD`)RE?$?wGI+R&5Bc59&}DFwrl-G`g1MgsFP!s6A9lN0+EqH z6bW`QfytRxWLufIsECn=zy8$3+8pL)lT2KivkA?S&5OpHm5s3H433~jE1F#(zSx;W zxH;GollFQ?_S$n0T^XT%W8!YDGDYF5cijA%erj(u@}(h5S`JlZ0?om7HMK0jg=sI( zDYMHR<+v!`ElUI|!6ovEZ+NWZ(O6Df-^1DA`Lm723>3DK-UMH=c2?YjCgG1!)66Y0 zVc|<}%lqpY7v&>i22tnDg^4<{=A(Pd_UGS~T!Euk4V8-2*2Zu6D8qkcgkq~W%(*a( zS1$4EsvJlwH8!5Pi7$7SnGX7((P2GXRkDmM7xV3^vqzB z1JVeqbdb?K0&Gvp-iI!({v# zQWyKQ9dy}Skab`1BR(FL<7HnUFl{S{)_`mvXszu}0c8cfc|}JZhbbN0$zX6Ee&erY zwO*ALZF}imj3BdbDzOXE7XruFsM{X%(Y^!TdH4-j+aBis$~oTcmv2v*eVh6XJLH|` zff#imFcBSjA;7I_3f5?M?X-BkqrmopEkBoA_j~6tfz>$P*wSFW%~X{lW3sX` zoL0P)hFFW=MCbO4V=w$gbn*Qi;Q5P8In5HM{2SKD^o2=aGOxiBv228FT68XtbLgcl z-fe!7I;)a|i_X){j>jaIpdNZ^r8H*?k6GFg`y03F$PJ;u;#wik{rv+O0f-c>lrpWI z?y3=wq`-shkdE((FPC>gmB}0o8Zx!-fNy8F>4eLpxEtiEyxpKsed7as0Q<3K6x5Ul zdFP|wMkY0V=}uh;`&=+!mKP)Ozw?@fLdNZ1xe*p91ZvZeI_IkHO!s76q_E#!WDfApG z{Y=OaHu|C1?x3VV;vT~5(5|N}SQl78UtK6qhPfBwz)FE-+2|yPVv|wv?u9o7Xs^n~ z#grtr4l6vR(2mZcurndR>Uk)pJtQfhrVK?%Qc0nn^q-KG&58fcLI;BY@Dd&4UYG`i zRl|WyLWSX%6G%LbI>O9EZ{L>=Po@Y;PDrwKP*OsU@tTk`P5e806NsG47C`<6mXw66 z2|fq|Qk$HYmYg|Cv~1AAf*ylz4dMMPJuJRPzPRM!OX+X6r#+) zF&zdNPL_q}48P+T#O{tN>?^7JK?*ppwD6SIbYySi0ri$O#9`=n1AfU`n;^9 z!VSafBf_`p{UppWZMtrt_Nn$aWd7MK%Ku_(P-v^nEn6<8*fvJ#!(Er0O-inbl4ZZy zKnZd<%U-DMek1eDEeDD>e_8moYV-7l;03QUAo#h#>_7sQ>^Z z#oYi%)J*`8%x3H%ybb{%0qX)Fd36DRq_P1330MYzMBM}cNo4~7l2>H_Bu5SaNTdS5 zASvz!K%#B}fMiw|0Lf7eg*wK6Le?}V{yPf*B!HLbn92qKB(u6WkQg_x{BpAyLS1th z6>ZpRnP^*({BC#V-xijTeB@`kAdYCh$F9{x} zpS*lAXwy=?^7=U>m!+iW#)F(!c4-W$! z@}AH(Aw>@Ix{!c0g+x`p={A&m|V z32P(g-W=(%R6`$W{Xh{G{sU1S*+GQ+o>b+Qo*0@(#(BdgviHKNU?uY<6`u!TgMM-J zkL@#Zrx0y!J$va3N*T}6cE+t2)ur zyX|w4h0oSji&>V%K*d@x(+EVW1;h`RNj}db;?V^44*jT{WR13ZdB;-?0^4l4pCnl7e6n|$*f9cFx+ zW$VpjHcLE^q*{l+eTUwa%ILDH4Yti*#VY!8z}~Ae6g2%z!#Wt48M;@?RB14kv~V9% z)lTzY|J3g;z1{nf+M^QR=A(Xjkyq7VQ`t^M{LHDzZ#=WR?is`{$@H6JUojnfED`2^ z5f&=(MhJF0Pqwcq;I$0Bd+0yUP<2%^OgUBxe&KGxlhL(0K8nVWeuHS06-_M`3 ze#$u<+QrMc{u?OHwx;*o>AT>AsK2OI68h0@Pf~w+&i-fd?rY(Ez80LF^wX}9ePef@CO9kaG^`W58``Z~ zsW{J;HByU*`?ke$@BAyOrTeo8LQe$pI5!0m3Q78dFmI*6`f*9C^JHAqImj-vi5sx~VQ$ z4X~t@0tSKgL)~=2L6{xv);OaQFaj2kSg6jvzu5S&t)3KsmG%WYUI;J<_v$aKH_!|73OA4j(^oCx{vCuyvAoV9vEo#_~@X&q=31ROB1uN%t zA{3npdAN^!gil!jPH#z2abZIqzrl5%EV5%+rELj^+4d7Ey(h)l7G-bAQuEqS zci@CLxQF;&`RvfoM%ORS90h9Z402A42042>yN6wn&0o}DgUnoxE%>7RNKuPZ5l!9U zV^Kqe7y;rmRNAx=9vN4?!Wo~rc*<=UpBd_3QAi&pyB-YOr^UC| z#G%r&tn_f7DmBFbRTUv*+#;V>wWzdZ60mxdBRvG%r(RPGZf-2NPkQQr8ek6WNkXOH zQV9T(h8tiIpV{2F*t{{S&SjZhZxHTI6EOT8K4^-eJv0EAB1H935@O=~FFYes^uKe^ zleR?0ozATUJkVUQ>q+52a_GVAkcUb~VHuO~bqpnNdu~W&fd3ZzNhM_7gs!L~U95{K zJHm=oFRrxDuEYuwB20-CTezT}f3+WfXQ&ZB z!Wf~U8fe~NBnqsUT4ch>G{2x|O?F|_x}d;~tWuL{8y&3rGZ^Nh9Kv{eCR-Te()j~4 z3uORMn6TE!6P}ohRNP9IGiPWhG{=?aVo6x*ebl)UB`TS@vP~;ZA6iK>^{-(MU;7ha>z-m=$pnfrE zGWsAjMdvC4rR{dS8v5O=CYI>*wy-sYQA#A_yfOSSOC;oN;4%|V(XT7DI^nO7#4_qc82K;d4k zVFi(gE1Odr{iFSp{}hZPZHAq}{%m`~L;8Wkz`}~tT>}*y>ez*;NCq52zVuGcX=D+N z03HwWN7w5H8MXK=-6Rme1n+q#5*}c0;5{(y^$-iMiu$H+_MDuai%P#t0IbG6Tg<%d zp9$eNJ=kshm?nw$9|!TMyS<4hyRi)`bhKD6@QUA|-+Zjh5D1r?Rm|&z0YBhLb&(&z zs^owvoN{i<=UgIdEMHLn1tgYCwRXnJ3AyA)m)hT9#^!Hy$BDQ; zuda91)HO=n{EqLbge0@f)7PpK`z_#yF1fhJc#2iivR+s8`>4NF`%BuV_eHy3ajMVW zCe`a5eA_tfuCUYAHt_IuC?>e;s6KvA%lkHUh*=I&j4*(sg*LYA%OOfmH|&>2!eoW= zy2=S0rtz}C4SQ@S$+@pzc@UjG2$#7S=20GXoW8IHfg-E3aPfa@lavec(sP@vO7kpz zflSfrqwgU!nfYvKUVE>BQ!slKxzYGR)ls*J@oQ^iz~rA^JW?Io2*l%buBI@j)xc)h zS;y!6^AL7s6ZAN(hlCxtJX<>4<`41h641D;hvr0U+S>+RpUb<$ zsE$b0@9qun0s7;Oo(RdW3)2r@Px@1RXG7(9sU|LfPb+3({-Jy5PKSL4g_d+x5WIk< zr>8|OK?@f(gCLXE8xHzjVKhWFaSV112pPm)IY@kl-etAYU_{y)92}kJ@J(oTe~1XQ zN+7=>Q`;ZYL?#RVSJe9l5?=&j;LUr&(6~)#Aio)S1K=|Pjh>D)0$6}Uz-qk!Kws}b zelzgK^gb9s=)fBwzllHt%z^x76B>XhAOZ55dkAE*Mj*fO?*->KBBtQ{#$OD`Z|;ME z{017OOl{I-CHqHd_D{EICMD;Nrn(e{?1Y}EnhS~~`K%~aDG#T1g@$77F3aD0HW<z?j>6#l8T^J{f+&~v4v|$;DJ$1@l+)n$9Ta~`=Y<}uVMv=T zL^)2Do9e7x@MdKSb3}K2)RDff<55)u^H@CV82Psg)9Sqt+*GT1dGgrHuKnQS{OiiXspnO0*AUPUG`^@0ZT>-^c$i@OFM zJcFN()h{gsx!eq=B%JT81QnXOo2}-Xe%myzsFi2MbgVdePT2XYV|pCZR68tTsu16$ zab(v^6L`#uJ0|ov_D-w>;~olyQ?fj&NP2uL8cwUf?)U@C+P_PuvBl}vDSZp z)uPp?YI8NNJ&(!6j#k--*4*1JLARed!B1qTf6dQE+DjL)%R;tVR-b|0ZJPG|ymeZh zmx&PZEw(K^j|07ii2=H5ocEFAz4nf1PHo*^NV?%mr-blx`aMxHQjt|bg{y+Q0+LfQ zN{|n@D7G(kOttlpPnAFC7>8|B%11Rsz%aEIK|f_*18kwGUL@4GK4xRg8dW&M+t**k zqJbY`3$0#Tn_Dqur4J2QQCbX!TM`v>_IttykNfF5A(Knw56KzMT*E8{%7cB{ z=Dvfb4LKSTryMS{gV(~8i=%@?{B9is^@&8knnx3bud?EyHZZ>Cj=FM{v4%e-ehToj zSV=eMpi{|B8)RYX8~fxl!N}(d*Y@3Axi3)Ww<|`q%gUK5lwT=ruF~%ShLMo?nPRK6 zzgl5fNxqtJcwE^nPhIPXlU`XL#Pvs={E(7tAMPZZ_UfyKxS7Vd-gT~f>gl>Yd|F0= zf2-V=obFgZ;F~j%TWPX*Ho#$~`PEc$r_)SZEv6CGakT4g8HQr@xXjnV3C3L1F@5RH zm|nGG?M#%rtu8ho9c$bb{ywv`so$0V7Z^3)3$jB0wIEJwf-_4<^U=+FL<~24rTYcf@e5QUg>3 z$YZ8*aFU#vZ4{h~n6%Y6I4aNKne2mM6tuM}o9I|N`>0&t2V@SjCDqX?64!L$xfpwSFAYNURTT3V{#z0YmWx(%KW}~%~tkNP- zfPYnHRmZ?;1xf+t{owjLhgl0!bY^2U;H{Px5(8^KvGTtmb@b)_odr+_$ZXt`l2%$& z04v4>M*oKxWP6s!EUv^1HGxO>v-7309*9%C#s4eR_C4t^ zrPl%k7lr?4aK|A^c2l~0JKa3=a4I(qCcFy5_!GaG!Z$rQZ0mUCi)joyv)v7b({AYi z?y;SY)dIfw%luzwL1hC4$SAtutY-4SLMLX6anus^qnVKo_&T$8Rty5(je&B%MOj$y zm*4uxJOc(S+BHfN>lb;+a~%Zp3nY%YlrS^)tDEB25z%%JTDrVPYmK=o6|0~9=3WFH zJ|+z@Hd05%&b{BC2EL$ixtB(E{z+#=<@0cJ_K}9Db4z0LxqIrMurbM*twVrG#?I4| zqar77qF=-c*K^$iuzwoP_OVA*E^mcq%hdE@=VVqy2zsiJer_uX4YkpKSzi0K3cb@) zx2+ouDt{jk*0bt%zg(;%dr6eMp7zJ`0D{Ff00bw? z00?gD01yNKAh=}_8Jr8*HheeYCGh-KHy`?%!Z-Dg>{1SV&|A2kJV7pn#Y8@jVbY6o z71Oxr)BER#KTEqDPUFzl4rbq~G_25_ls-QTihC_nTwjeM4!ip+bw8awoqI*ujer6z z+67xee#iREKo+;YH6MLPG@q#c6-BK3ni+`jH^z7bPDCQgXG9IEzqBaf@H z9+_H~6^7f0Yb*!6I_ft~dd--==PHr1`y zmD~)U{$k*MaH61a);xU+W@_ty3{AopI1R9EPqU8B{5@IqQ5QKr`QSz|5P8oRB#)g{ zL{|x0ue}Bp;IA2@2YVjU*H>)1-ota!RL1ggudX)cMXoD}gN@vcK@sh8yl#8^?r#w# z^$F3)torBbyPb*P&jnfy%zGPI(VDPFGq%p&g~sd#ejDCHtlu3*gs%>3nSrm}e=h4w z@V(Jopsaag?{gGbTD@t+A{m`ACtW9Dr6d{R%kcRp;hyKZ=TzwQm%_6G`lXO?YJrvx zno|!Joj@)zmFvb?P8^D->-@0H_0*q>n8hEee&~ve{^Sz-QAqHk(4fI_5!5iLQCnFz z!G}Nbgs03<+T{;-H_fS&E7o8Sf1GK$em3ZlRujQ%MXRI(N>fkr5G^KkU6eUJSuD4v+yif>usA1&{ta}Y?)m~jxWhKIQ6$gW5 z?pVcC7##%DN$_3oj{i|s)B>CVok&s#C}$O7l11uTY*!zOW^l+kA+1C0MBk|Ew_co2Y)JQHvQM(I zs$9ZH6%P?{(7y^nMk>mK-MBw$v0L@~QRHeDzqwqkf06Y%#ih-?1 zf!9MoF$xc~iX~z+7YBo7a=`1M0y@Q#Fq(na^Qx?<{n^ydJ7j;PqetH3C49lAKe5{LL8r=17M?v<1M?%+DbtczEnI z)eEuh;80VOZH2*LCL?7f=Ej6^2<{k)1;dc8Ai2?TdO67wvr!@NNAd1DCsNQ1w^+nO zB66CAZ!x3u9I51S5D=tmBknitP_*6@3a5^7zDHC2o_UVHvi;y*z?3mLtHEh3mQk5W zGRkh&)SP-MdKOeT+3AXY_)9!Lm@nUPXFK1h*Rubl;r3|i>UEZA6g z_EdEAVV;a0Q)if)q-^=kc~q>PSJ!`D6AbOsy+BQ$QynL|_2>lU81J&&W(Sqvc&pxJ z7wn?U>-!eZ`_@{Y%l=hK#>t&Ly69lMANyNxmJtulCs|u>nb+Hy4WpWUjw&>{_2LX7 ztchv2yE`@IfgzJ~$>29GCz;pH3Y)ko)zNH?8FN%OsUa>OS;f!WF*&SuJ|^@}W>Kv7 zo43lTU))u-2@a=cDm1%l@LT6hIJUaRC<$XR(?9VnF%%U9j} zdBy~Tlw@O#%k3%CGF@~95eegrdIcS7pcFIC;5dW1@0Zhk+iPMeEVr(M6>g=lL($r&_qjTEkiTj`9BC-~Gdk%k+0M zD4n`2gySu)pw0~C0PYWWbRohssFzqH3=6t?Ap!}kf7ulIw>Qf3mtLTh8QdRSPd9d7ibu_eA|W{C5_GjHj})*&65J~rVV(TrzYR> zCBnq{Z%8Jj=znJ6g_8t$$*lyu$ODQx80aotiIP#rX*O*F!=oDPKD)-Qu8*{E=lOcL z1e&+CD=7rY9$ow-St*8;x5Ak17fFBe5_V$N*7(jAKdF4uZ`+mYjFz;fap_=;IyKL( zXViu(cK|kYNf;p=Wl605{R52hlhtNuYJ!lptRJ?F0>}8dl{z5RzWMY>u%MV9$&yvsH$}K$SBe- zN#*!ZWn@D?+<}V1La3-ZBJ>;4k)F~feDsHQh%%DB6Nmm6j>~mU8E0YbF9*`J>`wi8 z(cE2c)svL_sxzuKBpf=VY*-x%xbr-gYpO0yjmlKxYnDIL9@`cP=S=*#uepb&@!NA& zcUq|oaVnJf{nr6FIM$-5Twr!(?=6o@3Agr%7ISU6e}u(2?S~`Qbob2c6SlWP<;{&o z6TAyGWYD4KUiy(tU;QC@n1@|eD*9V%_lk$|Z4hisnf54Z;vZvvTLvutnYFj0tEnDy z<*j6pomcfr5Ip%Y+)4lJ75oLTKb#?Na(V7 z_m6!T2v0m6-Mh?D23y@X`{Ogfj8msTVRk*VyYX9d@BAdO^W z|Hv6C1Z>`GbeXI$!qX?t)& z)C;N!gQ{#aXzN~UI-<0z@1EPtz|BgUn-|Eg>y20`pR2Yc;cA@qghB@D)zGL~J0KHH zHMjx76(!{Y&Rs(F0Q_L{7trR*OP_i+D5$Y5=o# zgbZ}AEyP+xG30;fML5{rLI`~9LX}N+da=BHc@BW*|3?H73T3JWfsEK__mvwCw$fM) z8Bwhw7*Ngi#>W=Bf_YT~nBCVqus23V3>Js9x2FXxiUBpi93UCtU~OgG0SU13h(of| z_jX7P6+!^yu9;deu=D_-f$gz4BtSC)rkLn}2{q&Y!UK!Xf94P~3Iyg?2lyz3Ex?u$ z%3KX%R2&W#KEc^z3#d2Q{@}f&xOBW$Bc|MlPel21@TG zjnycEz^41IAOmxcR2!CthES-K9*wXOeRx6=^`=qMdUzkwDHL*D%1!CEm0qS7%4l3o z`9u#jvzf8FRDDSY`@>s@JHH;9fh1YIcXjKxM@7HmZuMG))9b{)B!38dXsP5_bSj&# zgmm}}apc|~sJP)_j}Z>4ii~Pn*GMMsf;;5Cuek%V8Z5FylP!|)=Yp=10Wj(I_Q?m7Gn{$*A~01wePnt1{4C@@xYX2g5+`f$oz2AfUTsQxxbfxmN|cOP(u$ z?vnq6tY}XBcNRc*3E(9<=1&38U2?AqbeFt9^UK|%?aMYATwZ;Tuaq1vEWk?dw1Aw8 z{EZc9EqX8YhM<@~?*xDw^JaSR#p%@V%JK}8mvp~aKkQYWpBYWY5(1GuC zN&3PjL2+@@>A(nXFEfIUW2dv7g*ND;;7|Y6do=_4(vfv0%N>4aW;7#ie_F)O(Ihn7 zlv(_^1EXd#a&?&9ELffsXevC-qwqtDLzEU~&OMR!L>ewfPOrTXtFL2sK7*VMwq|C= z+qV%=N&TF%n%Y^Sgl#*^2hpo}q+S^FxSF>SkVtt8~Jgg7TzdanaHvAsLYB<}2 zS;5f>*r`_t`3R~wb8vShx=6%cq;~vlB3bis3rD+P5azS`jvdQZ^-#MHC-N&rleWdN zu^visI;`qfm3Pct<@_f@&VAgKTq2QuI}XQf+Tg(as~gk$eK$VVskN!nj}o3^Z$1&4 za@=n$Aig&<+i-&-n5lAcZ04l{&X2)mUgzh@I()PU^E<3~$vWARoFFjf(A;p7Py?YH zGeFk(G$Os&`Wn4=_wse*n4-LG%;3!RrCQe9}2^NCD8c?ZS{D6XW5RUJaA;z4-STeyqO zqelHE=(sN5RtC<)mU&p05$RD)WV9jQJgnzEZFw@8_yT+f$Zs5tfuHUKwu=^Vco2<+sB5+V@9CzTCVU8B0<=|MK?tUpC6W4-zO`pC13l zA%r%#Ss2E1#E&?Ltf46L_`NktwSG62Ic0Y6MbF6pj zPHyZGiY^Np>1cEAdagu~w3^^uN5%T7*izsgFoQz;WdD5WIKjE}b$czj=@0=L%?f@5 zR{A*d&7M~#NKD2#kkG#GOL*e6t;TU4P4ew-v*=be(;o4{XvjXMaO@!|;dCxSHVmDA zkDJD+K``dev<^?ee6a0*d=9@U!qDUxxHMN*sT^{gUH8dzjxJtaeVDUaEXG>M+BKen z-A+?{usxN(t6$AHVxc3x^xPqY?ue<0F8FZsmCQp7`H;XtmTmOoC#L*gb8vSE?X8hF z$#O8o-(;zQ-8I_ zV%3j2qR%*O?kk)_*lX9{f|Yk*3x`~=s8R+xDk}AOF7}sHwsl8mH+To5y*9G*0&@$L zX@>pRFf#{8SSQP%CCVeDT*qk#bcN=6Hh+x1C)KyWr&{AUeZXJbv>nG1c73S(@X15u z=#hYIB+&tODdI;f;j#J_!A><{SymElyL`k+4u{puL$QYw3HIwbq$uzVC8RhceV z$iEPIy8G~1;1s4gN9;#LzvXzRoZdIV2sRZA*2y5$ES|9i((3$7#bW!06Pl1DDZpt; zAZB>4rZ){U{bve?hqTpiYUMnf)jvTPr$Ys6>QDi_uyaQOnWFK8uH`QrZB(Jm```Jt zIO^x7c2#4m#CwTfV%9TUXjNFd=d#yMv)n51M<$cs+m?BK z__`8gE#N8NS?5OQew=*Plvvm3-MsZdc^o-ugfQ4HdS|`O^;3x}c_&9#RbzI+5(KTN zpD(*X|KnY}kvC2W^HmG;nX3XcA+JLP^dT9+=ZB2vAUV&+2|si`)9<@a4!zH3N~o6{ zdf{j`@mxAyEKP|&Ubtg;kIQ%5`;PCCNmBI5;H6Fd%sa^11=muQH$wSS3e&F19-x{P zHw{sQNcXeqDD~SHv;+@ik694Vpx+_2Sn*G#-OE5o2DIc?aBqK)dETQtHN{|6wAFa2 z{rtCDJGS+=j&K2~YXweJX2iP7NxY5GFVs6TLAO1ooS5i-hZpwiY`5D+;%?DDky)XB z_zyWhTT)|ikFX~o-@R!~v}wjtF2J2cb?W22%lld?6tJb(;@%e0JPC_6|1wBO@c#Bs zo1S#w!#QXKbS?_=YtmvN-RVHGfU}{!EW=dqUzf&W51d2rckaoOxQY+FEm}s@4I=k2 zf0vpc!nv+5ENM!*U}qoiT$C^GlC(3R9=GeDh&^)rlJ+RM5ZqI^H8{6+ewRI#AwUpYhk&+^}@xQiR?N<&KVU~M5IA0T$%I}Me%KCZrZb2tE zmCGSAF@r`lhIC|Wt|&P2J*qx;@p$d`;D^v>?)IEt1I$}9ggs|LE7*og0uwii*PT7@~D_1hxcZ28MoOk8Oy z$`b{+i@|P8oq`!}dzcBNH`>F*)fuzJ8SiJYTiPne5ib!1%X6!G&1iYf%3LRPF(w|L z^7;`i-E?@uiGThm7e#+koo(?MYQ9_zPS-S)9?JjYR56`7XpigJoaNbDZnrQChlEEY zmGKyY#3cabGX5fC92s0HC8t0-VQM?VEILs#RNYT|J=^fv`IExqOjFMvGoR&nnATjy zcK(x3ysj*JNF0*1CXFKuZSfmAsZ50aSHvv3|HsrjM_2X){oWJXwryi#+qUgwVoc15 zF|loHVjGi8Y)!0*_3r$h=ic}J^F3?#?yl~YwNusmoUTu`B$|6p`C9)}2}L^+w1Sw> z(D4<0B1m`=(p;G8RAqX)TTWMDf^iZg5=b1H?%s)XlCjo=bFYombOwG?KbXO%a)m^6 z-5xT;6hr`9L+ZB%t!lqAhq=ZW2<@3nf2=T5tp~9pgl0;ONGrP8?<7i38hb#)<%`{R zx%ExQnt5^Ibuo4!#zZdk=EgLnP5DZpMHSWK^nEZ#>+;ZCc`_HRlBHxBCWRWA+E%;o z>8p!uU77Q#az;8s%zfjgF+UKKyIaH8Jr zwa7DkhD^`0fWv;7}Ckwm3I=e6IcjcQM7S zs6)2sRckZ4mpxv0*O`r)TZBm}me3v5e@btY1iN?@_JOMOJ^zC8lko+xT68W2^|HDG zJp3ou^A)Jp8&co12Veyka(-=uT9$r2^Fmg-rtg8rb2KK&pt8yi@OFNFKVM7oV0x;A z7xtNWlCL}ZzIFQ(=g<;jd0>{Emg@8^ixSIr-rip{Jm>iLtil8be4AWYjq89~?13*0 znT9)SEi{?7w=WKyfV726cpRQ@X&O39qY~;HcZ>46`Wccj%#c^a>t*pW52-usI7~9% zR}#+i^hwburO5cCj`Mk*&_7bml_=A5S*nK$rFV+??1opnapg1k5{I3Asud1T^`nBQ zKTz!vLn5PJRnQ%!Vkl#L#YthOOdD{I$o|Enq9n$^^f^FO$t^8($lF(3?`K4!EEbI3 zLHc$U4P>Clr6}kn+u%ARd(sQC&&gS^1$J*+8V-&?w+FEEBC0+%hsfi}mzsWM;69!?g2*&q=+jS;zS%vN&nZSXc* z`>c|=ay1BIxgMC~v${Y2U63Z2%RX$^_*zM3F6Q{|qHt>- zzRGU63R)Kt6Er-yo_vkSV)IP?8koaUI8MM&Hz4avh~a!I!ZAZ|&2nB313x^6p_%ly z(KWESDS(H(5(DEd1$i5*RSjF29nkWyJWGL9U&I)NRI+Q~kDuf{7s!O1jl*VmxSlxi zy5pG#E&EozP~y1LIi#B|bFb@_H7|P>qe)N_70VlFlkVT-xg%aNuE`Q}RfgH+US)go zM%$H{Iip`oo$V8u|K%RyOh^VT4B{j-x98QWD{#HL0VLS%4X4(vptrczeuzlSWZl^HU+ioWs)sOx-k^q@`&4!VyLfEB4G9al zoH>G=1K2qRHK?yS24Nm}uCSUO(+bos*eq@b_zCOC7D92X-wTbonWK1P4arkSyu5Vs zH3nPx>)7Zhi7Izf51w(eC&2ajZfvC!4^*Xy3e@@{YK zC<9&~F0Yx_mk$4uCgaGvPJRZR9@(qA)pqj8Id3=2{A!4s{Un-aH4ezI2 zPV2Ui5omVrP`Th6=QFMC6ipeL^OMq8`Zr`R%a6%nvsZ|Bn)cvD5+m9n-a|okOvU;> zGqqHdX-MSbZmlstzzSTF52yQ@_G|Fua!IvWbJ)q=f7Baffn2*U++~GSk9K%A{MgLu zdihryeEX0qkkkEqyE3#rwGu6C5@##BXmSjKgXq;;W=gA&I`W_vOy_AMIxdNNhwG4~ zH|?DC#G;8RapZ8y&utn#|E`na_p?~`g^80q0!`Y&Gga-6EtkS3%2ruN>+s~b9JJm@ zq+rVc6*p(7YZRB72&0WU`yiH>VsWr*BZ8!FKN3j055ZkU(xi)WZ2DcwK}(>mfJ}sk zL7M-8!^2fwr|wUNhoRK6Y`xuGT-Fp>yU>1%2T|(h+cEC?+5}B08#XVK5hK3V0~_`X zUW;E);#p%mY{$NriGemda)?|c^mGk9otfV;f8GNp75amyS|W?4=fo$$Zm_HD_n}y< z{qKq}eA;h(2n0>3(yDtE_qK34uFbapy>&*%SuzRe1Ainm!7r~Q+me(1@J1;LcJQuf zlHZ1p^TF*vfn(@+Q@)ec`u@U!J^b}1XiVu-H>yi=o`3ggnAP?4wQv<1F;v1E9~1gi zEDMbx@p67(4)dc(GvW6_xBw8&Id;*Innd@^3*oc*xm?=@MRpi?u0nXDr@>9iI*>DC&}EXWe`a2 zw71q#FvaGJLnSD7B~binmm6V)Ee5hQ42F6H;G9Se1d`0-1{$MN{1bl%s;rdr$qA;b zl+Q7JX$X_L5+b=|?6LP{&=JoQ5=YA`mj_S6iSU1r50K@EO4u?m%=Mv-G=}{C9ZgVe z`UKm30Y!S=mq_%)_a@EDgQTiQmom+=_D5NGOCE_m!)jF+=!e?Xw!;Gxjg!XSxYz+5s` z6*^3b=kz_2Ij|+hg8KVzSSY^uit8c@RS@0Yey#5H8IMDBGdq}H zH29M-Jyzz)emHQ-_4b#Qe$>hkt+urNK@!utO`bP{rLdD@|K!^HhXh^vJowuUW!$dT zb!ujRTs6E#z%X*U?)-c~X(WhU(XBPc5;+{0W2rLVZ{QExutH%D);}bqq&MFPgXH#2 z%gPH|xompe9W{NTNp-9^(p}>wA1$t{+PCaB<+MQZVu`r2O&2^{a>Q$v0e?H%cwK8Qp{>=}keK`LW>Y$`A-s zZ7rDmb|v*e)~^gwHhzJQ9Y=KPbE`;4dg8kNY`U^Kk<}C{`ihZv5Q{CPYI#4L5b+EY zvS)XS*!wsVZ3nNflh!<~f6l-cnwnp$$osl2H|QM4m0qz!#ZtOoPK)k)vZuwys>GUF zVp6V|Brv^0Ccd3uE10Rua*vSn|A>P~mE|!Z-t{5wSYa}VqR2PB8CNiaipFcFPtmS- zrcRpk(M25*)42ACj-MM+C(SC6<>{(;PZ+8KmVBmC+ z_CUL2@Td*%eNOpW5l6N#)6GX`wZc3U0<{n0?U{N zG@n3ma9mW?y-{e4k7~X^qzrT)Hl(4GphgCR*5OR5lrclI?7N7RK`@N0=ypida%!>` z*nw@1@1p*{FJlhWZ`WbD(=t^g$+Dx#B|0KPH#)C;$c8e1G%P!6lWXO=OK>WkwNjF# z3mDrqsAlw_&1+Ta7H+CF%9dUSg87yb2<(6AH88}DA*Bb>t;cMPBc(ZAM5a5hAsgH% z{2F4?nUJbVXiWQJm0qhY7Q$8UEML94i{YHcN7-Ys2<3)yBdT){5I^$6Uy5@Bsm_^_ zugTX8E?rp6e-p`>KS0(Ll};xsZKEGf65f;wsWXRoqz!IAWE z>H5e9g`gYn)g+P;;ZS=k3%VZZN{2eTjBnZ8J(4w;20bDchh_%cUX%-Ke?%+~XG}o& z3rSTU!0taIY z4V;Ji>q~QOZ_p?iu!nSUO@OiO5-NCbgn^Q>q2uDh(td~gknda9iGVWH4V^Q%^55#x z|MzUSC$w7^gAhR&#|5#N>!k5C@;iTkomU4OVFo+`^UA#dGAdR+Ebb)J>exG^xCG=@ ziRsO{ef4Mai;qty1e0aZrbNLl>hSKUz$BmS634&(r&d>9Y~H;!3JSe$GS*`xcMrH# zmW}yhRss6SpIr6{ojbHP4uKlih<)C^LpDMC$2W|%V3M7k5bcz3x+1mr9?|F%oECYn z)_WL)<;T*q_;K2Od@RajCZ^HXJo>^Flg0!h@z8^EJPr}Fr_@@yac-D|<@2!hgT-{` zbwWpvG0j?qPiu`BYBqI~E47dE94BkW*8(jzupVk<11Z1czYF>Pc*AMC&8CgS^c;a@Rto0O(%8aE9*>Ldl8SuVMLorU<5l2$G4y$m z{+FnS`R!z-Um)X{t9jZNeKnQPU-s<$AFA$G*^-xk*YeFF0S#IC#@W8yFKml(K@RAI z)oPXuf5GwV%0334PQeMG-CkJ&{KLQei12dQyo+6497Q_3xO&qgL&?kL2h$bxfIg#M zGrkQts->(NXP$W-F&cFUKa%%|h;b*jwjh{j|7BKPY8<%luHKJBa<{|wrqGv-S(QpY zE%ts`di&sLh|taR7qr`rKf>c`cx#Wf{1B*H9&JB~w$& zN*G|-^FmnUt3qzx6zniYmKK{9xT18#z|yZ*7MR&9t{5(cdF><2(YgIC_UC-q(qj zhaH(awC2<@tVP|!p|mm(!qwv?D5i$3WfOzmRJLx~2bI4@)7<)_DPRrr(PsTUlmD6}K7p_M8XHInklyHLbvwef?v ztBxX>l~-fwgN_{Ny4=un!iC`xB=MMg6k=bP6Wi&u6$bra+GW>HgMtZW>U`2=4u`9~ z`AK`jU2@T}&PBKtBWHamf_2FFR2gVHgf%ivoyOPwCtJuW^ig5{L;{aA5hV-3`2^y< zmFyrnKQnhmb;iy2ck9pK`=dH$*Xy5hgEq}04d;^IY$q6u^2w)>b=Fw@xDC(^4?R!I zU&k>G;F|^BEaXtkU?h4aAHI!!pP{eBoOA?g?7G+Mg6H| z!14`N3_h1zO403*hNmmxD0`kQ=Wi97pspR-m++)7{j{eB8TkWH0$1}qJUYUWitCF6 z_F?$jp1TpXzsJMJB02;FTL~q964yR)iE2=p{_YH#UJ7FB;F`31S%{rcxQ5@A`f(km zi{s6yZn<0dgQWxZFo&;sKh%)Q{9n9V6Zbc@P=eiF_k6r03QjWYyX7kc|C8KY>4#S_ zd>i)wySBaA(==hU0~%(+BvDLohp_yD{c>8T<2IP)$@0Bk_jnD`wh`0ol|JxNC(y%x zFtSV$e8vY+1cxTI&C3;33aNcQx^wPFO5dqFBo_{MGs_Fw2jsO;Fat8k7*Ow~8ERl( z{S#4BeqOo8QlBaibVCl0*6+keMH}9 zsifD;LTw&Yy%}8_WUi(%gUr1QLwN+*#h`O9ZZ`5_+-&%B9Fo}IfV5?eavs(cGvPqz zY^8inA33|{s~-ioXwG$O`ET;?Z3A0~H*%@s0a$EPXsHs7k|~tS6y}J>%a4txB!6$uSjqLiDqf)~j z@0SzHe#L9+@p6A-g}#Ui#OQ`Io_WUHq6ehs1;jp7C(x7?*T?vPiJ9s!6r(+Ug%#$6 zItR?_G!mv=$`XatHJNvg4!AhHf;GoA_G|MQ9WaPeqj^nT zk9;yUx~VfrC6@WFyies%QK7yZU0^cqBv-`%;xtk0A;qw^1A#u%FRLY3GF;^f z78}XMv988m_|G=vjmB zHs|2pvn4fGk*TrrEtuN(h%aVHPcePmuBobCY!1@fO3cD!`zr42pssDk4|mAldvl-v zCQy*c_WO@@N3kHPCnXw|E2ZSz9!Fw>WV7o#qYg9y^1(4a3<%g=_pI6{I=5Pi2oGnq zd}Le7W8PG~VYl)j54*6Vd~$AWqL%Lg;YY+>gJIur1|x%a9`oYC1zmRW&Xm&nr1tn% z3fGi9y93`Qj0A2e*pMt(*&kgGOB##blGM2N?jt3k@!=}>Z<@8=rNwhnokB0U4qAnw z0=X_SV)eq1+b^2TEU5}A&{o39Abth9;tbW%gvBtEU7X_e*9RA+^2k7D%3lBZi8?x9 zqC{fQ%cU>~9l1~rZSb3Pn#$ER`dJN8jjr=Za^(6+?W6}g{vSx}>!Prp&lr>eHeW%} zV=K_VIsQD81qc{deTaMW z>}bQ)BVypnb?sa*nAdh?i*b)?c%}#NL?O7~x21LJ)tzCsrRvo*c+xvcp1)j}1-kR+70lZlZaN{i$oM#;!@P&9Nz5Md)t=13(K4Tbtpm6)Q6ccFtcxppgL9}Bht#K(#(y-}-!uk)st z(xe%(qt3yt@cV0x8jOA(MhcJx0tGud-J5qJOv$30UHfzOeyMAO*VIXtljK?mJ51Dc z$3mUQiqI7+v@uCf-v@T06x)ixSdW?zaCQV|81gz^}pxm?kRZmH-9P$w@J_!r_cw%y${9Ll1^Mlkg| z<#OA@sV_l^v@ENX=qy?cyk23y$f zWzP{YPNR(dcwa6;|?`EVbgQ>F) za*`Eg3$1Mnyk%fO7tL@~^O;*Z2UxVVF~9jY;7T}11wE}UGhAK`d*3;(^yWL=@GmjRef2DpYM%0K2X69_6cA3?C3yVgfP|W3;dQ-uq ziA`t6LlWKWYZC;Sl-mkqXp6lu!*0=423egH;8mv;r4DOvh}`bWKjJx)8SKY)TXge$ z^}D-xRqy<`KMNZD$NUrLIEyD$>iV0_XjcOD(pe1{h|s|cg2QCJ;9Eu4L+1eJ@ldXY z2|o+}=Fa{S2KF)4)m(Cb)f4m+b0;TiZt0_j*L%c)9`8DqZKUL5q{9-n>f_+_Hvt9Q zu3KH1SZx%&kDuJgIFbd#{Fb|0b@2X+L4O(Hcq)-;|D=R*rvK23IwT76&@p1X@rv|j z$tH9i;7^!~58wk~WG8M+@5;)!(*M&Fs95iC>dc7bMMX19^b|mn20p>QM9pS8Xpv&d zM(vRP5cr7fI%J99_+zeJY7nY(Ih}1A)5~_%0viKYX5dVa%8FHY`Nk`rKEV;+Uh<4A zA~^1zkHyj$DKvB18!~IRrEI+nnaYzf7ok)i?T|&OmEc?>^Wh`zBmM01;!do=4UFw2#N0*Bhb_O_#2ce0 z#O0=dqs_#?HCgX`b@%YdB_u?BylgC$eC_E3YG#~yc-Hwi3Ed+;Jmd)Q`?h@8<(^## ze&zFiRy6YoIyVL^H}v~sQq!DBV#F#&d^&;r5(u)QJ*osv7R9FA4*2X?EvShIL_!2-f-)ZE zOM6np?9h*k{`QvSzcb?d4O+EpF90g?1PnrU^%6XaCytb^Da?yul~VRqB^ad7FkSP+mbXHzN+Y# zSsZ;8gE8z+KPz+2H$>wgR+r$F+33#Zgr3Tif++uVY-UoH#A1AqG)85CcSjb4NSU%0 znd&mW-P*y!!-OjfUcPmqdA^n5Z?DEjtH01U=#=>bQ`)w6pnQKdrD|DRL?X%wHZoY3 z5y@IFjtr*maF?>@iTAc4Iq&ZF|k>);RiJ|h&Ov2Iu=X@@% z?X|FbL%Y)`=QF@pw|%^z1vpOcO{oUgb|tWhSpxGtPZBgHwRGT!=D`4@rCad zTr)G(0&kJa#65IzUF4<0=*DHm^4?Z))B) z6S5|QYksltf9#v3b#J~MdL#C+r~;+WLJd~>=+>Un*WEg#!e2!tEl?nHi|f&37L9-Z-&BUsuA%+O;>k)sbLRDPQ==xLiA# z+*JCfocMPzv8MK}H#_lz9ZfCemaZ>~XuCHjJze~QifN>FDfUd`{!${o=e&(w8`#Fq zE;pS{!~8!#PP42@|LWfyk6aJPV!Boj?*^YfPLI}$n4-M-RK|#tt6%QFg5syoR%3pw zCf}0}CQ9xnHBd0x>-C!4`MaBJ5%(1Y_BocWl0)4n=9}B zBTQ85Vs#j9?kiGQj^i_knsq;G@mu3=cuNa%v}|3|qwTlD1Fn8gKas5XHAX{$)rReu zrGlj$L9UbM<2^= zQj=o8igvdpyjK(2IuJzqN46$gx9w3*&2ON^C59Ke?2#Wu-QvGuvUjvtgUpbO&i5dM zY3K5K_}vDL(^M;-r%@7(##kM7JRc5=L*`OEUlC0;Bw}$fnzZE+gU0;gI9$>9ocqCm zcGurt(4wQ|Z%a4$CPBJ@W->0DiOIyUk_vrSE7U!TU9j-^e~e{n;rIQvG~ewy6j#F| z(IfZaC-VQH97xwHyDR7}wcelE`YT7%88yT~iSw zTQN!ejqw2yBZ^$#DMx`z`3Di=N^V2iT^;iDHvEG-jtujgy0! z)2|Widn!3hl6(eCB3p3@CI6=G3%6qT5tewGM~_0BaU{;CN#o2uwcWgGs}`RToO6a@YH{*+-Z>$S6hloP8J=4j-UArKK1@4Q3R3z z##5E#w^n#(1R=SL2p!3-4S8{dPpOFtE1J2o;aFzKUuCorIx@_u*)it?D1yH?1|d@V#Tdw6|BpVfdrYipIN4ZW6@ zzDQ1T7C$ONb%uv`jt1y_X5Z5MejfeaaRg88=R*bs%cC?JD1w;WN`jcY$=Y1N8rc&M z5lT;OCcH?4-;j5*E)nv1K>`P>tuz`Wf{EUc$2r9=jHw2s6v9;~fFwYuEAW{KTjvOU z-U8tGpM7nBl*0c^EXa)p=_m_*wpGB)B|t33`~@0-l)}%>e<)}h@&GcvDCWXvN+Dc@ zI|*P-9k8}YPTY_O@X`M7lmH&>e^z0GkpNi9Dg&%Y10B^-khPWKgUy5^_jI$b9yM}w zNZqyKA8rDF!eAIk&*u#%QyfK5DiXqzC0&`mAOhGuIX#&@+hQTP^dyTlP*YZbt~u{X z^<7RETn@MO+t-&o^$9kyN+p*HrGfxAj(RRoGNCP>D%TRCv`O@ zQ_&$@J(hq*3W$;Tp9MO7KK;-$s{|>BAC6uHbbkL~9ymL(Voe$5@K+!M5jgy}S5JH; ztN7t33NsGPv_JIFTq-hB8+5$P#8VPwUGrsK%N0~J=WE5!PnmpgyUP62mu6{Bu{w?g zy1fM*n@VSb^VMgutlDU_w&ZGT*DEetUbs|GD!$TO4r7L5#3lM6s6<^RKDhMCs#y-a zRc_0l5YNY%A;Lqfv+Si!V=K{G!pITD5ix zQ3B4O<>ETxxJoc1wem0w-jt_LGR)#1^%odTCHzlR6w%3iO#gZgKGlS-&9W@V*bM>A zBK?7lwq^=*!M(yQ zrQ4(mPuPLeA#Gx+TBmJdjh>MuBrm_L2rMvOsObd2`>@q~`JT;2zp6-JcOexTOm zHJ5$Rs_!f2;0F)4cS~mM$H2Sg1J3X#d|Tx;x9pDPX2vi2b%2f4Gi$YWwJV1uSJ$og zq-~^>zRT4Zbnkr&af(rlh^Jmsbwqv$Jjw*R+zql2%J?5~3}MJz@Gk^$B$bsS4K>_r ztYL)yHeqb8G9azdK`DC_CI&CWIhff2`G4D?_aN;Rdt-X^o#|XMwcFHsQ~-#`V0< zw8l1JAg$3k7)Wb$4hGU1fg$9y|NqSDn5cV@#_Pnucp$Bj3wU8*ahL_t8rSn^K?N4t zgl9^9#_UOuKd8R>{Qu=H49w6s!m$~Fe0gJ?I#>zDCr-7~7QEbZ*yu`gmIbvoyGT^U zo5MqfT*Ij-tZup7X3>a`Fe0V{1!E!pSp8u4q0VV972^wX+rl-LJ>0MSv?+; z>Cz=$Dh~d+_hrJ~DwZ;bVI?gzU-@HZkh&-OzL8e9%ue zNQ>z;dab4p8D<6Fhp6ZWifz{svuB22|H54bzr%PAGx&cY#9{I-a>|nCm#|b;onJwn zv8{G`E*~Og)Qsx?Bg4ma*>hBE)QzxnU)h-_86L!V9W+#Itcc!%+iAFda|WVRGLB1t zz`M?@-Adp%{K|ArJ(7eYTS%;ROnp8DANLKGNBHtU^3lLV^k2^p1g$jPF~gpf55J?S zJ`lE6RVt8>S;U9XP=%fRRJqa&A-nnX-}b@P6NSolk2GH-WK6>?|)jPYG{jcho0gg^P2o^<^ETbx)kH)wy%x&I=$3i2Rs`P7N3ubOj%fPqw>%IBg9#526 zoOM`BW(Uecl&~D)iIJJv9>+?X1a38UPU?k^|S(yA$KV#wDAdeG>&}ns@Sw%|-=iEC`%wLrz z3t$dIOUE-?AeTp0wYP_VAO60n@ooM}>?!2O+o-Bk{SD*r&%)-xLg2;|h0uek--e27 z^2-(7W>#$8$q2baC}X?Rk9Nt)$oqsCRkon1`OWqE5oQXGv$a1d=j+RJFMMuhqt68C zW>j=|t)p_=xfxo|v^?VyWXmd&Tod369X1b44o7a;WZX5QLveH3GK&}Y75H{1GRvdO zwByYkMKJzavhG8)OkvbFKa7PZi$sdCQt*G6B17brQC@~|RWsY{jBJV?N;|HMY@U_K z0Yxm<&{$N^C88?cE3rSUExZXE2f;kujiJkS9~HxA+#hnx_XPRZe4?&%|0A~2tUP0b zo^*$PN97R@%w+%Zqdt?_9c|d5e_4Jr%!JE&QiYB-{t<3~%lMHJeoGCYwsw~*+(3mn z_Fu_kcfpQ^3LB~_6@nGWVDOP7rK^5>=hX+B7;?uh<6Vo0>oj0jfn z0+rjdnRuYJ#C|#`of{Splz9WWK3&RpVdMPb@OKY-s5uQ<&VAcFcSmu+TZ^JUpNXJ?9{x zrSyX3@EU2l`y`O85L-CZQ_jZx-{yT7&jf<{Y{Qp!P{@*b%Jwk~EFvd9lRVs>G@K zkDB`aWzFbk)HDOg$!rKBgkMV%5|8q!F2gcUYj!kajy?}Hc^q1W?d#-9wWn=XgS5CV zZVHk9d2=L#(XSP<74nUP#3~+ip1uV&4BOUku@;qCG3VXI<#p3D%(8u=KQE-f z#Q=;DNCI?(n9zQSuqAXvmA(?V*dH2VP*R}i%Xg_MwEu1a9LmqW4ge_i(*%H_1W5ou zsh@3}B)p)cnJ5Gx2>>Ydzs>+CRcIf8P(nw17JLD$F_MFlRz`&b1{)P+1_kG>zidKA?pdrTViM1?Ecy{EFn-$Ptg zKR5mSJ%_T7fDTs3s|JBCFGI|RdFGFXP{S*QP>}0VQwkGpMa$M1=OnUOas6X*qZ)+g zHdT!5AK?aW*)C{yA$|YU-GqaH@_;xM=kXpY<(UbMDR|#Ui_;+mkJ91o(yHuo4jNm0 z)W0Lei|bwVQ0MapDPdm6Rl_b`^*V$+se73Fnn^gj@Jqc99PHyF>lPFfyUj25*CM+E zPw&n?`PqwQS_UZ$rc%`nKeWH2nSXN?7SyCSIB>CtSo{4awrRoKHQez19jRKxaq7zx z@nE;=yKdLeuaRzjjz#?(tY7*NjGck=dGIci_gAC0LJM*6Xog1kL?BDKih!XLu6Nt zICChE?ZB?{zs|C1fH45$)I0NuaoV;7FiuxMi?|b2*5a9 zHS#C}RuVruk`jXol0d<{hE$`N$kT`g9HNNUYIoyrIoPgHKm^08<2VDv#f^|2f<&PeiM z`pNl3+I)_9Z95u`v!f$B0HYz2dJ-BBZzUO*{6pAWkQmW}d=_Yg1n#pygCE3y@=6)= zc|p7k)<+0^FH{E=#Lwv`M9@bFa6XOV0M2KfB*6JR1CZvQ_q71dConqhlk>@se5MR= zK9@}a&gW+v!1=6`1UR3|rU2*jzs>;X^L`oNeD)E3az2gX0M2KfB*6JRQwBJn_dprD z|2uCP!1)C10et|@XPqR#`CK*yIG<u&o%+y00vG~YlX5rov#g}3VzTc*indf^4oiI3XCLA}z z$qA=AtXZ49iT@Hu-tfuA;%b~iAM}`-kcItf&Z{=L^vgH6$27_Vge(nfJVBhGAciyT&y+_$j99#mR^?*L2}zrAEo z%#m{gUzd-^wc61notK%LGU5JtDWDoRI~!K)z!RLntD+HKyw|!*a|~%-Xk5BzG;5YZiqu4hm@OzDitA*mpaP{{b z;gG_7x&m*y1}|HqrG>RJDn+Acf=!}J)nrEVbm=YV%Wtm`pG)0!$#klA>M!KNsKnw? z=+>ot0VZf)wAHE6VTE=ya}pj}7={W{V;cf}o777cG2l-mb#&lPaF?##e;Zgj`N|z( zvL2Ylv!zeFlUZe6Vz!`^V;blBt7q%ThBudSmF(+(I56IYUJsKaCOZ(c;qO6hFEVm` zpY&#()4%Cq${vX_p0a$ews@fRJw zt-Q#|T@$HLCXGi_ps1_hM>e)-@#QPn#MMF7x(IrYWa{#~NhzCW3411;?fJo1DbyZw zhmIUWDcw{HOQ(kD(c+rpo?JoxG4kX-7L1aA>@!_5yt4J#9AY@)$#b>OrR49WP+!j* z>)VUI=JE*TwLj)sQaQiQpxxxc4SuYTDAK&ncwUkr{{@2rRd?qi4I(9_{*pb?^G^Zs91WgjFE0rn6;Hw|fGkzh{bgAskXJ+Uf_u1M9^1xXY!%5f_s`Hu>If1d$~{`nxxT{{=~_ADcEtM z4ux4MIKDlanc(c|=%8Ku_x#+!Ta?4MqxC$Wo>`-uy1etU)SfG$0X*0?_>{kEY{^#iRpcjWsDALYi0oV-%? zb+tn^f+OFzKP^lmK^A)fIR;s|_o$D#rCqmd|L2KW-;|V^g+heU5d%Y}Kvxz)`IN3O zC6Vam3Q3Z*GcIsM@ogn=#Og$DKv)m)14U7|(f?n`gzOdFo*jn~-=3v~5!;?M*(Y%- zD}V$ICw2Ne{TADs4~@SH35onUi0*_E9C0H-=+ovbuaxBWtoNt9=^*{r;+GKBn-9E= zAaghMdBOtIWl4b}GRP8whHHosgNFYRqy02W{V7(~r2o4NH>^Yy?j`{h6mB=F8(<`S zAT&O#<92VpQ~oJ3qZ`4=PH2s&d;V#>!Cx6LF5#GDckv9XfjZztl5?&mPa2%*dC!}N zMQu@u9RE6U^C`d4coVe*t_nJR0w3kr5%y)Q`3LFN$?{qa_P-1%^M>&Yf;6`oIG@yfrQ#+fM167CcWnYb ztrBamnoiXY8m(q??b;G?w^F&Srb780Mmu=LhCm)lI57C5T#KnyO~IK1nj^oTV76JA zN}{K;vrrs!M?dmvhheNL8&THggcoGQs_9=kQ>djI8zsZL9!3Vfp z5h*H8PoqA@y(PWV>mDElbFg#WM9Ti3CIdsSsA0g@;L?nN&_7{o_wLp(|r#CNfN34Iem z9A|Iz<#SMdfrCi=2my@Pr_HKhH$cJxSqHvy|7=;uDu=%L4C2Cscrm3y@gw7rz{Cyv zB%`L{;H0Cb@dh6f3bFySc~hA^QADUvWD@Zv%ocNO+!ALYWCK;oed z@d-GD)88d{UDQN^UvoC>VylszIpFGf+FJo6$A<bXDmysqlk~@xLlP-Ly=3e z{UxyQ*Te^o0$-AGtWQZ>LLN_Br{#xzGVUR%!vggosnY~v3?MAV&}X5&2LG=tvI`-A z`lu^V10qcf>VrXs6xfB%fxHYC*yVoV0e&xHR13tI&q3-yjHz1!V$7$_MPXh*L;*Pm zV$5gDd9)h%z0K!N*x)n9)M)}SrcM)xG0T-ej9IP(V$7$}|18U(MgH$HfEd$j0K}MH z10crq8UQiIh{+QS>OQDaH~j2G0~h0njAp^VAe82jF^tCfajO3#8}iPiSKnl(&(uH- zIzhHgMFTnHl&S7c9Y0idl^$f^p#F{y)X8~q4bmzEUUMRTfOn-eJ5V5f99gOXSyU*0 zzl~gNrzkWR+F4E(u3z?TFBe2$EcQFyc{~_0YJ4fbOnuy<9iJVt0$pVGl`kBea{a#cRY$Lq55&A(pTVvDB1tYuRi~siuEuUE zERWUlzAswlJOMaA+g#bUS+T{k@yA%|Uf9kOBf${m>5lH1Ci3G1m#x5|<2+7!v0lL# zYFIVwYdmPk)NlZQ7dQX;$hD!Og104B#7D>HBT}o~75BXk2_M;gVp=jpODsbCQ|@p@ zA~xpb_+fF(dPvOZMTSYu?0{zkkX8g_R!kC8l>bLstpAFJ#8hV~0g@;b62l-tC^8H< zfzNTDP5>u5z8-J_pMzQeCosAUIDt_upmVSrAmM;)08ZeuWdm>mIBS3tATj-P0;9`- z6Bu0voPe1f-~`O<04MN2ivcVHPT+r+0XP8?Q@{z3m;z3K#1wD>@%2}bh&Xtg2fY8_ zKjJqIc=tWp5qE-=ap6u&^CCG}eSbjk*zk=joBEic{HkhX)e9(0NJ9%^zxSUC(vq6$ zbpG>a@_qQuU;k^*ZF6KkjtAXDRz|nQG{^5Fik!nO>bT1skmb;RUof&!0Ju^AX zuQ@+))~m)l>ax4MWhn8eDUNR^vwqnN(8q(~ttr0dGjL3ztF1XWH{No2CDZRJY}p&S zNp)3!Xv)R7H28uwjkI)FyV5{bCNoj)=`Q&dBhUY~E+fK;NRqnk`@I0qo7JkS?Rk3Z zFm@j3QeR5I6W7fZ(F|~^@pZ(Yc1`ki#P2n^KS1t5pg=&tX<=lNQL;*M&|B# z{pXv^oOiPC?z21Z+_}$l&pEp{>_UUW9smQ|#Ub6oM&S;eo=-4E*2NN_yL>Y*Djz{5{zaY@{qHjVFp`t?8hICx_WqIo3yj18 zL)k{z=td#z!}}K6gHXv{ws4#qa~HA{&WxWQ#v3cbX=ybT#u#F;J;3}fe$Vl`$YPew z$<`yKmCo6alio>Od*K!Bl3D!4(Z=MnG2c%)r>WE)IT7_7T!s2zP&*g}_Mrt{GfQqe z?P<+)rV%hb-6MO=M}*ouU6(2_sEkw6o&+=|*pd3G}AO3%leQtxp{Eqmi} z{BsOrkJjUPwU|O8-y@^3nH+%(H49e7c5v{+qL}*tr%#t@p@fxKb8mY;Z_J!VC4~mZ z%3-nYYe{xVy69KQ2I0$cn=j>B52 z;{@V+fPKW?Mvn${3HNu5mJU`P9xIJ9>tvV)(*E}8s(5~78rZfpeCjBCYlm`X%xbH# zrB5c7(WAM!&HNkzCNN;?X$!L7eoc1Q-DtNA*7xk02IR)y^EKTZQq>PV5)iB&39P4f z`ZuO0d@?NAklu%Ho|*<#n+Hwm^aA@Mok|Anz!-`b;0Z3x}y7C0#I?1%7q z0O{+jeKwsRWL*QFBY$Y~NpR^A4{M~C(PP&Sj9r}jCQVq9^Obh>7?lo0W5&P6ribN5 zSW7=qt$T`JrUncwlTN;uR;=N~E{h|8iIILamhq9^5!jG>t!ZK{+WVaulhP{CvAvdB zYiqnCaMz0U>LU>T?&e@0^AP*|Kok5qv^D4?jtYp$}&b10z`>NMXs_{qqGkV70LKRlUcz#Nti*m3*8Gaq zRSC)w#6LeA!K?X}kM>ImVo%ZKO9kH$#r~mCTX`=Ym=lSTA*4X)s`HMyDMq^WuK)rvsG}7dghouZAd@suKjr?c20`GQeLLS>~QX`9Jd)-1z#pBpL9sp_RI}(Fzsv1DX;fDs(6ShS|8tF>gc-P z7k7q(HcNRC>&aY}A5!;z+hU23d@RGC!5}}5^ibT0;UAt${M2+rPoKBPQJCaCE&08- zJyF(^FJ~<_bd@{#zS`P?VCo3r#@n&Im^ml;@Q$$M`wx%v_|rRcH@LfrbI36aqN3k$ z*^$|)jS+uX^B>=iT{J7tTRc)so^`F<;CRt)vr)sUC@JAbn{tvbn7`xm863di();9ND8qz^`yR zWMa^2OvaYeX;f=9js;7aehF?6lWH9A(Oz#GOVLbOG@h!9nYVR1AG&oAc7z*))KUE_ z%CR1!leD0EzvFc2BgWWpTz|F^jMOOO<$1|){%l7#=9m$4b^nK(7i5>QbJPn&Hf83_ zbJBrkz4KhHJkuei+K8o~FU_4!n84vgNC~it{iO~qPo5@*v63vZLCL#lTiAMk?rQL9 z+QjI_7rPn6+thPU85-&;=XG>vcTOglSXvL>7C4TgN=C%c=_6I@BCBd}{>Apt=V=3> zS!uxuVPi7|ukQK$)Q2L50^jvCT20c#-Ul-NcGG)fyNLF1S7UXsc=dqwI+h~GNKl`A zSM`4V{&M{O(zR-HU*hWEgh2TLjo=5%bN^B zceVLZQ(P%gHnER$ZZK}X-F5$WzisndSKHG?$~_Z1=Tm2(FFR``ma!yT=F&OwMpmre z=1usQ=-bYsR|t(?A$$~#nMndWaV>XLrg*%9C3oN9`=|zu>R7X#y$l&+inFn>ajxjt z^d)Y#?MKvu*bH7cWcsLzPNBX!hp%WoU-uPf>67L@Jf!c-=Q#V2u)nl&{+^hbt&jB~ zVM+xxGd?qDK$oLlDO;VTTwHa5^9KLC_!BSYv;RQYHT-(k1~o29+t~9xk7?}6jT9yL zYMOC;*@4ZD8Hg~;FNAYqWv#9F>8_whc3r#A&h!jVw-@#!j{mA$$!Y^ zxZ*QuUO>+_${rJD>Eb(c7&i0vC?ne^A$hEy**4%bSr4ArAMln35hh;Sxk(nW4P{eE z=J1>;ITFMX{P2>PJ1oa~k@Fx8|7pGYtAWYfMM7Is^fy=%19q1+QW`MtUN8?PX^KxUdB=UEU8o1g3{x7%{(co688FZJTqxmq}< zY$L~0s;m??p9QyB&q6fIt0+M&d30$&k(76hlMf4;%3wB!9C5~g2Bq+Mbe)Fa-H}Qw zvq@6X$opI08W)VifP~zS`_P#-BDBBZvA9$U3HX(&7TX&~XT@pPEArE+UcdRRd?7h{ zX%gQTXl14>cGB)EZw{kTWV$4B*caYG?U_qshrKG9`c>9mq~`j?z8B(9$YAC)C@|=0 zPKq}9teyMJ>!2lcK;VwT)?e5I_Hm&GR{sYay~$6H*CBnCm$lEAE(py^U0ZWYe~v;&Q?z(*x5_7WaBEJ}|IAHR ze535y5ktzLLZ0PUQqzg*sHxxnJt^!(EDQ$og^>z^R{sz7UiRp#a&(F z?ekc}1ZI&xbYPeE!m&MVQq0(6m6egrxb9Kscf~Od{w%bl&lFXx?R7*37ae%fgSu4$ z0Spf`$BD7|4ezyVl8t=WdcuEX%)K6)X}nhxt_kzs__l{Ot!DQ;E!=436z9D7R{rlE^Oqz3BGgZhh3(#xW4(ZR7LAP`J)p5fTYRFKLH$ zcmXs<4GF_nEYFS4rC%H`!^B3_JHmZk2pmJ!L z@2gOGQc~KObe%i7u3HfaYvo2)1otFr|}=EI@Lr*evXGXi4u{BjR@-(6WUCH;FZ=Vnr-pskY8~so#;^xHkY z&7-J9obra%KbcqKP#o{o^eFN#dIOTAE75nApnp9}jYE6u5kdx&PHD9ux{CZt0IEn59^U;P zrRRWprgV9=rJ8>t$Urq{6j4{VsFk z61T>3lVI}(dV8~?*YF8b;re@K1IHX?NF(VOhS8uMy3+)ia~Q}LU5Gg5mYw%>7YWiZ zdzp||NRj7F&p0u}MFUft&>ewfQc3?74`7DzWC;@nW$NPDo7z#I(dY`Z(Os^N2KJ8P zIC|SW3a@o_Cu`OYn0J5`-m-fmw1xH@(N*CDRl_**HlE2X!UDf*^Du?V`;63*x7F&N zLx-`eRYPgrw=_%(_p!nD>4%dN&w06~F4LEUaKpUhtQQWLhe3 zD`x?u3*^Yq0HU2@e3=4ADr~or?SV)~H6!_o+6?lbg4WT`E!=P$%C}w(JX53 z9-I4*NqwdAuCinF-jRJg4>%F|)bu2^t6B}^i|oDDD6hd`kg@eZXyGL9{+D3yVZmTZ z)l`UN1W%M@>%w^mA5Ec%QNC1hcQO>|B$r^b?(xS~VizhX&Z zwk6Iqv6AChZl{Hq@rrzxl9`=yPg1f!%0PQ2x^L>k%5j89xQ{qo<;uBK3ZY0(M z!{IeI;mpT^sRPO;!Jm)7G%00b$zhq})ER1MXqB$7SSV|*;dmBg0dH98f++iLdqPtC z%L#7c-Q?n4(edLd`W5*&f%;rSu)EcA`x_cy20~L->f_?YRkmC$vOP+EgnV1HPA};F zoX{9TSe(<;r((sL1cHrYV!szN+HU7$F%f%>v?chhp|B4=A<<`vX_ zfJf)0;NXGno7)?lp{oW>Mei#mI-X2**lxRZ9GcEtL818y(YE}y+K^<3uS|gF`8Li< zWh5YWMJLii!La@`yedK5Ri0AR;buio;ClUAbB%4GEh!KVs$9>y9rFl|=2A2&+n|)Q z98W;fap}(Op!LbLo&5#RY*9I@r$ioQaP;TJAH-xuisEwj{IGS-Gg+kGt8lTr-&l8; z&OcRaXKd%$CkWI_&1h4m6JrG>As9EWz*Tus%OhK@luqA@uar9~9ei1g&L;mZSEDPp zCYX7SWy>fWmm&>wT?cI_E4MYwq<^V$WYC{M)Ao45$TP>pDc3cdW;s(sCl?7!EX(4} zCx2`=Pj`SF`^?F+Qu*fHptGj+zI+Ne*&+^gE{pea5+3!;21gw@FP>9NWz-OtPhP6b zsEUiRMqaA0_OVjmorwerueypnh#b55FYv21`C{DlS&-=W{0Dfebw%9u>#XPUO1TThe5mdZDWINcGZ*;4W^zGLrdO80I$3l|7C{!O@vET_;9Xk>+|=H=8%A ztoB{`|Ay*_NNYsvmccuu2}5bDFF9dd^*$9zsBNJa`|k!L2uxMAVT~YWwB|PEz}M6| zRfa>^PfgQW)lWIgHK&W52iE4c-iaXd-_+ zId?8PcEBHn$Hyk+{c<+b&USDc+ZwSnavcm!Exq>B8}#r-ouYC4YdEnoiL8djq5Z3( z^aVO(DudvYR^fyE-yP*`c~CX=cm9Yf3)Fd#_n>B9q~|+7Y&ho3e&#m?j#_0l(bMn( z_%JUR)mM1MBSbIAnWAz>bSpe~(7!(e7XnrZ z&IoT+&cq%&rKd=d8tTfDzk{QJx~MH{VwpEck6=pray_v{G-5VPXvew6c8YB$V=$hC z&~&60Bk5KiVOV7MqaF8N7pYH+9ol%=>-_Y)Z#|32>La$~$Wz1 z%N7k>nhbY%!h&QF?81WTQuqM4dqR`sqJZK4FJy$Uia{R$0yXpjAW%ae00K2ceIC@u zxEnyAMxKTST?Yi}k3oPy9ptwWFBs$}4t)R!)X)cjKn;BW2-N>t0D&5L`a_@wYXt=A zAiv5?$sj*Q8A4!UQDR}iB~jY{E`|)k2@t6NvkVVFpayFN1Zpr3K%fR|1q5nP1luj- z=@Y1>pLT(C(HfugoY{ZMLx4@>QW}cgzzq374V!&1yMyJ(4vtTTnnDMrIK~bX!xMYs zz*%_rV4W>G%%kGSDutqHFulJlp+wSVpv{ZaSfv3wr-z|`FO8q)s%TjqE4r~Hw08lA z6s?ZK50W-t40DQa*5iwfUSHAoDGDv`(=!^8DzYekZRNpAO)TB1$R&$l-f*Fq(3~_5 z1*A5DmzELMyqxYyYw8wXaD$J<<&Ug2W%W2*uO_E(XZ5gARIeY3pcnI{ggf$pi~#~c zVL8~jjPrQK*~U=J$(YI3lFN<_*&g#~n zk<0F3S)l@+uK?xGrCl|w6i0ox{B3q33jU!B|E23Xa&E&N?7hmx1)um$~Kd zedn`#=qe|axDgP27x{o|T;cbzTDe%^%4J*Vx6mzL=r?r=djL#+QwO}0JP`daa3B~4 zZ}|e8|CTSn`EU6God1P@7y`t*$VC@$qw0A_eyIXD|Bpec^K#I@*-!reVgj81mM?Ih z+VTZB|9>q2=il?L1#tckdI0ASO!p-ofMi~X_g`Ux0EDZ21Qqxf8Q}c?vy4rE^MB9- zIRA%Dfb)OQ12})c_SW6=-U|n?pJ3{^K1bXoc^#&zqz3|Tf`U)lYkO5z`N-3HM~Iq2 znO$Aj37F6~OU%U6oiUDHtzDp8=nZy~4` zsSqbZ_gzKFg1LBg@UiWCav@$OSX8ln=3h*nv?hqCskivOw~$ma7>bpTByE^P?CBQ; zg`3~MG$yvYiWyUm5;wuXeNFGu}@0sG}sZ1Vf*X8kbwAFNc zk%t}Dl@tr)ORcO90?ju!T!s6%~+^x=F^v zxL?}W<+4&*J&GNw)YdPPmQ{U3_L1K6z0p}GCuqR-9GoSe6X*h=dr;l` zmyd5-Q{U}B60ty$ClQ(;{{=)`nobN3F$*}ksb4>QoURBC@&DcJiv0S~<5Ix@hMyVI zIO)J36%18b&=6Kq7BrlOm<5u&$j_QP38%;p@K4BsY66KEtQJVbU`mSMAKiw5>-*m) zkcdCJ8v}`$h8Rf1{~Ccrj2;JE;4~j3Kl4W{z(D~701`0}7D&X(feE7knM99Ve)%0!W!U zwgV_Tk~XmVd2!8h{RNztO8DAo<4+^?q*SXu{TYxxWMOaF)MJgm=gTGeg69qAh=i|* z$&udBUx0hepPrpCr*)^33ar))(6?(__XhziDyrgrn3tTh!$X*z_me-x=x+*uiRESA zKk&We886-!`SH^S3|T=xO4y_k2J-?s%iSjfU*x-DKxert9t}eYdKFqG`d_fX?F2LM zrKLhQ@GT=pHt>yz53Lr6z=eJetQG)tmfknw69qtL`506R=qz_;fX?y}^N5%L01^Q1 z0G;Kd5vEdNKmLB%A*1H8Qk-a6w85Ir25;lH_ zdTZJIT-h0KNoS=HWalrFe&yU7Gp7#gPr2r0XJ0mHemnOJNkeN(>lKyofKOHLeJPu@ z`{Xt``%tYZRUx;~Tl`Ba7(HoJ%f-6BuB~@lBI?D8=&XVJJIvlFEXD4n3L6_8MzH7Q zIVA{h+6+n0d*eZ>M+ZR*RSAT|`b@#!CvIAIXfhY|XCZNin_6_znnS*?opkpedfZBZ zsV1vOiCemb^{3_}J`HCyPBvWb)QzwX^Wknp4wi}ZaoanxJ}Z%SaE6j8+4@#9!Ui3R zwIXNW=I$(X@sN8RV+9+G+FzsTT^v;AkJ%bhu8@P9`-UfVH8(^w+bPw$0arr9oiK5t%yg=!Ov2vZLC2ZJNzHICoxl4-LzPrJqr)530vIB5P3+P3&_^%Rce+n-XL> zGac{r6pyS>v@$$wDV1$e2hX!o-4l)ymPD4TUX!cwQ>hGyWvd=l599pzDpk!+$5+@* zi7(!$b`{C3FH#crW+lBw?&%@@tj@RD-gb3Gsio%m<*LO4nr$(1zgp(^kKhNTe^jPh zp90;|ZM4XxCgXRNue`>qS-Bm*OrJRG;z6meOyluzJuq>Me(Td~yQ=P8bpG84 z7go=EkEg3KqoT5wT;Q}1fv%+P&0>{wTGA`~H#sYdn^u_m?z*aQDQVSCYe)E_cytJCqtii5b_f8fY;IOY)+ml9G*q^XcP{t3E&+5%7jJ!}(ZJ9smb z%8xrIVf1uRG?#1m1Qf&rH#0y1beIo_z=!!59LyixHd;3Sb^i_y{;#|Gyj&{3hXmNa z#>zk^St1>zL!hN=5&T~)pd>!b|JVWhbO79*n7y5LMS0Vcahr$IRA$YH+7<%X zcpfVZ)`cAg6?vj_!Z^P9#onB+c-z8h;{1q63^Ez5t*+ozPD_opjM2g)g-yU25;;+G zwe!>AL35&CyvI4RKKb?yisFZm`vqY@MSnH0aDnO&j-vt|rw^SS{95LTjvTh*&- zge6&7W8%E+@4RX%{a_m*mf6_3DiInw7fPAPa<)HKc7QjXHQ2yRktprKS!)+;77w!O z&ms8m3rxx_T?2`lE682t&G?T%cGfN9hX*sV?wbFf2^0M-fBG5v`k~u^aMwH9JSJ=} z>;n!sg7&DJq+^ABfEsxG5_$zn1A?U%s+fF^?)x%2=8#A zLd3(F4q@UJ6}CY@$N-|}VIvq$cXbuKpAo9dL3GnWa1(5Q9sb8a3&lb&EGCKMbLgFd z8dr%CD(52#YUU7Dj~O~+7DkXkVh@p8KyNeax8}3bxiu%~!C?#){}r@P42SUiD4HI@ zc6xgtPKJt+q`}-@;u??OquNRvpeTK)Uq&WDLU3?eW=;QQ#KLt>-ssY+BTG_)nvhI% zk_f*Nyb4%ED;XZcKOiUiUahdHh9`U?p-nO9N0+dZ?sRN1kV(or+8V{9Y1nRL+oCK0 z(L$to2yGV_K7Nx>r|8<;18cNd!sIB|@EyRza@I)YTbR-QVBzY7x4)zG`=ZTpD z})vngtLj~OXHkKVEojc8%BIA@fZLNnj2H=XCx^XuG8 zB}Zr*-LdK4axhZ1>5eor1^ujluRmqTEM=20Kt7kCg6FRL+T9)&8*-anpP%+1g?46R z!_9S4wiW_@pDwz&^=&*$W}dZ4eMgV1S;jrrK^`@+Mvo&~XgeNp1xjKYE3Ytb_jLsM z=LJ{Mv$*e$3hame3oMk$)wX);eh*!DTgv%YxxgQ~Qg+r7MRpy)*R@vArF>I;7DkZe zickO@>#^zN#>~D~_P#A}(yq@v{{kh!dcXP{clzn4s9_oxK)+9i03ZR-rFZQA(bC1FgaX$IlHMQe57$WXNkOr0pfK{~ewAO&JM+C$#Ma;KCRjyl;-d4zc(rRPpo*kO#&Y()j(8$u3$-RdGYjStyY`D=k6L!ly z(K(pDUbjlMgGo~eQfcyk^b@YO{_jqF*~7tK3DWsvXIkclw2J{P(4FhieCeV z&t%^6lZWNkil+kQ43FKo@`(2;xgK(&@~CW9*hX+Z4r&eW*;2V42T6GdS8CgD&iN5U zQ)(CI5B=4)5=%j|6Gsc?>>+y3`RZ>-EU*@;!q}xU;d4~k=SRvp=)l&$V133AXDh)Se|1GvvQ2K(IFCNx*W$%>HSMffm{mT75R?l#KN9{GOZHDw^b~$IVIM17O@sYTM z`Wgk+`&w?wVSK{efvfY{$Y_^`Rla~xGJa|7rkDqwu8+|9tgwb46)T zGd$r{*Z$6Pt!8tL>6wV12lh@1X!5bYdj^^|k)B`uq}s>1 z2+ghw>s&BU{YVQzoOnPp&on_`*M=e!!9LS5`qiC6*fr|mF|(edzx+U@c-|ja z5!j4*z3!;)id$QEz>lQdFu0_&IH z`08ForLyN^)3k(T8}-e(tqu$Qw+o(L%4Y#w9^UA6&Rhj{vz_Cji5P)?1>=jftzs=7 z1%b3X`iZk!8VKqxJO)Ev5uFxKh0PM7FPafq~3XuF-WKySPD2NQem<@6uIC)iK#^lL<$U9ZI2W>P=V{x9@k4A@t!t4~z^=gb1ZL z425yc>#Z3p09qBVS+a~vHG#N~AM{#v5sr6`3oR>yTIMV9He)n*`9l6Ch zUQuVk)FhyZ-F`;uNMhmG-(zRqDp#D3f4NMEYqF)hH){-LRKq=OohSANRcZN^`g{E( ztCeN`s$ch8``5BhGmF6fuP7VIi@%!(osH0c*q7yXB=a-Juq~48-S!5VI%G83V@?H& z-O*i2)<*s+6YonX(HbBU%CrPIl)+*$jOfFq9A9_zz6#q&7loH1CK zpPaApqLFSN6u$1Cvy25A0I*|9ZVS`P|u5ZSox-4h|d!vk35=PE1aDbd>sV zXU$t`zAxgq2~URQ<{u;q-gt{){xz0nKJB=dG8ZWh*pc=iSDAQTB)gIdxCy1m#Zz4% zvM9i&_(@gMnzwhusN^m_IzEwz<@3eYusb=n1tewJ)!Zy73w_e}mtU&wxAUcjYo1sl z$RDIv8s8ZWWmU*v8cUkj92kZr$$24NccQ1aSMdf6HX)CHPOQ_pbH$t+UkjO^HtOJ0 zbcecdKBck3pcKq2616W5DM!8tAp9i0J8y*>LD_-RrA}cw1a&}qimO_a%{U}y|2hXx zwC?|nd()E{k44Mu%F&^u-lUk>jX~3Q`ev#?;b84(?;yg4=Yp{L)3@liWiEJklTat3*FYOv|9zTAo7G9BneXDhHCD(W({tA*xm~QA5vjpJR}5*wIL} zir{nSc@i8LDvRli-sa`2Y;6`+IS0=t(x*M3TZT$SkfLMi6+d6b(G1__i2Cpcho|{h zDJWW&i1MfMTeuf`7VK(!qhW*PSw6AL)L6!guBggMGxwJ%;4?M$!$5-X)@RZmN)EHMtS}SxV}!Pk9R)2G*H>JQpL6*nFSgDn zW!cd+;CMXnyFPq7-d{Lsq1S$biT!Bu#)0xpD`@U~C5FJC0YU?A9!l?`3l*jZNAZ>tJkN)pJAf889 z32Ln_LW+=v4%XbG$uV>fUAp$+r*oKM=Bk936M>iI#uKq>ZiD% zP)4YX{wU6&V(Am}CG}^2^*sAD+1w;?_-#B2!vObAIW$?S2+7t-qUVtkg#z)0;eR+Lj?74<1Fk>ed;!zkIa4koE<-Kd8D8ORm zr}UwuVqV;WZ>mEVWK<@h*auiLu|p<)JG1h!`exryRMAm$KUC6XMWI#$8+30vc&dB3 zLt1ZHVw1(t24sVJ0}t<7XXc-cxHz$-WUH*P6ABN^d5>aAH&MoCkk(_vAAKG`DVyF7 zFzPn*!>uQ1$yI}fQoxi`y5~)L%XOq%T4meNQoxK-XgV3^tZiECVhsGvDstdX=h5fW zYOSmm%t)DClEky?xQV9B$D^;DVv(qQI;ykX$*XAE;40Um7KB-^=1}4h@j3{|Q#t zOHkLN-N>|1!uFqc!{(1RgfnnSo06mYThCD{B&qPY5hVd1QS!?4X9KdLm+4~Um7Y5{ zaJk4%Behm%Yt^IO)zAZwM8Bri&U>#AREd5!RBbc~|2n0zN+#l|@U+HbQlRUIFlI{n_NGyZJf!zHcH_tNh&u3e7utoe&k_E{Zd7Ad`@G$cjM z=8ecQ^!E`C#RB->*-5w|u=}lLZi=NmRl62L>o&3jr zJ}W`u6k>mNnwxvFZs-s~^-gbCVK7sw^AF!d_22+-h5*YQ8?OuWlTZ zumS4QLA}tp%oXpMeGt#JgEuIy7&C$|6C)981*b5H%mpDN;BZ^9GNF-Jz!L~xEmsaz#KOEl2m>MR5<@N* z6Jer;oK?(uuye-08OD``ue_REB&?BwJwd)I|CGHMhHdICq{6xPPO;%6xJj<8YSy9^ zSlJ6zvE5c=4`(5l+hDg>V+SFD4kNegMhQz}?g#m|D(;F+S!zMPQ|BHp=GA!6NlFXF~0fF22nV9*GYe;3@cQ! z1pi&_c0r8O&z)w^*;AV|V3g`uE7(O*l;ompr{_R9Mwoo(;%d^cNkKN?E7NJrkCbAd z+Z!-aX8c{`Y7zx(bsK~JOn(=*zs0YBYZY}v%GPZTgxd&a`O!*g=Jx1ti7@VRlCtoa z2PU??0N<*>*Wy@@AA#NBhXh61fCUZfAZ(aEt z*0Lh{{pOv*`DX)=zkvnMR{?ag^*Hka9B1a!`!cLCMi%jhE8H3hioOXa!!uewLHzQv z{;af&kOLi2oT)0t)WtHap38&##P=#r2-K^zpXOeIczUZf{LY8>gR^cSJLSzj(Kg(? zQc|z(eMeJIjrh))l=1s*5vRLqfQj+cdR0Nk=Fr_rMjhx6c`IdF;}eGW&tl?L zbgPSMd~GMwqV_{wN7}NZ1yxX^_W{#|{=& zP8>nhX9?Nb2xhtu|Kd$obJudTB8kukPl0_StyD3M!`zFZ@?ZU`X>!BpPO`>>)cH#O zyQN?kkDHozhl>^oMMcG?lvLJw+yvS17Pa_B0o>BlEC^vPZ|g-ygBami-9J6rqD23k zo$&7dY@q}x^jSTgfaLfKifK=YxDC&pD}n#VB0qt0kDoFavqf=w&p=2pg2wYb-2zy?>sW;{EN58Smh!o{^E zWy}=?zZur4g&p@_ha&{hkf1I$QVR9YM1wx*Y_=!49WO%BG-7r*P7osEc+LRu|u~mc(oP%4seBV&W20kJG8Y zz4T|B&X-&EVX}NuXzM|jo9?~A`qx9C9rM5rS+bLI>S^{gxK*P#G8wfSbmPPnrgtMV zD|K#fzn?{n*V%L;IQdsb%fu-f`d#5|a!Byt+0P|uROZWDotpy)A{fhI&= zx2*-A0wPgI8kAHL4Nt`8y`LB^B@gw!__2IxZ!hwvgx7)zh=Hw{=TYGFb(Mah8S#N| zPu-z(@h8072v#MG^d+&B3=Cv9XEI}v>VEsoXBI}Ao4xm$!%}m*2R*=wf>z7V^^UTU z(lnIprm)8zl8KT|ej`qLuQSX{dn=ZWA$=GhE|#ol9SR$kjk8g`($Q*C zCEwF(1Fi=5%2_qDYB^(={k#Xo5ZMX@k@U7|?z2Q$Ln8LeR~W}FG$kbx%L57Eh0jvW z@DXe+g=T}(F;ISA5Zid`?%?m4Q{4>9X;Y#W>fC!#{7uiD0mlU-zgi{l#C?LfzYtp^ z4up^(JH|_A^N!hsbfw|$nj;3gRmiVweS{EoRGA+K&DAQS#B5X`3R^fm$pq`@0b)M0 zU(XdtrUZ`JGclCDqV#Cj&3BXth)W_?>6g8>)XXVQZ8;Wug;E4Gl?$#$Bc(wsc0oZfGWb4El_f1!H%f8!(){t97NxBNg- zfa^b*aoxgPi-?rQ4^g;1$;7vUh=}jzSLKo`ko>^$DVtu=W_QQ%BKu|%tn2cH7NeH< zlh)R+k$$-wY_jK!b)BKhs=((&sblKok=PB%=mTy_IUUGOtp~qgVaT^Jt|y1vHuD{` z@1PwgFd-xauUer7j)54b7iBU%9_=aXu7@$6zhG5j?!;2LVS8ZYuvu{fqn9%dDsNVadMpfi@nA5AefSC~fr zcDNwG+Q50r=fjMn{(aX>Hoc0x8K##zG|8MEi<=&U=Vmf7)}<}|y#v*w>UF>}CsJHO z^Y^w<4i+Ze7gp8%Jp0Bk;@+6OMn;#-qd_<-C1R*!cYcF=hbb(23=IkY5sC-)N+Bd9 zQ>QmKm4@W#OBP0^yOh)@7Z!v?LGqF1Qq~2-cO;0dZtnXHnAbnep*ii#u`lda9=@n>Xi*(EejPVTUi&6HNneDT;Th6a z-MV)(n3;0SJYe~Vl^rtSMj`ineNkVNk!1$Y;OuK)TeKPeRD3^%>pRWhWHS>D>*zeV z=s1f}|Fiu|^QBei$@x?78skLy3B0IA>+z9Od$1t%b_D@p)tJ$a(T~Ej;I-o(9C;DM zn_y88|5edEuP=D}QVix!aWpj-t$x)h-P4LKUcfs7@N!Rn(QoF8Z=7rNtJGwm(LJ5= zA)a7+QyE_je4nQ{3x-iel3W-cGeF+RX^s^Q?mzE_nsMKzE|?|1(!f0>K^&UhqL1;$UA6yYsnjR_0BBO|1PxS)$Pd?cwhD!LvKdXIWuZn zHH$*0Jz;n0Na|mhlgMw0owQ@YWlWM@u$tB_ikW)Mtneu|)iFBwY_g=*7#|knOrLL~o@Z-mCX&}EwT=w*G zlZ7&D#HIxb<&su*M^O9rpw?V4K3zg*Xg_Q64sU0ZX&d0Xe}%&z&!3ouMT?t#wq#ps z-(B*cggRm7`Hl@HvYGLhoJ>$mUkYV19%>i0Qu)Ue>w$|WX1CB0dlp(2)gn3zhu1lp zsY{Bn14c?Zeqn$ZU_pWImPqwg!}yJJjD(4vR>bL{gRLRkgcnFXPF=uNj-!i@G+;$f zHE2E9%UeWWvJi+UL*P`xl-3`HVEet`(1fkRZ-$oE>J1WmV1R1-xW}d_5p-T1+4rF4 z+8LG(VQKyxl^9`K-Nh|7>ZYnvta>m#Ul<)3dW-9nZOB@a`J;V-TyhXfy*#!B$YoR<3Xh~=2IeM?+oHql-R{5 z?VY&=A1{2kmf<;3=;5?H8q=={tZ)X;{dYq0;DBFN8ia&^g%$rWXm_ern}a-mu$aoG z6i(Fx>|9;4fyF*dPFmJk9}_+{dk?aOtDrw5t$_UcM^Jlie!hOeXVt6Nezrb}PV`;* zA9n%F;9{Y02Hbu(qVe*s)bhxee*@Q28GCFJECk)$u`B!2*!l|Rh~1;5QkqM3WoGcu zhm^x2*^4cWk&MMj;REbYw=^dq$xrDrP?GDX_-27m$#j*C zHjo^$v?`}10jK#n4}>mkLNLewrBV)uQ_6Xa?5y7i)QiW3Qj~f!df`N|htT}Y??!ns z(FMQR87~XX_Ggq;iU_af`gpk@u8ee!N@;80gui5wNc`OAFP=gFOK%4I8*O$xJ+QlO z&NpA-?V?VuN>36dL1iU@cvbxQdX4K+mi8nV6)WL$pzk+@!~`kTjx*L!7|mTpUX~EB$S-HF{k|DVM4dyHQ($vi)e*YT=?Z zRcQRW%6_}n`d^9x7~$N0N!KB(U&{}AAMMLkhzNeg=QD|Mr=7JxS{_-dP|qLE*2w7a z8#OVvP!KUSrUJ)*WS{Vd)9W|if$$kc%=f>ZEtzhmYS#*1!a;&A9!+10Ex+^LN9b!f zSTf;c;*A=hbJt;#ttHUMCX%lie{#Q3u{n#8lLKi-39Ko<&sk+N!ISmp1QZ~Fuuscs zu9Fx2$h;_^18ia_XaUTK#ijj=y{}e_XYQ*Y! zX;=`XI?-gz>ZHS$S#mpmojV_B%#`(23Y!Fh$V`71?kNi*_Y+PU=3*4#?qoTpmMkgp zn_f=O*-J=|=?!Q#U|&`;*2Q9_i`W#A%i&H~eJ*m>^JMK2fHAk3?>QWDY_P_5h$q<`cuj|c#Js}G&$B8>uFVP}=~W@QOfXsA!`3b} z4x2v62@e~34QyF@uJedH3!8KFS?5F?u@)<(EpZ-4OKuM%={XdPOXqRX3FNmx^xLw( ze`XiF!#!+~eO8>Cx6xX-Sn&U>g6RR<+Gmg5GBP(&#BR4DC)=}7o4LYPGij_+mytzV zbOUczfreP6IBFC5#HVqjlK^QjezJNA+<1f*AhreNIyK<*TxSP2pHgh}bYnhAbl*dXBS*MgcdV2wy3QMoJP29;Ox}J7 z6#$c_ugC8IuEYtXn@B z=~NTCXn5S>Nm1jAov3IU=HIBLncuRdojwF~TLa9^=yk&got=pG4Fok1lNvBwayu+o zypvXaY+6A-p@JqPKf*TL8gNb*58ab@;}}A_WuLdArP4Mx;o#B|A0;$~O1h(v-YvO& z`ODBhR4WKhA16vpg6|-srI3zL1guIQ9dOR{u36OCAjqXJD6kYV>{J_bex8PFsAu=W6R&lNFE>`2rQ5VcsnfY2Z|z!_g_F_R@Q_$)U*oM{C=Kx~N#g{n~m z!!BcjJo&NO!Q0Y-Z79XuG!krszo# zi|>Jw6U`Tfw>QA&nS=w*Z^3noij@|l>X31(P?9>e@nqC8LYH=NNi-`P$K4%_QvW)Y z&B@GL=rRt}V*vS1WEio{PFNC%yUg4gqqM4UNo7brrTm+PPRgofJW6#HD0mNQPKPu} zJ%B+sEi`r0ZWZUN)|sD`?V8V0;mNuEw~ZiV03*Cfn30#h(;*WoXzN z$j$2x0*kAhH1ou%zKKx8+9ytN=RY%W6HGzJbBU2eRHCiP)~AEXJFju3;#xQOrUh0D z5kN!*E%8?%Gh%ywNh!8_%g%RrZO?~rnH+Pq!F_nUIv*7U58#w@0^yVcFFVqlYHJJ`5@jT^|l1ff-7T@(XNk-Bbb zI*iiLF>QK;%`a8lNBQo^jAO>67(f1YLuN|ay4T@k8PwS2;`dVW3K(&O@qMT1wJ7WL zBT$avrfqizT46iUA)UYxm_CtDIUhuZKfjRgB7yJfYnvLs%FqYjfl?W`Dgaes=mBe- zAln}imcgxbgHAl0LJmYCJc?WN}e61fi~8 zsN*>dJ?%Pj`S*{6ZY1tPSYDl)WA_WU{;>knl`cB-?3 zZPvxgb8H8@BxM$g``L5eB{W)7_tFYdq;))H)$qiT_r{QWE$mZn=3Gi zsvc~o{gBgczn(`nUuE?9HMcCgylTY#n)pHWSAqp0=df~c`fnabIMbd|NtlfQ`v7Iq z3}^fuUMHY;;2ui1-vV%m8)^|+{!MA^KnQG!vgu=`Qgcks08A3;VWCt{BRMm!@>(am4}FAN9{BGC}*zKF>`tWNvv?uN*-NHc1n((u-31jcyrC+YRO9jG+co+=(0>`~ zk1Lw4@o@3*c!}VUdPX+m15?{;w3GT7H^9JP{t-6-zKfwD>Cz*(L(Nb|2YR<}d|I#) zqbIVO&qj2U7KIbPCfDJQf#*)k$d7VL$@8Tm^z*3=|C)DB*~{y}D_C$@YVU5J#{@ zv^1S0okkD9;C1R`zy-yk-bXUxL>tcTm;X*r+xOF)SoW32{L02Tip+b55a5_xkAbfU z;c%)U{z&bvLapd>%s{`~Ov;{@gRi-s6hAsa9NU?4D*`p69z1gdtA{>{CUyuM>bS5? z9omQk3s|*2Z+oc-=!$^ez}cT{W2{r@PhH{n?Niq=p1ScG&^co#uS02n?Dm}Q_S)<^ zmkaDrGSWO_leeO{EmScc@=B-mDl0jKxNgU=#A%MdJhvIoxk<=xgET#&S^r7Y@cIyf zr?xQ&cPO4!Vo{m0`=#v7X`sJr>(5p@MpW+X!8cjn8BAmIfF=B48X;B0h;B5z0~eYM zK9(|kDiw^pwMf_i>yZQZg&j2)ly_(nk*%he@dH*D7MeU6;!lIYEL>=p?JF9ghS>MX zi<4|knkFeLqS~Dse#S|fYU+VfQ9QTZptw;`Br{(jCyfOBwsR%Bak9xFLypbOmEmDV z%V1iuH~ACKW)Y43aFDKGzQ5G);yjlBZgo$a4mL9i&(De0f{nyy3=%Q-jo zeq!km&@yiu19*WHhgcjWLHM;EDJ3PZ3F>p8&|ci*fn2QPE^{DvL+MV zc@VK{NBoPK7LGnVkh(lgxEg<`5!~m4)W(Mv2=_=XEpI_Ip$rw!xiM|w<;_@T0)mL{ zREDSGicP{|EHm=7;D+Vr_$H*r(1v!|X9l4=7DrR%Ei!+mjK2j?ST}0G#}m*-P_*5C zCcCwF|+^3J-S#M8w1=wg&sBSBth#tb^^(*l~*0p zH4Vtz4IPT{r72wxT49H8cL(kH@OtJhhqQiS)+`%GaCRHo-UpOsX0Nl84>S9AC0u;Z zm(**(x#?;7@%Q25;X3v#T{hX^4RnJbwz+wGd%QVOQyz5{YAKT6gOaVAZBC)cHKvbY zD0$yXbJZ=tdZg0BJWXZo54rU|4AK@vP{3!U4Qg0vlsBxdfQwTK1{g+{!_@c?@lu2R zh)f>v<{S&)8f!7$ph8M~((<-O)a|twkgC1jve64bq{gR$fD!GpC5RLbKD5>G2M^#)Tg%>dXK*hsnz@_>`-c6c~ z9i%#vGY*3FpE^a$;G9G{X2xxuq>jFXOS`p}ofke)ulwOt8`-r=hs4=PWR*r{Om^*; z4HYb>nf&UtE{tg)Hxuv9bmT!Z2j05)4wQ?X*m~BXwj>)jN7qoxYfgAJ+`BG-gO0u6 zDw``ynVZOBm^uS!2N%-@BBk!hKy3!xbUe5w9C+j?@t})BHS}T|UfXyz#-983D!98< z+PJV#U@&GNRx9?2EXJoYsvk-x2_qX4!9TqWU5Ro$-m2=>2IuAbNWz6WL)~OspM`58 z1uS!{0kw`7}&<9BjS;jf9s<33|7E4 zF)icuy}KM@HM@qY(=uB*o?w#BEh3*Z5#`JL6@&eHowFwS--J zOsvVMRfk(&n&HrSDLkfhg+%gnE@S8U)M<=q4Lv1o&)g*?z)&S6$GG|0=Py(+KZFHg zlhTodLj}%US%?TMntIJsAQmxqt+vcDIzlix;&mkt_ZP$#fq_~Oiyh_+uJ4b002I3% z*ZXsr>B&!ji^`Hl%KE%{OG_1Wi~T4m1miC6~m8Rm{l+HKy!3#74dac zDWRG@hz&|?7arJ2VPg{f8Zs83rdEmFYnz3!U$V^iopEb7Fa$X)eH;cCxj8)w`mfH>?z_)*J|tTotpLV4mH}^r^5gRf&Ucb6YgoCNG1)3Z6=Tc9lZa%eDOz?0XmRMk z5_M?@9vGq@vopiELxborfnX$xV%mzi8P0RJWG#8ozu8HbZ>h>2^PGu1#KvGCeI`vM zbieYTquE0Elz3r9=~r}~=kN_IluZUULd5SI2p4lM(|7G~Q$wu8_CuL6dM+c!leFy> zJb4M*B3VT}Z?_WBkiSmMvWo@3NVAZM;n-yjG=!|7Tg0(wB+CUR!fgZ_Z>_x8gE=DWOs1nxO*7P} zOhmbsdxJ4EQ5K%m`kWsRW~J2g_WiP3qTn-8*Bclzm^eufmJSN`6XVxelhq>DNW3%Z zAq=rD74yZYNKnxPWvi`>%q~$>rPN|lA=o@%#I{@kr&=%sWts9aewcHIP(yjtJ9MI+ zp~ME5qsVkL)CoTmgge9b3NAQImrc7l+DNeX+dV8(&#HwJC94H2^JKoJ+4u}pvIVaW z8aukvn)i@)`;S$^bL-*B>u5|DS4Fjx7l7Ju$AEUhjOb+`yYtqiI+y+2FY-$24`C@1 zX5%Xmvf0GFYvGKiR?NrL`hmm$$%5XYu*`a=mFE+<(^a=WJzp=8(r`PFozSbj6K7C1 zJRTvFuqaV5s`>~<*(<9%>waa~-Z%DJYT*7%`F-3rgOMQU;g18p(n?`t-2@d)Qrd=m{g3RT za3$5k<)5vr><~K5j5^m6T>@&5>lsgrTAoL=STi4kd}~a)fzyc7X-~*uVVkZg2(Y3} ztGK(|6^w-Kn&}OqmFRe55BQ^La+xf2bgU_fXdVL=&918vT%>WaSPJOq(kSn*M zIGu$uQU~YVVUf53PfNX+oT2i@eMx;*1d36=q?n&}JHim#A6(?5NmhflU{y;b6&%tZ z7l|XRE(>2Nag$UM8NA#3*)!#aKX51UK2=|C|5+p*|MN+`tpC>I2EoV3PfmAUPeL`U zihx8|e$&q`L9Q-gTPO+MV0LBUEbXVIqNIRuDaej`;w7c_;dq+#eh~XjB-(bh!h-q~{L_qEEZMqMSyhRbS)#L} zw5?Wo#Hz~nMYFsHh;*`%I{o~lZQ`0?v(c)}*2?w|-TtqI)w-$&EgIe6OF9O6UYOZ& zZPcR{sEgLCe%7D)WJFfOZomB)!kcd3p4q03U8;6IdpJZ2`hF^tDm+RFsm50KkDWa% zq#cps`L@ee0iz7%e+4ARx2A_18X!Ev-OLQLoM`_Ojl>GZW~j3p0P>2PLyKbfAJbwBv>$20WRn~udr>DO5`p^5v-_!Ar3^+R7t8H ztYj?R_n)psfUTAMVK|bc;0w@oyyaCEqO5b@i|T&Ld?BS&$;Xr`c@9pdlxQJlNhmNi zA_tJ`L`Gza_$xhjHC7&=Tlreg$Y`qfuY))II3cvZ!VcJe94l~a zXdt<1E83JcLO|!7Ea$5cI1gnbKb$U6&$G-g!)pVV-{)i*Esy3eUwl!M<wxR`Dw^}ksZXd2A`y;TwMJH)YjPW^%;-vbv46bqE9gDnO&`=&W8SG8e zy481Zl&9UV`RZteLJbtFI@FzWO^?OmyWe|5`Ja!=P8;$j-tLV1Bu3hQH)B=O|FxEqjv)P|S% zCq5}eS(h%bH|Do~dqlVV`1}iJL{Ub(4gZU=(D9TdTQ{?6!@|w*sLY^V%sf26kMMQ4 zy)dFyS>IFpI)Ahrh8yY^+=@ZP%cRlE#k$I`fH8BKzv5;vD|cox7(Bu1i7S5V@SC4W zOsEH%2aMs$vub=#DN`U=>8?RE+nRNk+Dqus?WTq!RIAWY34Ny5ra!S~>*RQ{r{*<1 z^ZE*Lmh!MvZ+c7`Ug+4(jarxfY#qg@?sL-{!=W4|UUb%ioF(>GvbXH?qeZcwdCcvP zH=<3JVtdYKm**+ zX=!=R34APu6R5=D_nn~>=dai8J4-#v2$aLVvL9K>efC8}{Be>hf4ZAGh^4hP1UVnl zB$pM`DAxGLjR-Bs4x!6WqsvHJxJ2NolrzCkDtW2}cPFIFp|*fTs->*NI+LVm(q!`6 z*f|nqq2+X0X@N8NLvr=#$KsfI*Xqe?z?&Lzls2;x>`8IxZ|7I_-r*3E`!q!2K&ZU8 zi{ZI998~kvgcMokOAC`Ga5VA8{p;$p;Il)#mEyM2B~*WS@U7CTIC(4JPGRooEbt0) zd&}fj6HOWj&a;rPl9W&lKFOlVg-vcGgwO{oN^9DujXMVw(j|jG;^{y0E~)&K%6>5& zPAj#nj~@}fTxM`-2_KVILwzIWl4Cpd5Sb$x`|UNOKZ!I~Y$Z?<-CikIDUa5mS)VoC z+81C4CvL5*G?zaNW{9$ij&maW8)T~-t!ck6=nqeY^h%f*O{}(Y9o`)RD3TkHVp(1X$;VZV=l}uT;RSN{VC8T9$Szbgy zSn9BvHOw}x=JdnXtJT61(LGkcesJU7#5pv2BHhFex#wFJk#67=2oJ6iZV+e@MW8Xf zPtF7gwGblLNb-cWz~g5K4SJY3v+^%-i6wnxxSEd84IqotqVt=!ujN|VFoMM4V2X)6 zSwHlfl*%QuLglk@P=cP~#1AdjB&*cbE)c2TK**)S#Arue+c~TJA2Moc?{oR9B~*X% zqP|cI^B|_m)L@!UqcSD|!m-bV^!=$WC4Z8dQS<&F=$0vfJX%Bqj9&A1dN&Y=BK0(K zgPWih{QzhEDV2;|Dyyg>(#`aFy^=`8E#$sWgANDjix`pkcz8xhQ=pNoq!GAxsT|Nm zdDJY^slnBg_C7cHUvaO{0C6wN|A`x$Fi9=JD#HwYDQ-ExT@jJN^roDVfz47zH?~-; z%n26DcO_Ynk9hgg4?HOO&`xLs4QuBM zB5OK~O9x|ax8;=1+XICP= zrjT|zi%Oo>b$K(K7su98d|u-`ss|mK0{1t>H=Ml1Il8Q&c8VSXDlNCngVII`7RCQ< zmCK-`JCwZ4woq-XpWQHW*;*W!W!{`e=uNw93g_0St}E%XTWrHmu7rY3~G6f^}d$PiE&80(J`!hqG_SS;vjEIRpH@EiY_zPb<0jT#8?0&4(BspxIL zvg)cbCrFl&=Cm0DD6Cev*$b?n1qLefij*K)_pi-Me;K|xI)e7kE*=jL-)$M zv%WkTI$+dC4wK23TPFBllV3SRDpQ|oX?+}zeYK?5js`=Wv0W;`zeB(|b74R^?z>U* z^~icq(GR>RIikitkqIuxu4_l^0x6G$^)wjYrN2K~Xnp6erjT?n8NB?&OXeC!__5$D zr?|UaifNGdIq)V^Zli5lJbgUM`+6{r%^tRGazAB#rrR+}%>IWW_w`ri@@7i7u1}b4 zSw|2mhK)t*nMdKeSI#Z|a1{ENr@T-1`_yAc1){I}w@{!QF3%gn*BsF2uI5NBcc6I2 z6W(8`&|jl9-KW~agv;+4=%#cpS82%&?SoApV4T;vb(I}k(FQMg@G(5O099@XfGYQj zL9Y|u-T5v3TPl4f$=glq0kzHKP_*dR@yM?R7BAh*Eugc)@5+X!<4}3-&af(EmYHlm zfJV9bi?emyX>4nTcuyS0EG$;wb&MvhD2h~bd2?fUQ}d?KHc*W7NeGFYKI0ybuxkl> zgxEG7w5YOSNYZz9ME^{is>l0)x6j8E(b&uxl(%s1}?I4nP?9_ zzJu{wE%2vTCv>UM?2=v2LCo50X>f6ob^0gx>X!krFwpHSY%hSEcU5&oI~lr_n?O zgacQ$A&+j1yj2vCpPDmiEs>f zOI}?nocsiPN*OF7EaFtx4>x*n(wgFcz*ExVTK@{Xfd_%IOT%L7~o z>W+O7X@q~8$dU-=xqs{F$kQ;Z?#H#ehIcO>E*W}|RaTqpLDSnbpn~DOwLgzZd&vu8 zsmLxRDMP9nEsiZm1im0Miqb!XnUK42=xH+|k^feqo_|Sj`T>w{o}*%agXmAJ3eu*q zkJ#)MZ2x1SM8@qCxY|$*J-PjjW2|bC@$nF{E#S4t;(prI@BdP2e>cAo`R{}zTPcKu z*bTEwBW_>NFZBwVF60=#9OAO{FLjWmkp>-B=`7N80VYT3jYXv}>1oa|eyg0`pZ3RuFAeVb$eMhR zb!JluC6j*KaY-!F<;2dXgpZxUF3k2!9AWs46HXzJAyf6w#DIBHI#v&6u_P z>nqpc!s~)Bt`#1E1R0I<#+7X6&IhD37Ac$_L%8-cX6TNG%zkOG!^q z#%t|OuZFF}*8K&;(35J{k$GL=CGnn!4-`2~nc+URtxuZ6A&4R3MyDWR#xpo(Vxvc{ zhplvwk;o6?np@=aMGwuv5(Z?__}j?B7sDs2NiF_PZ9T z*J@vunK)55&%+jcau;{(-cUq8&`(XINkvP;;4S>ySMP@F)Xn(N$9ckt)3gsKLWy9fCtK?$P2A3@A~YpZ zS-j82vvG`uY_E%Jn) zYF42!XC(FRuOQ9ybU9E;uxKvQ^;@VAoI1tt-Duty&bNs#`t1lV6n3>Pq!LYU`+YC5 zDAve)NAtyt-b+Yjkh8IsH5$>m@5_jKqI|5eX!2vh_BECGvdAGbBCX6VxfrYw@mPb# z+x8o)?`qm11%`U~A3E92VS0E<)YMj42bcjO|63zF zfX3X__HpTZW^2QS-A3Db;FVY0ztnX;y`wbNExsQxN`9WUu0gV~V)(f!~+Wfz@MfaPMorLUz1s1XAnkDFa z8fV5rt7_@wx9C<+^~2lB6CH5O#J(otMa-9T>oU}h+c#0{^_q^@pCrp;lxirU&7K7; zZy(e{5{d6WJ(AJ6n4<gI-v{UR;OjCT~}!2{pBA@rbR?cIZc*^vNuY%mLQ#fV`($|=XA>QO)y=cy*WT2 zD)`u*VhruT?|8^90l`(624@UoAX|mxj+(4=eBY0{t>bHVqh+KR<0Q8F5~K{DdesT8 zj4)x|J(X#SWe7Xkhq~_PIl;PyL(75WFbwyAv_yTy@UK2ot*&LyLn)eyx$i^YZz3eF zN}U!`8SV)g-woK{Q4~?pE;Itlx0x3ZIgXSAe%S{HXz;yQ#8Zd9aE0E-?|b>h^9Qbe z;RVvKTKVFtX-sboQ1@HzU#!)k*rr&VNQC={O-_?(Omwq;+2qF^F>w{lUu~|o^x8z} zXg%jRxmKC{&C)%O$j(@1Guq*S$3i_HA2q*xzS!F@8{4_7ydh4>`l)SB;)4K`qBaBZ zBbF_Bwpv}Al(hZ@O!A&yYUMcKeVGQL*Ech$`f{-x%rV-lrvD`7?@b}s|{srjw zF&kg-3qRR9B>AlPG+4XVbuTnb)}MdDMKtSA1@B@*t@ReWJ|wt{f<7cI3T|y+N?RT7 zs-Qm}>VHCoX&b1^?7Tk+w|P2{KOPGKk3MAb0idd}KBTVpbuR+U#UE#LpxQvdxa4mT zmswU|5bmF~fi@sq0D$-hRy=|J?SZAL4O})|hq(BIc2xod@F@teQFQA?&_Wi_hur+3 z^540DyUg|z{&yBmc%!`t?VP0mKnDb-1^KZms0q)$m?4)~{3%`F%3I3*#nZ|Jd**jXiq-fz*G7J}qM>S}GFE%9Uz!)JlU2u4S zE^7=;8>+MTgx=FjceY_osp9U&kx=U>QF<38*7JHe_?n&cwqHee82xs>j0rShjZXW7 zf#pA&-*!vP&m+Vr;huD0=$786RFCvCnW`PlSZ2UDPwBNY!B83%p(48NK+^^xyK_%- zjkyL+RkC~aq+;yBaKrdgXGJ5|J@6aUS$yJzecyt*07hF~AU(ax(8047T~R8K;C@y$ z#Seexk6NArLG`h$rG2@$PZq5lK@gSFy-`|KvY8nOs|y-R+emd3j5Cru6$D(WeAF&7 zpG9uKM{blM<2^6t_3>6t)c3;vMAVJ%(^Grb=gjOD#0H*E4#&5d;AaEm?h5uC#WYL$ zz3NBdU5|^ai_1xD=@;UY2k(yW=5Wc6?}|U(J6_%gSv6zr5IO2Q?%@AG6ZM|E?32_? z|C8Ic-v(N%uKz}pj9u@g)=?eMjtjVr`hP-IM!}C(U1>;|zttunU^XjWH+~zc384QN zIa_yuwou!3Eaw6DUINC+%Ai|ySHPhDR`*`EL!STu>mSg)2L88)wiFN|(*nn?L#;Iz z3HuXyr~y?t>o$dc`5$3G$6X zz7i7r&ljo(iM%lPu}!92^KU<68v5PUN|AmCVdshcKR36#D^L{1ME^&m|HuKb7l;j6 zOjFTzh-2JG-zb9;uH+(A;pv~>XvV~mkX@+T*x1Q0->-0wY(4QXRN9b`9IhA(g654} z8SU&QvEfR8Tr1hI`*M5UMTQA;q)XMnzYD*eD_P%sI|V@3d87@93gRoM2ZgS;^gI}2 z2RgcmxRN9HgX!dY9z~psui`d4tdT0G)^l&<`KQ$PcG_m?`M=LobHAf)xT~(@EOP}t z!fzsQ?m8M(j1Fn}>Z3Z-i%q=p1N2yw6p-H;S&}$mKPMg?7ER}x-e>p%<&O{%k-e+W zrqe||XR{498&QpnQA)h`M4y{C2tMgdTjZnTCkmKb#=6SNNS4~j+qpZMZ#Exkmv#CF zGU+!97EUj&uZW+X^?hT%FCRL$9~xHHI8XAfY-&1sdOT+fwz;{xuCBJsN*myTTiIB} zV1^u=*BuXD&6{sIituX~e}23R@QLT<`f#*;eC@H`y-g#%2b$Mp%_5uz`|%qNg7{oJ zs)TY0hd&{`NemAXzlGs8b!F*M9>I0;*>F2XuPO`So`D^ayD!<9x7fy7aoeFkR2+wC z@zm+oM%-9SG-hDgGazExG6U+Q?H{Q}_vXdYEIGwlN9(cjDZ=r$4`#HOmT$d@P%CIm zoM7%9CZO)tnzW%rnpfK#wnJJnn!;GT0^R#JKsSpiOA?*&d&?5I`z+x=lqnyN8{>N< zZ{c_!HGeu(vT;d(Uzfbl8w5q^na9Av({{6E77vMaxC>+cv9Ao{7%g=Y=sf-s|LH$l z?<<_Wd?i>BSjyZGTt@&~l;g^sO&_=C$(`Q`RRUW4XX1d3CDX}|$%zcY+e(Ak7)vH1 z2LT)E-k#<~*4gj`=|sHTraeY~AKv)4n@Dkp*!5#MQUu;#xGIsXO$I1$ zNol4Nk}^$dC*o|2Ag%Dlp$wkP!82v?O4Yv+r$bN1>r9W51$eZsMG4#@6h^ix$2hK- z>3ar>U>oL*0hbnzGGRhE)8IEl)3+F1%x^Q9-!J_N@EOSC{yxtky4o_jQDe`H4b#L_ z5TueCw$5BB7T8M8PErk(Nh!zZr8PGl&OaN7tmByK|E|sIIazjkv6e-WKS&$gKpBKp z;Tmw&p{4TfoM?3|DkE**Voyj!EI3a+I11=zIs(T@Ob?tZEB! zS~2BR2Nvh`yH+)Ohvu+gZ>LkBlZklWSPy#WKgEHUINUD$&`c@Llx9p^DXan0`C%Cm zzvnF41xHH2Wt;#z8Fo#u=N2_^)~nHx3~0pLh{=i#<_^UHb-7%tM7Zr}Tt&>bDFQ2i z{=}+FjFJA84aiKGgU>A-Vx-e8#XdVvzm<&6iz-xwpT(Jpc@^p7V<$&Z%^kccHYvmY zVo$xEHnJNkEZ_aKzuEPM%Slt=?6h@W3g1UrD2I4K&}NUYFBxGNPCP%pl-G!{gL?E` z8ee!%Tek`ksYKz)Kqjb)Q%e2G116&`K`{d#qW1GI*{ywD57A`L)Wd&8cpE{L(5s&86OAT0qdD z#1G$9ToEBadBN?uI6b_nMHv)mMGz}C*t{mJGch|oMmy*AcLJmQtQ=nlK*^Ml}pfsB3z<+~X$2a5a zS?PbeL0wO3XV?GbH!;MYiwH5N2BuZ!sqB%`Q_0s5rP)#t;uyQXUlV}#-1M3)NgKbG zo%a4p>^N*{v!tn`5n>btM{9?^d#%M8`9t;H&2EgGsjqSUT{Za;s@AD;%9l7LOje>C zSHInz0QdYJMR;MAoWQ#u=oiCBU84tk{tB-Pp3(5IpR^&jl`Jj`DP`B)a3e-PFC)!U z47neA^&siWIT$aJt*!tJwPuEwG+rHAA9b4^A~Uo8XKbEkP7{Sr8LmzF^UEdV z0-(+^0?CIS=aI_=rSB3w5tu$~M`d{7&j^WB^jXn)>dKG;4E{h>~z{o zO^t4)M{RXq2VvA}S$(H*ltMK`2eyIT0+nxdS%IdmDP+FpUteE{2V{%jTin7(+YAhT zf=Z7+QpKCJqRhjAHf){ARx!Et-($eShv}DKIkuO?lj(>N7Rp1%NATxB0)oo(UUv}& zQsF+-0Sk1c)13I^mq(JVO027+f0SbD4*p_>f04gvvR1|#6U$t_#*PyyV%SS{g5u4Y zgvMz>#$6oRUg+BC>SsrcP#R*AtegS8fHVwcpsYpzC{~5H(?3~#Yv7KWDNCKNfIOqO zz{}4q_aYqFoqjxsOcpkEOt~5Qr*0Ptbtoo}0_LPeY@2WB)C*nbjnLE|J#2Ond58)6 zC6Ft$IxE3PA*H38{L$YaXWYZUKO9Bk8_R)xV$IgUxl^(KXp<)0IEi-x)>!TO3HbU1 z{hUHnyG{v$enVM7+joP0n?1xO+NF&5;Hw1V4p>dsk~omM<(iWe>*62ra11XQkF;i> zcU#^W=}hEJ|9Zzl+8_?*+v9c`V#04K(H;KKzthcNt1k(upfs202Q^&Boy%AZmqR^} z3I9#xfiZY(=xGHy6O%St+Wr3%2gm;s2gVfBJhzcWzW~Gm-m!_oC}u|n$>QCX1|5T) ztZ4>YKb@x-W@VjPlHvPe5KVc$hb?ZZBZO@*5_erw{_;P(L1|E1t{{n#X*o8n`?<4C z-i=f#Dl&|4Hpd) zU4iNOxaLoQ5q;BbKGQ&IKcMpSENKX?ZbusGAy8OC={_vud90b0_TN&&uuta4HAz)< zPp0D<-dF8~V2Rs|Ty*Q*o*c}GTEvpe5wU9jmBgcBoa}udh+P{5B7I`?iF)we7`7KP z%1UcS>gW@Z>-04fXao2QKmNVOy}AMXHB;pUbL$JU4mmv|KK+_rX}R+XmLvZ!bP(sv z7}q?|Sj9fWxAOXLptSN%fICi0Qdu7;}QSgo{a#Qzd23m z&A=^Y!S9s+_>2SCpyJzkrhxruC;UPapj9HYQPkAsI0+=ycD`l-LN(D)B*AKa;!Z1y>;hbD{$ zgh&Rm*a3GoX=f;Y8;fJ2H`JJ{rQp8{r0Coi;jfxpf1V$vm{HWF3Tonwm1sVj=Lm2( zDfP_FZd;8KF(u5))QFkKT6b|Of-XqoEfaU|qZlBgVGI8B4JZmLoroF|`EQtLihM7{ zOP;Vhpl20sY!uFY^UtSzsjI6UiS7jt$)>C;Ay3I|s!q8-(7?`+y>u^TZIkIr{g^u+Xe-YE)C(Kl4Et-@6^v9H>;Rez}Fs=!FE;z|BDF-oe|pQ4k2aFit7E&!njo_=<|_%Gcc~4dKIY!Wr{9NX8i`C+N4b(3yG^PttEti&`UD>ItX1s}w91Y7H+~)2 z=20kzJCbhoR7t`%#u=ivw|0`-u4E4l)vvr8IrE~P$v13ewpXoPL|>@OvV^&3gPxbQ zs8G+BYgaYIBFf*XJU2n?oQMaq(;;}{D4y{RIg##m^rlSM`s4b~H+tPFJYcqFz@5c- z6XgE#wKD}F6DGpOja{egr| z+%F`u%G4(afH5#4Vj7X4;IP{N?$-!|(sni$1|XLL0LTTxpfVBhMS_wK{QjBaV%;Sy z^3R-52!VgwgbYIBiwvNDy=;Oxg+X;-odBkFY=Qn8#aa;H8gRh_V!=Es3y7@F3j$*2 z-w+a8Ndk;6LjDN-;|3PVfQZ=2Ant!9=S(OpvO4vTtz}r8opXBxd_QsI_o+##4u*!d_VP~=Se+YN8~1hJHX8g0O?a`1g2f|tTI5Yb@~~di zDZf*;m;ciE4EdcC!2WpOVzVX4M?rOo>76Cm)%=;sd! zf!K+q4VDO!=#kMdS?DBY_Pajxvu%Tj!h%+@Y$<44Yu9>S!IY?wo6!r(>T^X0&(R zTnltgYetIGlKF#ny%K->%axczg>mr@t&QUvT>5vZ$!qIf)8GgXR-lD!a5i6jWm~1Xtl#;;2SL%FLlQJ@<&=q@5;;u4+}PrM zxG|ha{ZNfmWg6YTqkg{NcY4xW1eGh3)AWu@ASrq(cgKUxk!kL(`_#uHG?x@62Uz&O zZB$OSJjWFE>`VHpn`#?)i~p96($k*Kzj8v^2H#BAn%e4lJbEsq^7al2JAYfsP#0Oc zr1OeAwF&?>$ol~2!h69Cf2Xx&6x1IhuJl!xpUs2`<6iU4y&3yE_C6 z1a}Ee(BSUw?he7--6goY>?UijwdQAgpHp>e*D0z7MRz~)174mn?t5HK8l){R6-mu= zpgzxWiX{Z$vyYE}lOtsVgkj$u1RSs|Up{+;Ah`Dv{P-M@LJ);XJGfcCF>okAfI`Uf z-S&l;;3sDPb5C9K^v{6lOprg{V{%A?;HrQR_qWk3AUIjRmf##h5DR6u-fycIY043B zh*{-X0c&+VqX5x95(wm6L2wF4z@RFEf`6~CfKL3^=8SOqfw6YL*nW*Od=4>0Zv-5_ znRQVJD0o|DUtcZhQ~Wu`^8IFfs*gGu*~n=Qhzx$Oq!Q@hU||(`3;k)BWqBC{{6Y?D z2?(zKFTyN1Jcz~TBnIDvzl@N!_9NN)!$;wYEJ@%;ZRqfok#7qV?i@Ld*mys<@Fh>f`;KqHgR z=2c-n@r~ZOP%Z3uEha*~K%-K3yFj=jTNB9;8C@L5NIs648+;wrBxT)ZSQ5->AfhOZ z9yYm5q;7q+Ryo5e9l-pc&8j=+u?zb+?v?o(H|0h2J2c>Fr+R&ml#?ahe&=wEIzaeE zr^9*D7U+>UsbgfRMOmvDEZ_aTpPe!*Yn-)Vw#i&nFUJ57a!3`Ttwu+BRnZ!aZ$y54 zgR`a3My1=ncLXoHKEjgv$5(Ttne|9cXG&*EFKPJ2XNFQj;HZ>X+~c(-@mY}^tZ(Sb zZNNc8OL$Uqz(|v?zBi`XU&kETD#dQYsrV;n-6N@WD0#Po)SS4{jtqq{W?i?L+NnBu z>n*rj6Sk!rq)?K2#;|H7^@rp-tssI&1&SZZYgM~K7-_7SWbe6O+*1w z7*=W{EHCer`X#1wlf#?BNN6{>I&GHtOELNGFe~jP#Vr{ylk_4rCemK5cfETGBW*K% zjA=GzFpWL=dQ#?V51(Fwhc6vIuvof2kzsrZwHf%RfJVqDYB<;p6UPZ%4e8cbco1EmKcFMY zfnj*SR!5ye)ka128NYG2rx&~+%0hkGpH_n;+TDcCtXZ(H>j`@$K(mCYcAnHhE7*fH zcczHY>g0#S9<<^wg2CYM%b>fQB@^QU$+=yPtvz`JT( z$&*?xv*ntKQG*u3o<*3~iYM_M?m6L0Pl*_yWYQjUM@*@pia(b3WeKleC)8l&_SUBUg*xO6I7lD*{#*6YyH2a)KJcoi5oi8lt9FOcgh{rm zdG4^&u)@te8GL*qbxl927i2hOC*luJ;Dd)# z|00tj@uYL}<@k7D^VQ}2g7Ey+)eVA^Gd;5vwm#J>&H1VQ`-79i9O>Y7zgwvd_iSjh z1uVRW>-jwQ6g!ONBkkN+mGL@oR|9-hlnA9YgTT?E1_;wG=alW23+ zU4*(jpwT+4vIf0Ep5qa`7$&ac17TYKpU?btov6pFgd-fI$BP<=90gnzs6Q?x36NVPH)3)URnVkMc;>llPAztlq1f6H{GSq6hh=bA7Ynf0@J6cCfcA zEw~BN=|aAF!mACA_d0gGbzAuw`daHYz5wwuX9W~2+DR?&`gQTx?++zvK`*K3 z+uy&1#ZL_FW%hDoU3tKf^5)YQU7s63)a85B*bN5B@c6K(`u9+p)Q0dy7dTSZlmkb~ z#Wzv+1`u`M2EB>8$5i8OfT+v&2;2vblwWj#BV|oF-yc^)k6pZpy2o##?(v(bdjp8N86JSBTT}jo zqN>Q&J7bjJ5J!>mGJKIaCCpPO9~b-5E48W)mMT7?luPtbc}h3H676U{uUtBFy*DoHgt zuiaT`1}kwX@x#^5aMi~$&KfnOB_Eq;%V_Kujw@#7OSqaNQFGD^WmGM`7O#)6<| zW_2m-us#DWKDREG%-+9=f@{E+;btJTlDRWx8!se%qqLcD z5UYL^cDVbZ9~XRujB9_^OjjlB@zeY*Xsxwd2u&9CYL-u;Zz8V%Q~Asy#dYHtn^it8 z`nDlMKgS4F2W}^>1snXkYOv}O!1xEj!6Y4H*%~g#B{%T>w4nO5U<&)t2h+Lg@Li|M z2|JhzcI~HYM*{q$wJqNK#Iz6MJf*GilH>?`mHC@U?7#mlUF)5q{eH*~H(U%nz9E}Z zF)fW^u)v4VMBZ#M*MesrX4DYMR%p$iIZ(5>dUf^zKY-EXdcv`F@K@VkS(1zp=V>{_ z%0hFitZ=g$`@S|8ohX@& znj8muwZlMrfeR*l1x^5e;kdFW%EI(3(&J(U3a_RA5pJrCsh1O4Wjn;9+mm(v-m{4~ zMC%I9^vbcr?X45MD+KrS!tWy-Z1(_;B?NB^#pXOYYSsKyxwHrqtO&(}b4=f^cKB_( ztNY)9(L<+nIz;7IxRty?j%QHEOFDiLM2<+kr~Tmva_yLNJOX$F32H)k6BJSLy+fne zA$w$&sA>IaNSkt^0+Ma!6%4i9RmUA0UN!BwvJIEWh_n_9b8*<||D4858cfHdqmMef7?gDT#0eMQ5bv5JQ`N zq+lcZr^okOb(q0hv>>Acr7|CS;Jyaz63B$1`?ckeU|dB_mwe)gl2H^W?b#A9t`;xh zap=+L9f{Yml+B}2O#i$%VXI2nC}>Z5E8@`hEimey09CjmOoVDajit|zykYf*{n zT+=@kVK})$|K)7^-0}=Hgb0`UQm*0RiWiON{tOn8M~vi?ny-}m`VJdw8p58d51H^U zjhRW315GQ*YO>}baR+Mz-Qf6#&fZ5&O6Yf(Y6VUp{sXm)%1{Towa48jszaBLCu!|j z@B#&RcuxK5dk3?YSB9zw`I&P~oX{~{ZOC*2X00e){B;qcLEl|sss7{;p@DbNKN{yQjbyC&)m!}GRh=YlIbySV{#y5!T zht--d=@}-ZL3A4uwQ}W3f?FQ?e4M4Z9G#1<6s-ZCm#YLE(FXfm-F~i(qX;U=(uk}2 zsiQ{ki$5t)GWmVr;eg7gYVA; zbInKWTePJi^KPf=dyn+!T1zXd-rW9pE)tEH4WsJWcyy0X50RgEjQrtsm5gOEG*_?3 zb;obmF7I1W>jLw~^QK!t9^Y%xzTCUh2h|adOROYMRzDeECmIho;V`GTVdHsyDrqPm zIh8UG9zN+=9z#oHVzDb8-Rxq-HZ=O;Qw`}gH>mDcu-NA-$r1&XH?vw^R3hq~YiI?W z6@)AW6n5TCjXbWarKh7O{i*~1jSPPGeIp`wrWvvIr1B7*i3PmEqu~Fdu1u5m{|8+e z@&BMJ2j2d_)|H8{|BJ4?NB)0LSH}Jix^nP;)|F`l{;exxLw}0{`>(n(Bh_EJ^7{y@ zu=RYjV^ZGsTI|M{&<9mW;Iro48s&Y!f&wr`P%YDvXtmO;3h78GeZT8qTq*9WR{= z`@0>ThJyNwzk$>IWFfe&t1YjP*S%yHyJ((v-g4ZrxId~M@V=8^1v{p#k)IJ@O9d*% zpJ{B1e>ShjF2nQQ9q+VK1kDvFGL4~BpK~Ac>P3Hn#UC%#0R zuv;Nj;y8NGu3<>UdP;m|>;&F2BcGB$inkJ#MTur${+ByU~}yCIZB z6r4!`C06fyC&Nz>8N^T4RdcUJ@M(`Pjf84Ewf5Uje<7c+KMZehFxA1`G(SsQ(VGzA|Q zUGSUSU)wZ7>(V%ut{y#KwrQk0-u-$vC&FgZtNHALS;YC>+Q?NxutW%=^@vY3JpH`L zGu_-QFL!nD*Xk$f1cRk$Hu>2&7ZJr~j0q4t3zh|iWLM=H@kQ(T$ic{+Lv{=3ZMF0t zj1;oO!8yL)Y*4>xNy`2rtL-G2cx``;uM9|2icEBWUMlBpfV&?1{ctB3NuzFZXm(U5 zr+bwbdC$Ghq7mJWW?~Vh^`q&az~1!{*>pFO^Hqsf1sAXYquqrpW|zUOO?}8x!hgAj zpLJvY)-lM_LI;aNXY66LUxne0nN#i(ZjjN2YN7i+Hnse78BSAyY#Ke@j(D)hS3}AHyP=sRR|4ky8AaP4Py0powyHUzPdc+C^NLW7fgSlm!;vc|tMD=k zgP&?RM;Ebh+XoHBEip%OE>r4v&pu=kAy2|Wz(P$#4XRAx@-9=FtbG?m(@k%AE1QSV z$*6EgCT?K;{H-787v{P{sPphScm923@1ih~V3aHy)4+`uPW0|T3imr*iVX*fwuK;< zBFa7RIPQ`D(JSq6*%2S|`Y{Sg4fl_1Hi1X=pUFjqZHN3z&w8%e*cg*1uU`?2s7Q~3 z&(oGUR~6M>wBll{vR1We?>)*?7*`|@)EYTnJ#?f|-QcwKo}PUfo<2(`Z+!fqjfq!T zhF)Df!7`1qY#}J}d~&yy4mSZ|I+!rV6lzIj96eH!(-q{CA|Lr0M$4Px$@jVv7pt9l z78|*CV7TSOKWhHze#K@nT5(rf7Mp5s3M)L3tr3R3l9T>D0!QmmqeiIDXq#sT2d@?W z;rvha%Yq3fYSmrTxo=v95s)gF(vBatQ)G5Ms^j*~l_j1RqteV-$vFprt&d_aD&rEkqY$_eACZ^zN}$}+4? z=A^75ZbUS9kl{K@>p@&wE{8yZd~D4aT>YZlvf3%zdQGS5SfC_M@kq~l%#1X-e=j0+ zoi_LWr!upNx!qSqTT?*;4|K23Cr9-U-u}) z7M@10_~&+mVkWXji4ltvGJax3m#&tRoH7Z0uoM%)sI$JSbol5%nkk3t74;Gl=>Oaw zD0EJWcG#^IFodCG8;=_()%l=00gMH!bKTRDx`W`zGQr*}6FEmEL}56}0g%;ghH} z`OOi{nzwqssox=PPU*owolq$vCK%AT5?XqE8-<_3EO|kJ;2y1k5@d%P3fmp*S9bEc zmtHXU+W{;uFsGsK%?w>x(FeP&XVGO4ru&vqUZC#|pKEZKY&-*idgt zoh$kXI-YZ^LZ&|XT#i0hnsokJyFTszv-#PzGferP=4bn&=irY`Btn>QZ@nuMeIBiV zfjIIi8Oj|V??pUA=&Vbj{yA-Ue$0}`e(Bg7W$3F{)zZT0#BY1Jn;V4J=F{inE63LM z7YGL@x0UDT72j2U_=z77ZmmE^!){XRT?0$4&L30r%s)-d?Km525Em2$UW`ns_t*V4 z4iU>V*SJc!kIl_M4?QmS(ebYB; z0*G5Sukd+J+BI#?B0*7E{zoyG%@gfw+bYCvEJ!xRFm93_GaJt|RoK9A*yAWG2%?YA z2Vp8SY4fyd!fd5KRG5h1aQgB>b%Vp@%b31;&OnNIv@MN7)5~fv=HqD_jA$|`TYF@E zA}=wv&)WD;u4l3bJ&7-Wb3JqPKP+-zfa`i86NzXgPD3I&NaqiS77h*#nP*hT>)DQY zK`G|%`|tLTk8fI3{}z4!sUZt>3XV6O?NM&wt4KPlWWp28Bg3@WF>Vb<5C@HB0!qk} z##nReD4N)LE2g}T-=&b^xUMZ$k~D`M!(XmvA+%w?a|4D(AfH4|S!bOQOp%m)%O{VT z{&PNAO)alHN#ej%1M_Wh2>*(NW*{RX$E0*T*#0A?Imswh`6y}S!!)ABr+O{dO76ru zDUZo7qC=IR-e*MUokR#DT4qmttjix^Aoys-hSq_`*{6Foy3cEEa0D&L{6&Hs z;$a0#$BMy$;bygOnBzwQdL*&_w}AK3g7(5r|8P8iEb#ifVhjmC6bWLMuig%@i@-jLfriJi>gB=poE^+Efz(F^9gz&Uzuj z5;McGWQvSU8_|_)zjC3K1wFW#cnTR}-i(T_h6!Gqm&*xKYB1F#lg?&wMH^mr_a|K7 zs!~Omt9TH2t9|Ri;<4S5kce`{>+eo09J0}!Twx5k8a-EE{B|G%w)kUKj+SshWR#RDPFHW62qlwu-OE;X$m&!P^t zsRSiAw)^XtelVzKE@WG1Ak6pY$4&oZ(nw&jd`%1eR54VTf4f>edaF<0P}kfF!Yi^z zv17i@VH)Pya&&npsB#D7jPCNW+{TtJbAn#{OIyQxw;J=fX#&X#x8O(6HjQ_Cm!0^F zA$(L0))HeE@iV4z42O=>HYeZQpOh;$+gRF}3P~87k?nYOjYj8(OF4dgK{v0{9C_8I zGOdK1z=kE)PVS%Jw?{)vj#Ogr_{9G!;<^#9C4syD>U${Nf5;DMCi#`V&PL{34Ps5{ zK(ew=H(a@#F1FOF7!J5 ziMw1^kiF)If=S^XeT{25-!C;2Gkmbqr`6{EbQpK#Mf|PusdijaizCrCx#ks7{JFS> z1C0zw&(der=4yBYLJ5nPc(H<6w3{)`5Ug24a0In*_zOd8^Udo`9UPw`%3$I9fj`hfARILVHtiIOK)4%3 zXr>JMggaIP?fCMUuU?FN<9E38b%FGTAFq4ek9WUeie0C8A!mZXD1v_K-tlG!rubDW zyi){cRvbYF&x{nXnWch4@7*WsorlhL7RYTcAidi#E=XgD3JbjbD5_v4qMF35*Wp;syLuMp1lEIN#l>8nr7_Tc%E5h%OF=J^cawF zG4S%CjbXLGiX7$4hPbX3HUY)S)d_W44&`hT>sA>WlvN7{jntise4S)7aeWu6!SLfI z=U^D^WZf->rKSw@QG$yt>dVE39q`XX9L$AMN<*iGg>fSFE#Ds(RXrG)6l~cDMYN~Y zD~?Kf1&ml8yu^(@N#xo-5DDu_zwU^ZO$3Hn!tlMw8FZ=zLry33vrA3Ks1^!t09FXj3(|c!iacpvFk#F zLey=qnjis^Fo(UQ5$VFSh3E>4FyboyvURWJ74CiEdpsxC=2UIqr?+0nY^BEz@caG+ z{OT{b4Fo<|NN-`XEC`G7M}#YC-RL8@R8$8FlvI@QchJ0kMpg_^MPhp4_kRmUGohv( zDC!(?dLe*BOE0|Z3n3Nt6Z_8~i$k0QLLZ7MIM{c2V!(ZI=?;`eQa-&9u)Kb0K8U>j zk+*Q{3jgPd75|64en6o0rl-P1O~8=_yhKlFyb>2PnfE#DPa|RnK*S~?mT~stB+x@zTZS3 zucB6&9ThBpKdi*;_Xl=5N77dXjm*RM#W7^J|9WwI)H?b(8EwwqNZM{HJADx?O^W)X zQhITyW~#Sl(&7j6l?yZXr5Ol(=7 zYz`NqdtZFiwKj;{(X*pOa2*5U&&S4Tj(fjc@ys1=@mn)e2Nk5(+AAS+Q9r^&N*bqd zbZ1%W>*XSj$uanv^gTgTSTZznUq{Yb{)=z_b^yswkcnpXyOWO=WhGiw9}CixHXdti z+1(Co{Uu9ZN6gD6k8U)f0`)QJ6iH}}?6SLlfmemz)M(4YeAhvalPq08Q=SnXVM*13C>*B$@9Rq)RnsYGSofnHF|JUn_TQ zIY1pkQz-Zsr%lkz8smdMoGO_PmJwPK4Gm#!(ull6Q2JP|(f9`J?n z?SdNd0AhH*`z#ow5f9&PH6VuXRs&-AZZ#l=|G5H);k$}}7#?}A1c>2pb3z&M0AhHe zEFgvtn*w6^KlTD_=%X*#KX#E0h~bH2fEb=Q28iLq`H+10m-@_iMm#T-rC^hvPP@Jr z?b&`s!dg)5oO0!R9ge{s|ySW$pRI`EBD$<5m(0 z&9%jpD?hvDV6eEAI7=(LSxp54@&YIw!m+X+YR4i@+Ej6p$+9*UN8|2o)(1f*XCI(Z zT0B>YPX_`yQQ%Esk7dlhyKOk>7t?*g91o>-waLV?&t<(!b`HFoIWzdGl4xA=dzg_} zZ3k^PZXw~QipuozqlB^oBUqhV|2G$_&D^`6s z7fZTa-K4Nm`YPL}r61A{^=t2k?V~6AodYq0vI7L=ejhA+579$#h4CF1p|+Nsh3Fpd zwr!CjY~ozXp=X@Y1(lz+fuU4q#!`h3<&DsPTJWB+>b=lAauGX;6EKE{isoES(1Gzs z5Iuhq{`R}1!Px0p6SdKb?$zqhaGn{PmDO796Q-&%cwL*DbQKQzvjxk8b^fW+vRBcO zU}Dq2L+UZZuyIGk++>9HEc_JA=$9mFzXmdyc>9)J#JXr`1*c_+pC#)LvZ%(!C$HkI zqgt4*E!vR&!eH9ZP>$Cyie<>w5E5mH@mdl!*{tm;Yy%)>YOIZnN+fHcus2M6be>(U z3CvTcMW)d5)Xb_ZP2nL9*8AVaw{TS=+~jrQ-BRqfMH|=Nn+(WS*LPF9_%4y+#zA{~ z!aO(px-{Ci8{a#a+0)Bw>59Z#DWgvy;T=hXtKKFgy2(C#84t{apK}g?d4_$^^mx!r ztlqLp`Ci^%R#hvxnmt%WIA5(2J+U)^>6R#|wSZGsJH6uSRK_1))}(2AvY5zJ)|et& zl1CcdJs4U;8lVATIAUDU$T&o%*;rI;8??k#C?t&BRJ(@X5qg3+x{sUR$Qw+t@{7YB zmcwBNhtqCvH08W-^f!xnE_3BHhnfZLkCE7WM5zOok#U8In6D#&tMr*}e#lLIUk+pq zIO;P;wS3{U9r8z)E168)i=rE07r#g!)xgyy4e8h!mrW^+?$M9+=)PPv45=RYtEpta z4!yn*4ct_L?i<&S50Wx7=ZI1+x!0Kp%p^}dz>y9Jc!P;A?zZec_c*UJMHI(g#Ym;< zKhxI!X8tXxR~CqzLKC7##kAcVq7B*uOe#JN18_Ot3x%PAR_P4mm`>C8H>1bTJ zobQvQ63M@*6Cb)CS`Qe8WAwIZ)XlELUn}bB7*}2i_KO0lb0BP3iefMn7FcT9$YdGe z6Yyp%J+Jr(&0<(s7ll{{rjch)Wh3-Wz=*6|KKjlR_v*sOGj5l8*GA*bf?i@Wr<`;W zoR2t!H#tU1r5Zh_#TdQPr)Y!FgK7E>3viQ3?IyAOLwb4vOY$rH{UTVL0&$@!O+{^%gG3JOtmp&#%}86A|6lJt~L zNsWkB3*TrrB<<1~8TW2$WXUbNNwxVmVezb%1E}faGN!v|wndbEEY!Lh2D!Is<(AXA zS~5%{m}>TBS!_BnD>w+}1Z?yWA=AKAe3mX^g{L8hI%w`kfH&IX+@Z|+ApB@th3-6N z3s|nuBf0BP{T{(UdKSmR*GXAHId~wTrw0qk1E%7=boNs?2J*1I)OmQ>TkrZ7Ma2uD zrFGPz-HOeBIYVzpH99ukrZ2lLYxQGoy%nRak}oQhElzFaP61KaUA-C#+r=d~D>hbu zU;z}^hmpTf2M{1N z4wHgB_!%8@FvTq4aHoLV!9?TDIzq9A@IS!QCx=^`v7W@XbJ8K;`!h{4^`F@t%Oi3TeLV4G0?S?qRw(RO3QTlsR;4z zE-E+4UflY>B_34#H^hUGzt{c_6g*(@T*_v#FbdQ62Hj^O51S`UahJ!&%rm!?&uaW$ zk-&%kRr)j2uv|}O^{d3}3kli^lj!^9cH)G&31+yEo+)E-n=!*b?XuAI`Q5*X2dn_` zz!W?$qx%o>pyY4F1J|@8EXYd&8i079|1aXf(tk%h2!10T2&U}+N8*9~e{*8D5R}k^{`rm&b9*qA*Jm~uu@xXQru#!aI zhRNV|hqNY2UygR=Q8ba`1iI|2I&3;H@C%iZYFW!rcQYRs^mXj|5Zi1BPG&TB{Hs#BCjY@EaTfl(jrBa zglQqTG($)jxvZZkT;DCi3JbD0jxBVGiU9M?oPPARHVwVrxCvJr-o-e zIfEM>#lk~0|U;JZ= zuJF7KeILBT_nZa%^jBpIF_#St3eAnostU~)-hG{+Ui!^+=gM`k~V|B zQ6-O(|GBu%WB%FP#dU4v676bOWmI{Io#!O7dUU3AVZX0zT2`>!!3mYz-@{aPX`w-r z%HJmPcxxhPp2bbg0%MWAkt8X??Os4xdj?b@Ds(3JQ2gTWmXtQwx!CW0n#3ybXR`L+ zX!s0yiy?YBstXpxG-}Tpd|f@PHELw#n2>woZE`gVREsjt+vqb=XBATQtXgAq1luvd z%3)JY6XfXTFuKgEDY`gIrV^#}Y6T>W11dU1$u{hB(dH>%<#}7HrMbd0ZqELDLyDm} zQgaQZ!D*{$>S?#0jg^xd=naDB_Wu|4MO65vh=}%&D$8@bPNcO$CQb$?dq0LTk{gvx zzv*LyGceY4sQa~B>`)6R9dC7#B=>_&nV+gE&k}V^Rt#afmp%w=a ziV`EU3mS(W6|nMcSDXwoETNHM?`z%w6PMXEn_Sz5!qu&MJgL3X6VA{xx1EHg%KRtg zc0UAfnxiVxpIPLD+8TUl;^o)}A(hS@w@xqOxn{)ZU2&6?)%)1%mC722EB)tKtvOUzhnKM%mlx3Kz5 zP{>AVaQ8331V$)4>oSAP+^|UA&3oQI@L_)*5eQ!DBkRX zRHg*W!dNhENX^bFlGP67sRDaQlnANl_L6NYHZ7cjbox%zet{ro7KGUC9?K0)3r#J5 zlOY8CSAQ+XyS5I?%3UExB0r!+h>gxs_i_ZcWp|K!b>QrqA?$!Xt)Hyz9Z1fBOhn+e&oo9L)sZM};EcT0tzw zt))mg3mp4~fS;`;EmjGpBdnLA35In&!#4Thc}W_pw5SXr8lAY)uq5vz9b}K-mZ)sNhmy zg^3KqT3ccG-EUnk15*zKZ4V;Hqa}W)A|_#UvtKxs=-1PPXpAL29HR3|I3)yOY){yT z+WM0Z2#t7%JjYo`e4{b=T%W%VNZKD-$6d>ho^iSEeR0_TDq*kU9$q0FDNw*g-PNgZ z{B8Nba`$4-r_?6hM(KUiMg~D9JQu3`=4&c|^9Mwrqq zzz7q+7K9_E`7a|3jg&GclX6&G%e8xgoOAh%nM2%Ay6cFsNTu2cbZ^?2(z6E9Lr-EG zpOckskmF)&{AY|c(P$^m$wQG8YFJ);cz75OHL9=qx<{VS$_RIQ&68_P z*zp(GqbEMy^`kpd0|xU$Q;}6};aV#vykq08rHy%Ih^Exu`?y@nN!pZMuW1Q4Ys!hm zME&if77Cbj4!hcN<9e#f@=^nH#bbC<&T~UGB*ULb$gY<;jK?gAnBkQF0O-|>mcwRK zZ)uaz{NlDXQCn>c#@@^_jGo@M-j2=fkE-2>kxjgJr~V+%UnugqR=lxlGt(CDGcj<@NQ zt>Kb)P@D&mTy`L14)_Y;()-SUp59TN#HN~hEyGbpBek1aeTtW~fIDu5`?coO)X`O) z(AU=bspEIAk8fngHRDAH!aGqJuyp?O4oLXWvp>O6IP?rd3+Vd!w#u3j0AcQ&5kQBG zE!Q3IQiM>j;e(0$_fVY225x=_kQtfX0Wu>d4<1)WK>YT*w?Vp^r+l#R(`NvgQLY=5 z*&QG=n%@CrMrJO#ZtM3PKmdOW0GaX66=+Ji?m2+WIDPg;W(4Ns2j-M_=7ZHm;>!qF zLs0r_FA(N;0GaV0yYR&6=Ywr$F8~56urS?wV1odek=flQyci>G%lyJlYp6$`%u~i5 zds_%kZS;fs6IO&)>QtLs&GFH`rVWHhoE{P-=q6Klv!Hbzib4@Q)KCP*O1<>nyAp;~ zvs*6vgDPLMj^eab)n_&cAu|u}Rx)`I*KIK-UvB4K?^@BmTh!sQ{s*M*HX)&lS1>g zesUCD?-`Q`B|q#cCF3`Y31zW-Ev}RoviPxbROZw+MkSx$VKBW1B>0fF;t}J**O3Ce z054jepBIU&ZmyK2j}}m~IZc;!4(K{dQkwN_{--8sUGW^TYe!r>hzEnl!3mlDDfs3N zlkA!;1Eo3k+Mlb;P0)U8uP>r|ay0ftL&?*^w5e`e%nab6?k|&f z2(-5S0*Y-z-lWI@)_HrSa5QQ%)>wA7VRFOjB%cm#7KoKwwGXy+W+$oJ*mX$R-Peo0 z{S-cMFrtdEoF#VPOKGj`@Dsw?yW%D4j=hrB*k`@K2U`%0;c9a@Ce7iT_^wT}bFb2P zG0H)!QinhS!riGtmMTnYAYdQ(8?Az#1CB|(m#I~r-`E;trp5MPOh?lez+=UP*4X;QS#}3 zm`**AQhW^T0hQl*RwdhO{e|gx7dH{M2K6H=^5%d!jjrE57we&@S1`@2aM)!?xwQ>? zZ1&F8RpQr(d{Z>#g^~T#r4I_Ucyh-Rk0~$aq)Coz;2K$TZ!+Tbaa_*)pB}-W)I=jr z#)a1cnFZW7&hAZ4?uiv89OEw%{Ob8}0rx2$r3z1^!)TAF@ zS-25ws(zOyoi10L6aJXs;o9qHk874$A7zOz&r|r$hYN9s32`scG)T(|pIh;YmhXFs%9iR2TQ88mx$g<7_-(-pvatSmwkbIT z%d@MQ_Ki1|WFC|w3q<7gDzuH`l4{|q&ipHTOhaOez1B)Sb zFaBjqnHTjI3(W8g+_3RieRn@lRxUozD{U!K*@P>RM;Sk7F?nnMr8*Bv{3Hru{0s5G zCpWr}J?a4kKhQ9I!~aEGTvtIFh{^jeZ7WLC<(PAVu+^cc69t763(>iTsB*XOVb#XP zWn@CNQa}9gy1khsx`jG@2-v5d&K4bt_B;$ekXj*Vc3L7-ORnYJNcT)C@9DJ51W37a z0CEv)#ZhA=b(Y8X3TfjL>$a2G8!gw}2*ZU*dgxB*L+h8E4B{KZFXVQ4`epIiEL+(J zypJ$E5y#cT_iGBFhz>QO;Ry`d3~`Fd$oPxL-cOTXBR+TMRewLs^cTgQ`#SjFlp2}= zk|Nx}B=5f}4daKcV{)cg?`^CWP03M)X3QYs_p%p$ZN<2@{K_~x1--}i@O;?VzIgmG z*MGPvdIX;}YAEm=(0AhC(&+A^%@0vE*eW8saf znE8jRSRiW-a23yt0Inj5<{z%2%_wTAi3s)qZ+@tF#DmBj25Y-HST=0BA;A)6tGRm? zx~F|Gv-OBl>vgb72mHb~$mkFWMVJ1NEg9;B*2+Li^CRTXrOWv%V_2e{vPKs{DTk_2=HTEd6%(L0PLt+!1CIWcUC}TA#U)W0;po z#jtPKokTFCS9M9e#d2u)DVuC4fU;;q>rLkv-oBqY;k6nwj22)%9wP^L)y&$nXmDWg z)EbfKfGW>`FW%)^JoQa-3f*IeVx&qzBaJBox9fB^b2y-ef3V-yv|Cs%&i@OlYIM^V zfp(ODP=tW_LBu>et4xn4R%`r^n&g*~V_m2&YhV%z=^-^Prj?+e-+d>)B?NjZld=7> zOhU;b#Z1kc9%tto_vPEyE>B<&g{%QgMn=<+;#Gf{j4$%%j@ct6*ztOX|5+Fq(CrBNd!I^#Z=24?4g4jY2GE;?S;iVWTge*WwIP%KMNLHzpONNI zfRezEpxAThnfJyfjX^8;&Mm?K|4@Az90c=Gotu0%QFugTvdF&=XZp}>D$C=0QsQ4O zBT!b@zq^dUlP3iJMLrzz*|b2w*Xh`+M5XH@yVPcLn0ibsc7vYc^8?y~%(z1oIKC~s zPLR;bk5>3HpEQ;^^-U8yVsvJ--ljRU!TWaBt{lVO>Dc~nfroXxCjSTEp~=zdN;u{y zcliHM20#pGx=j_nYgQR06q@0|)v5}XqA$JiR5s>*Pt8jh|2NX19j_9%TjW4jEaQLR z9KI9z)IHn7FZgqk%38{eK#Nzw=^c$$uz1-Vlq=zClQ)V=)#v*-4g;$1sd4~qC{eUD89#DV z;T(F^umkFNs>SI2XmXWTgKj!-7XKgkjtG~l^vJh`6n_s}nvHc`#1^eJJw#(=Ia|Na zR!qaMb&agXfWymuXg7afbZixORtfawdu4d{GM-8Y<+4{8WNDE6RwNck?8=6It+sjbwErY`;oStQ1u2=7RNxwt==n zrdJS!AvDUu;hnqBg271ekq9J!7GHiN^`du> zpqgFsZj)EbI5;>~5C)eVX1AtqxxL%O9ZknM(?pIg3@eMwcPHK)hlnVMJxfeu=3RRq)A9FIe%NsuBnjsxA{}mXMYaw2bTa}zj_#t>D|i8BLPXl^ z9_W{`eFCx#>R2!Cf{*M03n}`d#1>~f6CzU0DO6LuEi>D|OA+dVMMH6>%H2BSTsDmb zbuXE8K6-vv^G^9uTf3Z>EjsH%H9gD-QmPbVAljC!OO#ZG0`vL@3@H|ls?Xu*>c~|3gDc@CQw=}BqSo<$g+wa~60hF1JC(vPDAfuyyeRnAfWOTdfKt^{7 zPycH9o&yNrZvn{Y{#=2kq<@_TGP+^jw~P*$lOLE<-nrvR5n%1VEC8(if9wThHyz06 z{;>;FfVKZr4Y2l~ssYyi3&nec1TQsMp34YxR$l-Gn1W|*1-w2(tKvyZ?Z_L=mc2Ye z)Pn(EMzYqoWDMgH-tBm#oM0<%7xkhtxGW;k>V3us-7%@U*bvi!-dmy+&Ly}dStMrJ z&?8Z0rPE#_gqLjtsZ4OsR54qF&kyBDbj#x*1;VBHA4$*=mL0pt8FZRFXlZ2H&hVPcmc7Mo5P6&6c(Qr7D85+B>DGnTCsJ%Ze-#p7N#WH`BdwYa^|^ zmgA=-ClYL9_?q~fb06g?->O9kHYj%q!x`|I+8r6qkR&2WO8j)ti^lw0Alo;&*lF{W zo=eT9AnIr(u+vbhjGkYgykEPyxplnFezN9lZPkIlTl@37K{~@z(aCMg(m4{`+HDj-a@4BjfF!=*c=3d zl=^nR4x*Ss4DmK-dC?Ujk4-P6SP;~k0xn@wLIIh+w-gE?Vbh!9EAqGx#aE`c0C3~} zT+x*Cp(y)bOkH(YT)ooAwZ*k)ad-F9V#Tev6e*>+JBt)3ZpEQcpt!rcLveR^*98{# zJG}3`_xb)wvXk?hnP;ELWKJ?C;hW+E0QTaDFFbLQH^aK%^BUrStgz+aEVzGl0TjYV zLj8{xM-oVR4S#{mvxZtgus*h52VVcT^OQ|Up#I-=N-b`If!dL7#|?9-Gf2t4vhOTn zIH`d)re;P~O0gi50T#kukBW+Dc9M<_Uygh-aXky8h|re?46eQb2jX6NwjqH7hnjQ* zN4a#H4hpTeAkvfLYbwp6hF)4KE@XGE){EPiZH;7!%y7GOmZajhhcTUr*Ec<_zp;Wb<7wx55cYMG8q(MNRq*_G9grVlLptvHE{;lmGR0szQd*~wKZ{M97B27+_Tm3a zy8A2-_v~JyR?SfHWL+!TI ze?UPxj}j2*KqypQ6C(oJ0mghOfTQBTnTP4Wg8p8%!On=QJi*U^00TR0A5qVixWUwb z{{O;=*PK`7DG39w;CUDUMFR>L*i1VO@(TzG7+4V~>!BPlutSQ1XL&VTm8Wu4tb%9% zLl9tKhakYf4ncr{{X+o^?64g$FaQ7;*b7gbg6Hrq_#!A^U^7s_!2Z<*P>2u-^*>qw z237B0&vw zujid}Y~(&!%s&g(?*pt&Orn1pTN87e38+i5PdWTLzdDI1f}vJI^qUWk)c+10&Yw8! zy0-H|H!{Azv*DwzmVc9kmw1uf^0B33{#ZB^LP;E|;kZn1{1-gZdZypEhAW^#XNd4it1cU)}^e-r+rm7QfBgX2tza)gHC-N8^8M4GAo2kf3d zzy7es9KJrb2`wr&c5A<$!5h}MGn*`%4T*+@h%@i8(%v9lel!3Qop2w1%-%4&M7(;u ze-$nE$`J2B^v^wYRPcV75L>m!v&NRk)@AoW$a}Mw<8fjRdFoc@xpd!yU1yQk2>9%u zVb@GFO>wtHKG+H6uanT%hrL@)m}nH0z`iI~!*o;YXyU`pDl*fkQ+J8SV6uU2!kVSWT5*|^j6|8q_Qg!HYe`P z^_(V_6^BOSA}lRMZ1c7+rHq@d%Ug@w1)2f47HfhQt6RK14=8`Mj8D}5Ak>#V&V-j8 zw&Yop6MMwIqPbQM{@z9j70x)0{z~-=YbW)V)$`0s@sB`dVh4QYD74M1qJAy(qW$g` z!w>4ioGA%8b3B2^gi!DKkL7x<2O^8P|5G$miGdZAfJ5a(&PdL?;MqmayOK~b+&6|r z)KFT^JJ2!zf1!Cr0?+P!AmLBgrr_6so{33*-X-q{^8zX_bz2WYHUtatz_@P!{WQF= z?2uF#e?oHi4SrZMpnwO8`Xf=l7fL-MzWat1w+*}@7&r$M2H;5vU>HQ!gV<3i&%5kU znEs;+AntR_f3#@FFk25=Bh^?BGC~Ig6T$)tmLO#k8VU@~Tq`;9KE>+~*GS}tx9r1@ zg^#wjp!0!&BO0NSOc`H`wben{e4!C~shgTnkf9U(?`M}=UtHe$Y60glu7D{A){LlJ zq=Sf2F0dwky)&FtOZ_Z`OYurk#7;%54ntbx`ednIvQvS@?b!DCt+g1Fm^3`T^^)PB zbG@A8c@ugVcFbjO#o!mM8fyB4I=LJu$c(18p3&qBq7jW@R(+`kd&?F6#BitzN3~%I zWY;U4S1S)B=(N*A^!q;%q_EGyk33E}Rwv~6&W7}@r$9<*ByW5>NkOZzB7lK4f-#4d9 zNA-^xf#t4lO^;mM>{BxC^&#mKSMv)(!Z*&uvH5%wU0^d=B4!BQ zHpuK*PC3g{0k~gB+?9B4%l0RowmrdPJB`R8;%cr z2R4ih45>>Pe23~@b32Rx+&YRMHB8jM4bvq`E*R2Ubi@wTd5DC!#R+2pyG-g)joHKm_V%8h)k@vtD38 z0~1wr31dG^g9X!{n)^S2OyMthfN8NTQb(m2fcg}N?3WV;2wuQ8@iT4sT6{M47kewc zr(fSenXQ}GKx<+bKaUf#zz->GuITUM;=jTWZz1FuZk`q8>s;H6FVP>W=v!Bi5KON3 zM>JweKTy(Fjn;LjcgcZ*S_*v^K9Hql@@!h^e3{FbLw&l z=~^|->LB0464Zu>jDW>+VlKp>+h!}c1P-vA_4gh0sJJ?>Ed)J_CW>ae<|w{a$WUH| zE{Ot%5Zqmp9=$*P2YeHh!kp9D;MNf~^^5>6Tcmd5B5OM(DDc)CrA+L8Dl~KFjPRq#`J+BiAI)(zo%Xwr7frQ}(8KZ&|M8 zdRjIAb=Vg~+_{7deEl@48W+M>bN(rxq7?5Bzmgn-d~v-OV6RY1`^Aa$y6{*;WC|dK z=Re4Pg|*tBHZ!uZ6MV`Ro`H2~!zEZ!w4f*T#sB8cdd%6=WR&VH(Rf;>Bqw+>Ayyxc zVUsg0qnbkEn-XIF146~P-!QM`&Ds&+N zL0!uk{++m4@jln|e!du@@|+AB0TN-}N&d{@~@-cFxvb#=Ub%9-0J zvI?uuh#BAbS{=9P!RqZ`M}q5u&%bWw^LG&?`Cz<%zj2oNVKCx*9Is2Q-g%FFrKAQ zemX5ZP8IOmv!oeu$+CL0thH7M4zYU;vl__C2@)V5aA9W;Z1vuGUj=KE#aBH1BuVSm z*{eZcS|E^L`%+yG9vw-1BYVcYyyD~4Xj$$0JhRKnd;H$hvSn}s-{76imlN*}+rrNi z_|trPHXsMNZhTv(9XTsaR*$J1uLK_f+aN7Lm)@=-lWGESpIBlZ;d46st=qwN=yeQB zu5%JP(xwuD+mK`=t2K*b?;-Y9UC%eE6rf;ta(1D}E4Mg?wm-YYhdmu6Rv1~_03RkNr4N3g5(8Bb3>xBMp&VRVfhO;4x z^0cmzmyOA;9E#WGS%1-H_{cn3Kd$wr`I7ZYBgZbohDw|PFNtOCRG zUgr1BEjUfywIAI=^z;f35rRY3A07noF_)wp&&V~`*+txoXVH)jvRr0Zw727_jy`do z+UkBZ;n@FP>iQakQhTP%b=ZTS_%$4Rfe7a+>uJZWfd7@TiQDqH10>M?Z}UfZI3md# zbF$xGb*TKu;lrL0xFor`vfpETE2TZfQILGPXlI-3(G6&!V$2{uUGP4KKCSf)P7JCtg%}E1uJWMlK2LRbw~zT)xpFvKh*ER3lHiD( zy)L(jKiS7ldvk2zsoh`W6$riWY^eH@M@aXZpI|iEy>E%1B1ge?PzU;fbTj4M&qP+} zH2)_K1N~|z3eTPzix3b$^nUD7l5E4U4+On~Uadi&pl|ABko)tIm6LP(gLUk?&RLKX z_1wek7NS1$?)@63GcW#_m)`T-;M#vT(*4`$7g<$HU|_3J0+>dJ)2Ld%+O6#F!1y@I z8>d2Kmt~DYKKeK$Mg6JUd{!Sip8D6u$_%l4zfv)IU&TEtCntyA!UE~>tT+DZyj_NV zV(r@Ld3%4eOF&Fm(D!otcyoKRM?gqaNLc(a!9gPrPE#B`Q^^101p!7R(S@&b{UFVr zfU0@KcDvrC$L&J#T@nQdd|r#)JHmZS5h%U&`gIQj<2H9NLTC7R4S&JRfS{&-d z5AN)wiwW|HRTgkgGKLfWgSupZVRH6`2Yc3MUxCXf^Q|nSoM1PsXZHg4A7;5a;;&kT zek(c-#o15p)}hcniC-s@X(uZ!owrV0t*#XYgMcfUK^)cTf$dZ95juarW)h#!GT;mm zocv`qVJB5SBrWNqbLx4=qN0?ptYF83kC*)kV!0q zY(a=DgLKjYnI=k7>Ur1)@9)?537oDBxQi3t?lMwb9*v((Ma{eP5g*{rr4j!cE+JfK zvq=67YK5ddP^CG~IPQj1;xCDs+NM!+x!8D??X?zH=u>fz)XJ?`B7G4Ljk;zSrFn(G z%eaAQSc~ROMXHKhZl=~JR{e!PWlM+pQ!$6fjPRlxbU$|e!^4u9p(xUQ<3#N&?!9eTdzJp4D&ExpH!M!Z%|PR!+@j*I5s z#%0ZNtpvFa5ZE-^&(A6Xq}AR#jMXGfGd?5^eI>QvI$iVF_5O95P0GCx;#+GwqF}OZ zfi7GtIs|`GE`!EiSo7X0{f3VIH_ws{YgL=UI4pae5!i>?heuf@IeBqS)}&N)g;$<^ znL>}ntx~=}CqZFr=2GVML77V$&nWhYbR(s~eRToG z;cv_H<8{;J7N={a5ks|Wiv&cGrtDp)0nkVg_>v4m`2=`rN&H{R|dq%d)7vjNCzHHzbXnlUZ9E^$HwGJoWg| zsgbDkd2ON8jPKNS=>l{AvYZ$+^xMP?=|EL8HoCmyz3 zM!;WCrb3Wt*LMv!k*YmtT>otP2nUs9FH@hK&pZh?i4;6p0REZ;LRS?dsL0*dv@GBn z3knPQX0`TuePL^Kt(pnXPZce7tKinar`<7Fhh+TtQSSTSdIlC$M=`)zW2qP!gDg3G zH}Y2g6_bRlBszWHT7q+}d_k@D+2~V$P?JDzLq|tULAXiuQ0*8*;&wjxDGaZ&jfL;Q zJ;b7T7h`LceRt1?-}Wgo^()iPa|RgKj93HaTHnk1Cu^eNfv2WY3%Kf`c5gH)y2R}CVzZYbQER#T zer=ZrM`!uZoo~%zqZu#B35%G!?Ru2H*MbfW$gQYaR)egq;bDM|YuM7|T1#&tK5i%Z z_DMW6X*Thp(8d3L!{?%_vEA7wt+i)!nWK}U>rd2CyGt_;eLp*azp$xkhs63#5Iv>#2s z@mZXtvz8A3JrRBGfAl!-3l)yo_Bu+%_hu>On)z30JxYst^!ZT}g#OHbD-Q4RuD`k{^aCrT3*v^@YLY!KEB{K`e z+7cz&Bx|T+-@iRsw?AUNl@aup)kfSUlAhm;R1{S|^O6N*W3+Akg|1!=Fm9?t4o@Ab z+1oYfk+}5rd#&wOm;M9#R|@Nw`M0#TQQtC%CK}){*95k9&?~i$TXTL&Ri`!4ig*`C z3yGEr+?ViS+%KM z=Xs&7#BNaW+c%2mi6)vwsTQgUxTu@qsOfS8tU>bUFTW7oq-Kk+xxym)YHbX#Af0A} zR-KDWD1*T0Y;h!;dK4!B?p(a-J3B#-WVeLhY^mziysKco7GhkH$<6{pMa@4y5AC?BNY5I ztJb@e6v74PwwjspE)^EbXO@{$l&|FCial|-{$b*>lzlVDx04`CXY?=dW%LC`Up*(e zyXVNf&{ZdLH0$-pSrBlbly}{Ljajo;GvdvBG7Cj5$+hQF!`pWam-M=Lw-Ll)o*w5T zm?CqH#3iezrsqNX^~VoY1M>%JM#9Id`m)4C@u7_sff@&Hr(gVwd(#oA5^9Xy5R$Ys z3f06bnk^Pgj%#bC#eAJv(^jnRVdjm)tI@u<)RJ1&B}*}XiHsFa)8k|HAgSHb*tiPJ z3C#I>S)P438CS@>s8K0A8LHs_~*jhxK8;_wlo$#BB8_L?v>kp`e))%2{N~!OtK13c9b6FqNvLx`v zYLdPcmO{BceEr3`A#oF9y;k9r0m>T_ih~2--d6{iFns~IKB(ovJttf`}(^~Jo8&!YOsgohOL2~Ac zH;XD|b|e|ih)FURm?Kxb-ry3^BGz)9>@m68t+{m-}cBUG)t%J2x=#DyVly@t*NF9<{xGVtgU&r z)oXP4*=)lFYkcNvcT)B8-0U!?3ub@sq^a-~{~Sr~m~y1~e11x6y#_d2eNi+SRYXdT&Q1)}NOPFJK zazB%HY6_T3Sjv|I%(?^5aQgc;u1RVwh7iUBHil3lUtk+?yfGK=<;Opi{}zk8derQG zuD=J+v(zas;RXiZ8^Uyw51{+Cz$83HwZIIZj|ZVqvcp`$eRagWgww$L@j_Dxao$EO zkP*6s<5}|hrfh1fF~?IcXTejX7Q? zd7d_yH|=&g_ChMf{Hhq)Xt9zC%PBc6vg9KDWv)sN4k3J0D4xYHSg(S%5l&&r^=!ah zAm66@AqA`)NdbZs>J7qL!@ifnPpiy({#I^TFYQ8<$y^_7Q(- zrawz)7c>Pue?y!C^STqOb6!78JDq{yC5YdL4V)xc>o@TkSdGDQwrZVbOvU=KGUs0; z2W4y@=gzk*eeIZxOFQFOA@*oBF30{5KfOaTMTRP^=`rcbf+6PVsB>ylsgoTZNZ6*_ zvc45I(B$BK>g=7dnaZkO%xH*)oi>!mAY{W6=+n9=wK=jwRCt+0S&W5Wycx{bN|~JM z3)X)3Kt(GBPjD~N57)KG4-;UscPPkTw3$Xt(d9)=p-JLFU*g3ovH6KRW|LQ@7DL)a za{41?JK2J)(4xe_GVqD=Sv$0wZ2dZZdU%ECr)G-Vnhc_}!R76r^pP+vr^#_>z^!(! zW~(~R>jpPxoHD-6-G`j}Mde8!ALN#ehE5d^HSKqJ4g}o4$5w-;dWDqqPJYSGyvx&R zMI6J_MX7^Bw;i_jx>}g(aa8b4jNbg6R@V~sdL<}sxNa;izNj|;dLZ1d1%=fY?;bi= zC;Y(El4s)}0&zaNY=jOgi$S5sg9n2S!BCL1r|YX{5H1DnGpO%z{rODb&gj_g{JHZH z`HZ3k)K0tF-e9pPe~9M;zekY{vVR6v2ltHja8&J|JMWSICA~D-Z47w@po>8PSLN!I z0#L`xj(fsm*imr-Xu=c5OJz_1BLH28SUKVfK=Ba+t}sVIWRsouyW^! zwVxXH&%(fx^Cy6xIGGFhS}C4=~lF3A{4O1W?R_fL2m~ z;A0fdJ#qcE8O$WR8}XH?v2#?O+Rqy{aE&9DLWVOb&(Gk zqv|>j@9{B-7!mGd^kwRCw6$KZcD|G~4tTgj$|*cp#`FKk|D$p?4yJ+7HJiA7w3P!f z1ObUbSthE#P_=!`!Lv(e#TSyvBeuUX^Jss;gP)4n;RO^&;cq&{tU zY9#Y!Tub^lTdfMuD`yEKH04zIz9^?0{oTJQj$GLPweGXAJki$_YDst?DIr zl5Lj-AAo@(l%?d51%K#WiRUaa4*L!nfeh>4hIN`FqEMFWZ=e$ocq(0F92U{b4*(dO zw+FsdgiJ6(l>2_E%LqcoQvNT@v_qW7VUJ=lgp8|Ok@x+w;Q46rojXPqmL!m^FMQC( zVQa$?$W%1R0T2T4biBs@1e(YGtBf)JU>5u=J%IXnDS@nkjUq%TEUAF3K;Rf;Mf_MC zq@Q+NXqVLdhT@>CFWhVnpOeFbbLKq%w2Pd?nb7pxYTQgfrG3Vq&v|G``EY1j8FH7f z9&j&pFeWPD@yQzdY{t!En-w+hw1HuD`-`PV zC2uoybvsp3FmF`=?f12GRJ>TVXW&)#+mZPSwG-=2$m+=DmY#&}$18$GJ$T~{S9x!P;F*tUPz_=Mi%+7egW81H_Gx&i$j~Xv&gfNc&Y=7A*!@5O2OR} zGhqTCIN)hHrvC~ouabSi15CrrvV4!?0Tiu=#8VLp!eJ8GTj?h{=7xu1U`hW~OYx3a z-=ljb{_+b^H@GinO&nx>eE8pG5%0nHi`J$XUF^2-gzVPO#b&zH#y-eY`7q~>rcj7?(IB%^kvMOCD->^_()Vj zv)vP_LhZPcmL+%xb+q_%-eEsuxVaBrfBB=LH502KR!JZCDxDM;g*C>a&ec?=17*@C zh3=amrdGPFN3itb4{b;o+F)wUNPugL(z!3!MX$ApZ-QwCsJ5@O#&9%Gtw1d>`94|D zppEbjed$|(6)Y^v7y`3LY4Uo-POQBBbFd6sC0c~O#}_XwYAxK_By@(92Kb#VG{3%mH+x9gxe8SQRQ(!Gp678qxI5L@zH{* zAaiAjnp?@d#qhG47l});&sq=3! zma6tK1v|GK-5bTEv?}EV)SUZH)AC6Kh_%DcanXtX2_H!Xq84{2r%pvVyT$x7?~|qVd>SuQJ!PziiIA&9fIj8zS4_ zZx$Y+G;X8#g(f}6W^Ah$f}(1C(be$dETgYJqU3WWUTfwyqwI#SlWZ>2C?5-HYHs-S z2o*Ke;bB|;jwN`L$qHuJ1=S5k3N}%U61W<(-V1j*ZSR4^#M=dg2e(0DLc)TQ&wIdx zai7V(Ds#CNDE#EHi7-r4}tR;9_rel*lK=&~GIcEpmOzj@@#7q!;(tG+-<1|{zlzm)Iu_T!ks|N<*q?i?9Xw6vBWek7=AZ2n)|C3r>CHunT zMFJJEW#&%3@cisuxy)BmYpCYqCE2ryF7phV4WUayHO_;YB zbo#FMo!j)W1A^syLyQ^MYJU|!{N7A#IeD$GYVumF=hwz}B?REs7~1bdKA(LGib%$` zouV%HAE>-m6-y;>4KkyI_`_pVy4~)7NXu8eAI-U;tz%bkK4(|`ZQO*mIU@aSUhBJV z;w|#U(SYNu$xy0xO0@&=`FEHNA%DYHjCd|`3mn&+OV-6Q?6cEzER~%pus$0G zkJ$yV2b~gp`2tSA?J)|5qP%l2jCbWu9Q!cpJ;K@*ml!e9D41=?@daI+qbxMGL_425 zmYcf7shm>!@c8|{v|dd44`R6ibX*KcaxcYM`YpHc1(${v-O)_k;VXF8vu6t((5hl6 zJsMn_d=MF$@UmT$5Lwuy=_b3UuzoZGdh}T4)LbY&0)2+%z5fA9wN0q{d4{+g!Vphz zN#JmOnDax*DdNxS&%+N**=&M84ZA%z&20XpH>w`i)3UaBG^H={nmi4>S=-Z$V&}A= z`fbegX+ynmm6h<&o2tTqSuT@&6@Ta9?Nv-eBdkOA_&2cnL`IXy2a$uQ{4sK8k-=r# zef{CSR`_M%aiU}kd^m0^=4A?Pmz`!;P?pmZCEKlwKFPPH`8h1InKH6y@T!hi%&V`^ z?!a5-%e6sk@@34>>g3mj;C-352x6H~C4PhSFW|HOz5f37cK!?1&GxGnOcY4e`*rkm z3>*>JbIQ&@gtPh&0qpy~ZsWqF*8BpIF~|knGdBGK=NjX%1l-rx{r@GsH0(&MUXixA z{_f~J!b2f#Nf%jPNA!Y0#w7JNZ-;-WfG~_y#Qq!z!$`fQ{5v|~k&Qx}*VlnCjMN(l z!|cyHI{9hw1;9WU<`-xOgkkIJKp2K$s7Vfh5a5uF;x+y!&^-194=}|a?C6}M2T&g` z{Q|YHQAkCEB_jec=j?A5-jw-P1zX{E-|{XE8?(z0vja0)$N8Xg-+(ibTyI9DlDG9s zxUa&R!wBC{84vEuz*l(f>Fj0}^wSS(VVz|5yTiuW>nZBsEu_9KdQ(O?5j)OQ8l-3B zE=JW6|2=|XzxAj6Awn#$z*l(_xqaz3B2;|+JucyXOeE{Ev5Z+2+wZ!|6xl!@f0X~; z`;5*d4&1A_Q|H_%5ibJo@LK{Ah6vmED->4eaZ1~oI`Wr&-PEGsjE=`|QnZo5>Xeu} zy0dZ8!S_0y*>DD~DW^zXShmv+`jUEv@H!QUd&dQmOvXv2KRS|P9xcg4>*YxCBk$UT zsXKYnUpXkxZNN;djNpZwqk_R|#Y7x=!WqNEa6ezH&wjwGF`6ptmc6;9-1QzM z7?SV$pwq8tZOau6aq8`$r@BN1*;1!QR$QDk^Op~l@~X+2IGX<@;FB+7Si?yijX0Gp zo4cH)a=R${@=o;1tkV3~hvd@_JPTNY??v=-tFfj~*XVKoUL#WP{NPh@ni2cpr1+Vl zaCXaGEF?!>V$wX!9xQFDk@2jj!~AQiSCE2a?47&Q#cPGPaAT zA(0{~Rb7Adli2f`?X0!S2UYMf{t7lVEUb?Q3*jN6-38A}44lF=ZhC#Ex@ffI`%nnK zbaR&6WWN#dJ&|%aNtia^p6|>zH>*iw)#@{GP)bo^#}1h$WIS(bWogPe!~I4#ye^V# zma43-EU&CtrdIdU>7--QnTkzFim(@92|6|PW}RU3i7w@r(^{7T{*I>>24j11Wjxu2 zOf4f}%WdD)Mdn7?lACiJE1N+XPH56W!|2n90eJB7@B3lmU^!;uMO%R?1JH&PGZ*?L zC?kX1DBTRGGYu%ATGSMOAV##UKsKZBFB}Cij2PNiI$i%1ki@F*gLm3qat1kevZTR1 zpJhq&)Jbtd4$MX=9f)v3-u}NrdkNJ(MnIuig$84a5i7KNd;6_JvN0wN#{12RAzztI z4jPOjNyHd|SE1cJji{mBOlTioXvOb^a6)FN$wIqRPelLeO^pld`J9nb_trrhNa&$- zNOp|{#4=$5IMffD6{)#Y|C7oX{tpj80#jV9K#5qPEa@jXa-5Jt6oBsfUBE%Rs)Tuv zWH!Gl&fMV1U1yF??xwfOIPPNvtCv?Z%U6AAM6H9~wyV%iTf@jmno2_E*z}~>lXaGZvP3eOx?)>6u}vF{ba>_6m)Uzmwin8)*7rBSOAD}rgw9p1Y1 z$C;j%%oOk#RGy^XBGq_=35d+bSyvOffD#mcis@;-QM^-}CK2et90031!8>>bt_^?G z^p~#-IAc4bQ+$^aqR2dx=daA=r@Z*qdvX?pcdyKxD-r61cb*wF8pRFCkEhS?CtMfj z1-zJs8 zN~qLKB+Qf&{xFDecql5q@(2aiAYkv3<^ib<7p$}{e1M1C7C)*L*x?4ZhU!g!p7C!Z zzfO>LUD%Qktu0>3e_eQR5PnUr0{I1?c`N)C)Ya8G-3~`;UVG;QYnd=>a?P^m85%nPNRAS$#4CsRUx8`_sQ)UX8T+bD z-3LGw(O`PhdqhtV=1Xx##wju%vt`&@Vec{+4Hheh={h4Gd_FIU-6DUs&#SJ5>CMpQcIo4 z$l8v8Kz27w%&gCq+TQE$W97Iesvc6NesTW|R&U_A?VyH@Hq#RegG8fdsE>}^kGImU z#`s(exN}l@Q^~?Yx30mPgF-;H4cPh-)r9%D7c_4m5ZJ|4?m7=oAI9qg(MumbT?0aM>9vO5JZ^{vWC`LFx<-KmB+pNk#FVywylQ=dDX!3L{% zP#h&BlatJX?+Gus%Ea{gW-N^MT^z)9hi;_2gW2b^d4?PBP0mwK6@;+^fp{?EbyGF= z2`T4?+h2c?DMadESn|FoWaDshP%#nNq?Gz*G}N7}_R4-g&)-ju_Jtf&UOYaz*Z<(G zxQj?h>g!uip>QvA;?{1(1z#_GhNOLU(cLa`J}4)1wO|*yNmdvMBFl}s99?0tuT8Gz zxP9%^c}mY#-jDXN(rr<#c_g%d_D3p)^5i9PRp+c5KIvWQj&^k~i>|j-#PY&&mF3`4 z0kbT=n7DwDz#{OUZf=k*U8#SaZ`wE`%cG5PiH)PJ zS77LoV|`<5r<3pR)%C^eO~nN&nzp>jo(x+V;b3cFW5f%n2 zdIp-q&o6(BzWs6cICA*9A=T2qpNbi3sA4Ss?89#Rw}#WpOnxQP`CDy>-+{-jk1C3p z;+y(0HJj?{lQ?&0@B^?uOwFO7wPej0V)?Dw*?D>zZH|sxa$Ak75Y`EGgx1?kJPeZm zRZ4QuiQ{zYzVQbX?;>s%tW3XWLBH3|HELDr0Rh%V>7}4h5j46yb4-h#yQE?9pgo3l zP=<(L)4+LqloGpAC-mE9P7id*onpD1Y|l6J>Gdk1yV1Ij|J_b~&m+#Af|p!Iw%xk7 z{}tkBl9I!^_kp+6t8{kzwvKzaJ@kJY-_o?;N0R{a_CCNv8BIzTv2O#+8vtkl=KWFu z<~>R%U<8==s1{(}05i=HXZtq5yhpVF^A<2#_vWR=PcMHl@B43ndE2)E=DjDcNe+Mz z0TaK-Uk?*6gmZE#n6{*%5})><Z9l@BJEZs^?#(S1y4H6RkaZVHq(zwJV?tQ3+lU**%z`L^Pv#O@ zzINlye65CWdGcxeEM@-E^syBZ6_S0_oXQ*R)=seR9t|>-^7^4$UY6I)w+R0o5i7AT znhI*sWoSAPdl>z)cfePU7;Q)WnLWvIuuB7f^$+Ab)64&pd-GvQe zS0~zV^1{Gn&_yD!QB?QO+hu(Z$4Xce`}JWt7MA zIBCk*fjW18tl@v~sNWD5I!Q-vDkLbxq*5qO!`!FH0yPCZqXGjWGgiw_ zvZo~l$qbL*%DH+4-P?y86G1XxJbGry9V~Rg0jwO={q7m|9(kK01_VhQ5EnFU6t~M+4Nho`ApAT_{S;hGuUIy3UNg_#M^vs;A1L~u6HKfJjDr> z|C4G0G63=io~FV7uRs|cntzp1m*T1rzj;B$i5P=45a1rWqp(atn>Tt-I}fFb(|zVO zGM7rnXy7Y0p<;^U>zZMBu>4^(@M6NtX)Tl*&#Cv==e_-Kt&-{WEKYEm^z3+{-GDh` zlU!fMiy_B{PB0kkal#g0Ubu4_abGEvB3JK4a~vGmkvcdLR24qg6hM%zO7b%w?WyDR z29}xU^mSLce$fEE?tT@5UC#jC(Q9j*^9{QCR)5;{2oWH0cMG8_p7T5EjV@(C5(-$j zTX#EDf=hDChG>-j_PZNLJ-+~!M(-whIDz|Uc}_vkn{la{&&qvMpmO7(xY`t*)=q3K z7k@r6ZyEPr&gu;KrV8^8*haES4%0dE3mOWqvUyKl(uo;MPVSsFVyk00$_|1l5IdRC zV*9h_$xzWCG~ZMcH*-@r(a3j)V;DG(ngQY8aE`m8B&| zKFB(K<>P6b9S!Q@6kzaTFGnM`^{Ax5&N=pVoqCBlxZ495p^f1_Tltm8I#vTByO`|5)T8!9*_G*6?V zo9G^jl&fMb9jo)10(eUuE7gX{o-(ZCMg|W9>J+vhhC8WKI_^rxlK&<(rpK0{6yg@}z#?Um5hTGp6x5x3jivUu3BG zS|9vjMoZDY_rg!QwMdK93VkM~i-6Jk;$R$johq+2Iec|i;=u7&9wt2#dUt$%d@aWZ zJ?j;`gz{ag4ndnYd}v@+FAzFB$Yqd>&0wToid(%QnDjaR6WZFawzr5JYB1D@6-o}W zuqE;2p?Dp#uo3^iu*t9bfM$Fm84IVKFOdtA7$1Vy5g-}^N5tp{d<((o7Yo;bjxT{` zoC`C%O_vK(#(?z?4dXx-RzKP~7sj^k?w?-Uk4$PXZeJFI@j6)Bl>PBK7Nw{VD~dz_ z91Q@miVORn)Djk)7ao9wVp(al^@m(4M0;8fKtC$r!3FG1ypBRd{U>|aIXW&;7g!5O z!b#OfI8qy~WVgtmv8=-$w7ec}{SYF551WQx@1ROJgTQsuqsxe_n@X=hwoyNz^V$Nj zD2WKkXcRzVfs8Gy+eUs;(miq?^IT{(GIC!PiYU0}65{vgZ^AINxzf3m8P)G;pQ+Ir z$#@m}ND1b+|EyiqAP>&B#d0*ikNDBWjJ?lHmiGI3Kt7Vq_u(NIN(T;`PoKf#4k7jn zOc;Tmt9c8pyfm^EFGh)ZA!WbZW_Zod71f9JmQ)+|zK@;+9DJHFw+WeWu(NkhrXoAB zRvgy&UHF|u|IwCbPIqMK1gTN%ryU64cqu)YOFKSggz( zKd7^VgLmSNct(0g0Cc(s$Qh|Q_36lTC4HuG<{wa|6!(W9T*j~A+{?{#p3rKBwZT3j z9OG6f3-!W2=3YgF0xU4Eq8Awzyv^ zV2is#xkJp-5oqHBa|gn)I@zSZPmzpJg)*?k-6011IQ>(@I1@+}fxj&Twz&O#CfRW2 z=`}q75Dv<*x}uu@e+B-OdcgyXG-==;H8KGd(;)nmbVa+zVznB8E6wkPfr;{IB7J zlJv`=pM%}0JSj769rlicl;`5%1WU_59HI4w1{;st{7{duJ;aCz<#VvYxe^ojfR)rd zc=Gy}_@3>H`(8kGn`+?)&#|K_{CPtzrFpaGdj3ZO{2f*NtMubvs_(G_!|m8Zgi9H} zqUXi1XXP~ps5`ryKJ*G1M~;E>&b(X>%YIQ6_*LnyCj7UbRgnDOb*@2&YM7r4FkR`2>8JgczI7`Ep1}-Tu!Cjobb2+L7ymo75BOh5)bvb4szy=R_aws zH#&tcJG7GA;6#t#kK!oTJ08xQ+=o^DLCdGzBv$n5E1LPV`Ig6`D~_L$;VVlg;X<&v6 z3awS-M~D7}Xnn1~N0d|QhUj&%2UZ7)#*9frwTyj|=79b zicW8Ye;Z3*lKk%r3>bh;#DIGSddv}-PVyIk_QKgqH6MiLcaO50L&xubudPb?!ff^} z*+{=JpcCFh5`@1I94C@$T8tg{C-I(_W`_%Rzk8 zVi4lTK!W1pLgEH{?dg;4qa7ei;4KHV;Xy%@Ohyk}&qby{#PPY~J1lOWT_~#hxabKj zet4Td2E5R#eGZ{se~g@~Ubykk5+Sf;NX|t6Hu7wSVD~wI6c&seb;^AX$4iM2>|@v$ z05HB^Dqwu?b7XY`$zb~&Kne@MOo43jT}Yvf&^`w+zO%ahFs6QLjDLO^-(-2f_?8Hn zV8d}H()0j8I4D92ifZrvEAXe(3m#w!q_AM9X96f-e3MB_0fK??O-5H6T->hTU5h#o zwyjO7^!99{>KoVLO?#3V=8xP_oxDy?Iq=C&QxI?cq7X*gt!G6im$2clPmZIpJ9?dd zzVc_(*u1ax9a!^+^k;d+tvd^wx3N2g6<{~J24s#Z8Sq?Oy9p5q95lHn0|lk~5jeQU zmwq0~sfB2>R)|H2w=y;%Xr#Zy0_TxOR9&zBTv;K)wVUZZNix2Uj*$NprYBXD-1rkX zFQty3!zlI|V`t^|^pGo`G_$?>RLZp4mxpiR&?KBUY;Jl4U3us?@Zw}j=ZW{};Gm83 zPe#fXQjHsRRO}(tGp;Qs%~!`3$4=XVnz4p^)&k9E>{B<$ZV{a^Tm_05)Mg>0-^Rpv z@U(2=y*D*G3x&{ux#+W3jkx)gQ^p6g)2zGL`-%oCU#=t|0qp%|` zRAK7+NN-A%UZq519j!N-Ez*D|aIVGV3tBs}II5h&l;hi2*)7=OB zM=DbtVy&gfA{#)S8_VcJkQ!)$wSJrt*0eAl8xicH zQ-n7)aKePj6!T&5wU!nIm%^Fu7c(gZroJ`oA|v|^`~o68U17wXKZ$m|mC7$)M_&`m zvZ8>TaNiT*F0~2|;AeD9m-n;_vqVTPi24TPPB5ud%}X!<_Gn4_Vte4XwUpbmJtYDeVK=U9r^gJ zyOAOo%|23g1)^Y5iTpVCmHz;)dYU#=>)t0BKbPo+e_gIlI({ysg%9@{lSkxV(mxFw z>L~x)tMxsUoi3;!}v76;Bp46ukKkJM==;Y z-lCKK!FF|bFmK4eg7b3WUatYWw&UkODb-dnnb6|ik%^M%-|4`R6TNh0Zt zHaYL#2!1;QD}{O>>DP3`V6EOP<)X280w!9^zh9j1OHHE~ufo#v!ya}DvYla@5dz=m znnbqGJJ5z{+7DEJMUQ4*eV3imQ;%S;`fGLDR>re?K%&~nL)R!Yo}YDEpm*Q2v+;R& z#si+Lc#uGHzifZm`DcTxL0Ymm3u!m^LBPkI>VthAC84%el;QKrHpzh%V6|#g$+i7g zrgW>nDR9L}U7+?~eyt?oU*0<@Y?jSEAzza6d);c)M~C@>iXS`X6dIaPwihNJ(IsJ=jEF%;<-e4RNtg70OnqfQ zRm=A_ogyGD-AYS|0@BhFBGTR6-Q6jmlG5EEol?@$Al=+jz8|G_=O?7e2~ z58Jb5%{{c zU`SyjN4vZrmUxg9tM_5G3;W|J6%J+o6QvE`CdVy{8B%b#>^G)I8P9U*c=>$ISBH$; z_&T$Xk!ZyiEbG^N9a^yWwqxE4oqIo?W>m}6^A5P&{r=;2=s5iaA=h01szFGxl3`M38gf<<8~sAdH)4>u-6)kv z-0*x5h73Q^fXno8T5LwP8?~Vp2o6dh{&waYp++V8He4`i-FFl3=K42_3x&eI`}Gi> zMUYPfTB2(QnVL*G)t9_f}mllOA?<<3Ba->YqN!6lL1&3Up9bcN!9{L2$_k;sBNvV@B`35>|}n zRY*2&I$=0+SN7T$_+u*@cFx zPQT)q%9Pc;vS-K$_PXBr()1qhXM#9&H;%msEXUxxa)Y?T!8zL3tjDfR^trMpFX>By zHD0Tn1fE zqxXZ2QBeri$_Z_3Yd7lfJ`wOUTtud5w>K&oc<{Q_%_q7@n!e&Mcs%+U6Z4$GvroV> z`iD~+55v9PD{q0If|X~G>@%z3o3;7+Yd!YYW^+NK&kS19qOYh1M!w0{T;wgEt7eX|8}eqCBaQLd~g#1-Xb9p zRWVTy8)i^^;0kN@M3Lbv5DKLeQ^C+P9N1)gagP<>3;u$)umG{G5Irj&#J0&v5Zi?1 zVX;jy(Ip;^r|2glFcS9rYLS5PuftrHCx2h2n1&=PAH=pv6=@1#c_su(rb6@9CliL< zPlcc~8m&{YA8oyHDK9YVAwv!}ZNx3u-$|Fn7ih~TmTGQR08r4qC$c@Np~1G{`-P;X z$r4VWjvguPjLYt_)AV8Ab&BcG>&d!6Q=gT_kzu_{8OrrI@pj|sPZB8ah;HZg|E!Ca zcK7%H$g5Ew zseXUyHnJ!zF#pJBn0A>j@!C(?%5j%3w!zqT?v4UCew92Ol&f%tEM*a8T(2CTr)FgB z_(1NKUMou0h;-|XnU9_L{X`*`owI*C>gseNltHEqSv|P89;nJXG1Nb_73j(*{#DSz z_Zr$w`R?7WZ?1y7HTy;Y{p)pUq*}h$NpHTHj~3+rCMjDIHX1a^R{r*dOJmB_b}1Jl z`7!^Mums!5j+zx)ie87Jgdlly6_4ph8BirG=}Ox6r2U%l5X;7KXb9uT@#WZrjpp~K zH=CRvD(ii?xJw!+f6eJKWy&;Vs=S#%+@o67{uX$U{B2A`<`$WJBgQ4})Y!C0cBEX_ z=HbsWbakrjv}ops^Y`*EM5LARY*bAL3GKg?TXR1NC9WlHbTl$jl}Zp9uv0T&fIfvg>-pyI4vGvT1Vl7pu5S zBW{E$yjtU=LH2(iwY7fO- zrErS1pFIiM!w*CH=5Q8ArBaFdB#1`D%($Ia1dO|ULy*FWK>GIecM#Gy0%RK47)a#N zMfc-lkiLNg^Pju&(h>n<;2bTEsupCJV3KAjI169(=|xnnvZ+7*|5cy0KRi47LvGXG{!YQcl}?m)Yjt^BC40GufLp zP_syR8P;d{svZ3Fi{2c_e$ma?>3Yr)XeKOooaDJp>_nE{WZ1}^-6dhBJ@8B>hkZ7} zD4Sdc_w^ALLvmtn3O8?ki0+N%F12nm8>WbE#BL|X+ZW#Ew_Yp6talaki?kMb`y7PH zBr`R=kS_f^!jZ68>Ms{4`hhq~%2&YwK1B-S)%vP9NsDKgnK1!q&&jEM>jKOn3>8ry zcLoBBwwF$=1B5-?{3i#>^B;EJQhk%$d)u=6C^IEL^u%3l^?hUWS-0hCwcsz_Xoby% zG?kM1&V2uI#qXm!v&*IBK9*rCs5>cM>ca{yCA;P)28HQS%>)LeVM5J4_gyy5DEtS{ z9yKj&bCoULv1yTUPmS0wHfkTXq~2dm%N0_z6r9kltlsR2xO`gJ=amcNpq_t=O|6ab zEAQY4Y(x)ssb3ojICa+{Wd0YmHn&3YdB&J2#To$4I(|6Xd- zJK?_Q)?!L*5dk#ojl??&&UUmb;VmK~pP~a-BOj5i6tIH*q8oQ30nn^BdD+7Mi~%(3 zxhz1l-sFL$3+!&*^P+ypFAzI8+iStvg|pp^D13+=pjm+(Fe#E|`p;`*wG?a)mh)5ku?%&3Yag0Up$s4C87S9|W*+W378Pk{Jf_vt~QVb?=s(Q_gw&r1QgiNDNjzSvmbGrib7C8{hMb6VWs)7s; zXa~lOr<|`f-?qZH$~|kO0lv?`w$2 znX~w%I+dZQ;|jI@BrjYecov>6v*)bG>u_;l2V|N{I(3 zXIbBvLx>SN{ptiX@)~NYFfx*9bPeru@;!mVmgUgKCDeQ0zFnw<4(c7{fo~?K59`cPeNJ8q!TBIW+^6oyh*O z=(7>-3`63%cMGXze{##yn(T*)rQ{d?$VrWCXFy|v?~LP0pK$dCQE>Z2o(rSgjB1-Q zphLFpuR!gYL!A32ifP{k)N>$Z^uwId^@+ey?SR?@_u8)@lYq9z5U_q&V+yV zw&QA8%*vBa&CTnStK=mg9u4_Nft07XZ|g|f(PFu2cpFVtl2ek2ws|US&`Q6`O%cqBL%oD6Wz!4UdyPgG#W1q8 zAZk0r(+o?s0}vh1`d4|u2CT0UFZNOB`6dAE20dU3Aw$|DC(dCkuAPAa z+-qMLA;wqz81er5`c6ApXy7d>kc9NjdbnX#f;#*!^MZrIK@d+A3i#llPHoH>E0lh| za1Zd;sDC?kSmg*O3eAe(CI-@p!aE8--vB|FK}Gd4JgfoV!wGhW5cnQWDzb%PlL0)U zpD*|xPAb6n&>;i|{hENWq6@wUxQ9CMJ^1+oLdH4hCv;5c8XDGm9MJ?4k9RN_(xgV$Tx zey>IfbVX{ft;o;RYgZ`t{pgj?S(qf~Gl>kPxwEt#aGCI^R}OHGT}=cC-%K`C|E3e< z9ini6Qjh#W1r|t9tj)(nWdrX553` z&@*s)2IE{*A_~?|-Ml;;;2#WOBvIPFJ7M7?J_OF??JVH{ z1au6#XK_BV`2CP2kllQ|z@n1!qk<2ZeEyh9D*YG-5eXfKPB;!u1mSPT8gUpdV3G|V z+(dv6_>_o>lMAvNU{DIO8_*np>?QySO&Mf20j1AyV3UEJI~*gB-2_;H>;~-#RX@mX zkmg|7O&lz{!N~>LjY#oNL|`QBM+J87{&iTy^5pN!l+ut;^@HpNNgZT2aZJFmkz|-i z+`tn64-c}$TR3-VOguGcoWMZ+0x`OV;fJCv4RDx0KZz~F&4u!Ky_R`edTrQkEcC?i z-OFmq+_1Q`DU$?6DT;`y&*%fpb#+qxeZAmtlj4 z=vGkcHcryhx$^dt{xRn@%B~cPsBrVU!97*sboS@UL7>Dq%c?A2JnU=Lz~| z)b6drQqs@fcoj9@B3o~X?}>vQKKRxxY7Xaxd^WzBqRGac5K0N}svRkz&N(|53loY( zv;KzN`HP5(FBGDm?1tW3=5C}_befrOd8lc9sCD6ihJW2Uy1mq|Q&5N2BN$ce&R6vu z(O}Q~Hu|V6(^rm#_sc(9ujcSL1?QRO(`VYd<`fq{94)hv7bCj3%?{xO9WbfB3#R}$ zCNz8>3siQYHQ0mhz3+eu2@3IRZ$l@1V__^AXq3_1)&7zLF5{Q5;RySS%rm?AYYsZ5K6lK2_+C%C_#gTk`oY0fDzd3 z1EJ(!hai-|?15o~5zYe$C0(#k0s*096&6Y$3R)GEY`^Dog<4$%*DI_hBDN?`d5*Fv zyN^pJyBOQ_J$`)lv^q?Y><#gh73k*n@}SaKFZ|4-o?Jz?{1opk1{yS@^5aC8t@013 z(eM|#Z76Ejz@seW3)|?jop0-^9S_Zc8_>x}13yH>Z}#nIqzu?DW(^=zK~jz!Iu4r-(gnLW+x6nTV)0UO6d?e>p@?mN`Y zN7MLHLHn-{o62?|yi8(U7n~@16~ETySJ#J#T!K>PzyFqh!!P zqiffe>gSuUxJg-G6x&a-Ec*MCo*&+Zm|jX$y%AIPZ#^Et(UuekGV&qmmXWk5WKoJF z>2zhzhu!4(=b!tx!XIH>Dm(mq@u}Ksi6iyueFj0UM~~dthSsA`F&C=8$ei*QhI2Sw z8)ONuoRz_8%Zj>ZJt80X$`}?vXOGtEV!WN8CjFp>VG{Z~Si1IxW5?^^Jdu%`ZRTba zK($Q^R)k;_7@_l4Y~qWU?kvp3$DG{#V^m^+j}E_!hp-)FT_qF)3QRZ(!_&`ZfC3Xf z-Pncp*-S6n|L+j2V?*kSAy*41Fyep$BUhUypqC9OFnCyUPJjXfYXDGEj+5T3ACFi(PrcUFRm#fA~tu{M7`0Pq0sSP$&H{G6y^n!73UqnQy9qyS7vLp$y`o=Nf zj*_2MG@tc)5OcQ5^NnY#rY-80M>9hI`q_xh}JYT)E zdhe=m(KH~=FR+ch$XN# zsx3LYei(W9HIvI=qPnYLr50YP`=_iZj-241cXXlRC-@K4&B+DXAsKm8yW)ANIM`bW z5>sJM*?RR2b=N3xNN2GbzwU*zLrap^X=pccZ_Ge z)%Vm3l(0+YvU0tUQagaqKD!N}^OZUarSk=;^FZdiH~0w<>H*6Cd#Ot=#gKjgsdIu5 zNS!yp!ZQJaekGhBM0Zni;7WHRme3ATXX%Hy4F!-oZ-AxeKVu+u9?%7;^9F3~3AU26n&%tUmwq3YMR+Iba@WNTeS?>P+VgQs;rp2=Jhx zWLP4EmB{vTZmmonvNCgO;z3}FT=L0hF!RvU&}g1F2alo>QD9zo>#~_4#C>1Gkn>HP z^w#(KoH&ipE*b4~)GI%1+HZL}&6uWETPGnmbfhjDCnYBx zDGrnP8f&opA!PU&!hqF@s@9&!=o7sN5}s!mCU3Z;IOB0>S6Q~su0PVFx0?;|tcSK% zj9q{HWzsLE`?IrT?q)fx<~M}qu}HO-tm4O3i!ee11t*k9v=4NqX95o;d}NWlDvu@_ zsj!SPW;2bf`M=FPS`}|;aqs4fSmtN-t*$&L;CE=(NqufX*jG|p<{7ANuvJ|a+k0x; z;KiL@mZyBst!-&c>?AgMt}YtpRy_I6XL{mjJcQ=y9R1h6*?HEzt~PqnIki!uvmyDMH42`u<9({G7g@DC=fq z>(=&EC7tHs&V`Rh5udk3rx`x{bd|6tzAPMvBJvc;92|wlO*dYn zA(`Xkiu@gdb!<|DFakgfqmlwKEC9qXoLr!$L4_3nVpt%o0WmCq8|@c}VF4h9QAq_- zff$C93u0IREQX=|qLKnJ3~3j{FyS~@48zF7d!U1=rGR92D4-0QrnN8}W@KIcBud($cZoPb$8VBvuiu(g=~e*zYy22Q~C z{UsF^_uFGBq9OOLABzg;Pnnh=)ufi;cq#e1xlh;`3CX<8#isY!NQWwVM9(u%e@F`A z&(Yv9?7L{oe0frjAvp74j>hq2OO#9sZbq>d9bww@KiB*8LzY4(LrT1U6O^kcdzowB zw-PLZO8y+)wF%`|e=={O`SH1t;`mJ9mDrp`6#D&|af-3cr_UK!I%QY6-oxr6BSqa@ zMqL5Z&$nmaT0Ae^)inHt{js-?))Awoi=9c~h^be+q7DT;3x_%Ny1t8cdQ(~gDLo3y z!8?6I=a*bc!loOdC#`lV^kT2r!uM&bYGDy`G!nWlrS?}$Z4+;8lUoU$i{!G)8JW*~G5 zwpy<{^5*DpiH0X6e-7`8zKG>Uw4&|j3cs}Z9qIUq3!s!FW!u8J!LK0u0ZIv++pgCi zOgMJ97Pu3Hj{kKmNW~HT0Hp-n#7FZ3loGfWBu_YC04ODhum*f(enfCO;4AY3loHrv zfKme20w^VZFiHuW4xAgHl)%9#C2%J&N(o#GppCox?C z@>I{#d)Y(L9;8%$R!THdt18t__+^b49?hX_D~f%YAWzgRcpKiYRoIY9f)Vq`fg#Fd*x2&R2!Oc~gjK9=)* zmWdOer(aVUH7xMJHeLzu0Z(MH;3yRDe`rmOZD+HApQTZwUm&+CS35k5ia#6)5rvkfPDwx|!lztL^}v}iF@d;tI)NLzSL zpkjyAiHjtOLniXKQ)x{>$QJ;>fwYA{-zos;TjAm#z{3mxI1tvr^sNF`&@6zyRR917 zg30uNz7=jM(606-%(9QyVDUfcmkdV`d0rs1o~Eg zUj~2!Y1M$f6%x?5l2ioxRsjGUC^^P;e7jm){_x`x*7!6Omrz#h?bUqHPW@D9JIufC zsXF3z=+R5hED6oqj2bLV>(t59ut&`i?4k{Y-iGi?yF@Q7bIgA6>dtJ!^t6&2*6f;2 zBl-6F`Iuf~l0^cXD8==${|V}`+$g%P$KDfv4u@}WrDrxTnjfcpvL~Tc=n+nS_6DPh z(}Ac{}94hO|b=ne|)61^_P?&Yn zvVZ2lsaCPV+O&qqm5BVJF6d^?e;F#FF&H^GSRv%)b$XUsu^RaEjUMY!qQ$@$cVGEg znlg7PmE?uEF2qN}8)*FF#Z4|u6o)%fF32V3tmrTF8hh3U>Wl`4nX?(Rx!}AABYq^i`1niRwz;1(;&dw(*dljb zS^7O|yIArGgw+L{|^1ru{JdI-=Ai~Z?FMKxBcWq zRITrN*egx``#_=u)*Jz(+dfLUCP2FF1C~L9%}Nv4FVk`bNVk1JGJq>5Z8!q^WiyLl zS!%Zk+b`4l?h@bO43KWXNO+|Q?3exPu#Dvi%pS~5L(*^r_RD6pr77$d0n%+BXp`74 zj{hoqquJEcDIQE3o#M2P(Q@Buh}jYq*0kEp)x}FG-sfIRDMtM0kBcGYdgJNbnP*EX zelUOC&r;mUE9?Ub4S36ir<&u2Z{fb@!Lf3u0fFObx1rl>d5rJ{!*8A666HKj9bDl9 zH@F1BZoCjitv8jaE~W87{Cw)5}2$K)Yu?Xjdk+t2Aq7j$B2BTpvFe1 zGpMm)2czV}k>zXCb?Ac{8;>XGa8>{#AK_nz&m&>>VA5hK6c`^LF7!hJs@>-Z;CL3- zz)sDB=cACu@RV-Z*4k>0>K$py>O*gd5tKmZAlR^BCJI;YpS@D7nW|%~*rDH=25SBa z2jTj+ApS42DY^8XAndH(_W34d1VHHc^<5nYW@(JM>6?6GzL$5Xbdm@I7Ds z$o6pqkM-g;d>)$nGf(~VpJdJ?);$u@(Q6mAyC}GIs3gThj4lsj1l8g>h0j}KNn_D) zY55o}eFA9iXf(^JH21!_Ol@yy{TQixUaL!OU>dp>@c4xd2mR7r<+2TpfX1rjp-kN7 zYFa%PT-FohmLfL8s!L#n7CEC_#@`<_fu;q~$p zggx{^#;goKkNL?-c>~epUvIPguwZ_=FzHNvOccA3RM*@UKH@b-KSV zqawknr~u&mdqoKXSs8#&c=;m+CnrOBuwgAv+`B$%kkfiUQ-8Z2ebKFs=?Ob`_Ke#u z4fD!-kC~mF-rI33*C%Yv7twkaC_pPE%F;ki-j-K=R{0ZSrw8{+y3y&oSlUnl9v{eW z3aH_#&yB-sl=WF7(ZlJi+TEq!9AES9Uk#A?XVnlv?VWQm`u(9Q?GP<6yza4r*j^6 zfmge%?BWBwzrv)L*7j7=GQSGS ziXBDZ3d^&a0{#xcI`h2gI4U0j3e|b)Iq1A{&uRiF)F}d$8Gu5CHDDt`<)flDK%uJ4 z02Hb-@>Jd9-K-{nLRFaoC{#sl5oc=|rowU<3UzNDpir}#01CCZq*wqLp(9PzF%uXXap+U(j8q2R%me~v>@ z1jo%RKCc=`cV9lL_Ok9J#`6$}jhb`#t|!w)V9-lzY4CaEz74;EM_rRa+H5mksSZw~ z4D3i~9`NQ}##6TE)wd(mCuB-q8OZfAn=l{R6FC`GrUl|a66mW&sx^H)tcJ`Tt9>X& zx~Uv9p2lMNzEHp0{Da!=X$4c{aO)Q}+(~?;$+P335FN}j0odd*gJo}fc^pS zR3&N_m0y6$6+f(T`i9^a0Edx1APRU^onfXHxH#;gNR% z=~^)kM!LoqZTZa-Qll14U>&T}^_g`@>4>v5VDaMQJ<9)~UtvY;IP<5>(qo(| z5NUvoV;_U$M{K!qvmCOtB2~HJGPd{a6hrr1K>X{i!J@(Uh5({lO{0GRgUNkc9n1O) zllu;X$@QMUq}?FLn*IkS_hM&4_|-SbR8Q%C#>nny9Ijua0*3bpWuw34y3$c@f8_NV zw3pce^%TUVo?=MoVR0>TBCT1|r zI}0ME7lhny)9G@vUwsEwdrZ%#?UA`Y2`bSk7&VU`uE?G?HoVAnDL?wo&^9bo1<$DF z79$!bIIqxUWon@{Mv2y^tK>Rqk2mm+@%sK-rNj)L_Nh_xq`2k+U8>u~+DSX~AvViW z(e7Pn{-Y1gEcdlaVX<{iWt=fBvubciq+Lg={qQ!?7LmuK`2S<~2@zMs|! zT5-?BOdm-HRAO{7z0n5fQ(bQZg^*;f+!x%8I(7=}n*PS~(?TB=o+kp$8QoEZQFczq z%tRz$oaw@#8M>G)*klJW>w1HClul}6`XZsohOiJ;s&yCuF<%zd z?bnDM2Jn%{e}`b5dg~o(y(++TBrJJPrB~%}1{Xq*L73tEX5RyA%$^p1P~#or~tezK{ul>~6V zk2oxA~P%QsYM;*jKZH*CDh>oynr zlxUhKpp*29!uJu0C}#_kMSxjDJeBH;h0mw=A|#T(8g6(5)f-Gck4og!5o^{GI#$8Y zDP84lzSF|p{#wBkYD(A;IeyW6L)!Pfm&QP+EfjM$l?0kIA<|y$eUE_%9e-6pG+aO4 zn&r9c@`v;BN9Luk@T-*k?GmwTMEKg0N|*G-_uZxAVS+EyrU0@Ya#O=Ws zQ8-126{Dt?1jWPt_-EvQmv7cauapJNh$2+5UnA2@1*Qq)df*)Rt6)oAD$X5CUHYkD zga2mAf>cw13@@pt#3cOx8FQABEDrU^rJWK3yI`=pV(*pX_r8I}VXg;EI4IX+jO|Gg zg~}#1umdKFi7L4s!o{fnT#V!YnFEYUa4HJ|?VutGrUCGN1mMAr7@PtRscCR%_!w1`QQ>7Mq#;_@Q_!ffqV7rw{K>ixztGS^p9wCK?yH^=ERpG zwHKvdg3x~(e2GGbu|D6>SO;)xvpgcCt}BAO{fbJG)<6?f@cF9FYavqefSGzvme%Sp z7Eqq-A?{wNPhG}w7@Y2mR!=awj#6f+Xq>JT&9pK(WIok;>+<~x;Jm{^UX0}afQ2$` zy&`mPT%u98KW=k`b|~}m zdX9-JMmt7c+q+^$u@QEv7pbrBepUS7h&_K=9ZaaUkbUq_r!*}E;%-RWq(+kwjwr%8-`jnWyL=>H}wo<0lnELi5FiHDmbp6 zrcDV+LAOV}CfQeW52t0Gkzf3FFf3tVYu>iovgg5 zYH9^Nb}zAle0MIj(yWJ=6`YMISx!R*tpCtd9+Ld%UF4Z#4sIDtByWf-)>~1f*g0IO zJE(8WYQ*5aEX2bO9@MZ%p~M&rvj0etWc4T7u*jd(zOu%CYzu2+sPX%nw3sC7?{`iN z3%}%7UeW#Hrj_SPfw{UBM4;+cRs1m6 zm`13RktYa2)vdgsFazu^5cQtZ0WnCdeg>?wgzGPDG5E%zjs|4Mq# z{5VOD?C1?4A?AH?-(k0#3Dc5f?bE|to7E&~)35n*tj4sszg5gNAYRcjS={5U1vYdKrpH=WD{1yDJBMJ0 z0@OLYMk!H_#sEG9lsWOSiG^0#wO?fF1j)2}I(j{H(tamw)O@3QchX37boM^<*T5AD z?`pRyam(gJ-XNhRh8>HI?MVx9ZMBagE}Xg>i|PB|7y+db1BM@?K!tldCWfSoE z>4|d1Fn#co8l``3z*|>mkbHSV+1TAbku27{?dK|r>!nf15gd{H;ROS?S3`bru4wNqA04OrXZrz};!y?7&&k_^cpv5&4)#=L zYj3QZhkNTuc3y2f+q339`J6-5V$?5m{Z{F<2aBX}n>8zAndSR0Jh(~tyzeZ+5HtMo zNv$6^>@DXp$4`UonGcT6hd;!_ZGB^50PS~ECKu(lpZdNY z4!C*Z*Q>oTR@|9sX?yk^6X$Ie1nzT2vQ^OTI?7k2a=*+59p$eaWu8*iqQ4DxaizL1 z2C*vydLZq7Kr;WwScj}DOHe^%B7KtLIqT`R6N1bvB8O&kX$$W23IdJEw=^G5r#5&x z$s!r;2jbQE5?$ta26g*e(|&b%2}63DT;6W#Xb3E8zw{W`+5y_=#z-%i?^=~x-3H1v z+B~0;jzb_k@+eC=_nBAjsX^MaO}to(D%T%=MlfmVKAnmbo4`i&@h0jF9fgJ5VndV|kI$-r6p6tmq@fl%gkb<`lbe+u-0b z2`c_XE#4E%ui2(pk%!yKBrQ9(wVDQRZX=CLvr8a4)t%&WEmOH$OZtAUKg4yx)SSiM zYTl<8wCO$3@Mg&PGK2Rv?N*>rnCWx%1c#&epEIW4l~?Bs7hRe?yO%@R%%<^F(;|oehDcDgT&>hMHe7}g9EqOR)vdU5jT63dk2Sy# zWDrEK60<6N6!@+&RP8lIIle^DtEchqRK(Xmqj#;YS$Q0`LY{OV%St4y8SZhyt8FDu zhtO|l&wz^`_ScY-gWl>lc_+6z_t!^7tKw)54dVONh=JttDjX zm%f&SE~FlIXz;wBi&XZA`S^q3W&R1S)^3`~T)@i)nu9#Mz-B)UNh4lo>YHg|34?{GfKdAjmuqbkWJHl2r0Iyc51H>G5%rtDQoUE%wOSpA3gIn;!Fz5XEJ}?|v0cb{Y;drOHJP zsjlM@zk>x=27k7c-ml&?7kxcGTiRIKq`~@D8oKa>PnAUXZ7#=NHM~35RcG?c zbYo-Xqutf$!(g4Su~AK|t%}Y2#PfSS+L`HdJu&R1O)1T1i)}rg(Ck!;8BYe~S(mCg z-a6k-lLfss4QX{j2=)A41~OIP)oY`KEjie@#2*$PelRQCC}6v1cn z3vXkvuFb|~alfkuj?Cew*v7^m`l?@rcm*!3>QU7#)V0bp#|w%4CMPXQ$L)W4Wo1El zp7X;f`KuANCf@SywwmeBL66{+C41S(MsvkFQvFalX1lZw8i}K)2t-&SBtv*~-kgi)#!G()Hr!Z=loL3H7Hsl9U*XPcDJOYl$LWH(_QP^$s_q_HO=NnG&GyE|j`Sbtlv+wx3Ri_T znnP=RKTED=Jr$M|%EP!m!|{;rsJrVg)Z@$KH)%fikj0zOOg3GdB}uuFBn|O;bz~0l&fZ+qIn19K-aL0py-58!-1=e8P=1yTl%+pzy zS(CYs?LvGP2%5;YxY3)Z3mn;{1;mcn{G~*8>H6n)Z)Yn!+RnnPu`+nxym;(uU&OjXUsTQ$7A4Ww~x1Zh{2i^~*ooWeT&W0kanYW9Y zmAfj`I>wxa{iTk)x&ZbD;fB1kN<%YMU1Hadi_kTDESEmi&YSu^5}S{!({ijO5PL2B zzNNP}x49!Qfn$j6$}-p6?P8-+UX9TNv%6x)d{@6<(MNbPD`Z{$=@>fZMiJZ1%N&@Gk!Bt> z@~U|eIo!0ExQxVUq6!I#1beisnzDQ1uV*Fe5-vE(<==+inImQ}j|R;3Oq+S}@w|;z z6(AStl$`b2N!o&pw8jiq<5!{8$D4ns>KmrcV;XGu2!~CPDY(;S1cf}8QY8L5Ae!x< zw|u`kO(?c)c&go1`tdo_JG!z;o%3_lrgz+d0;WpI$;r#~l|D3P(@I~oYaSIL4yJ33 zYS)iOn)vXPh3D7G>aT>Eg*B4d9czd_v@GkONPp@+SlXrfnF5u!(BQvn zKIBP{zHVK7!ii7vR_~jm&NowzX`K$~rQ`S&_5vD1O#-H40TT+IoswElsYmb9T33q7 zoibg1=cr9APaD6D;eI85Ch&-*vp{=J;wc|OR0I!1yCge0&F+s7LkkH8^@lr70m_L^ zQ(K4RjRw1K7RBrgTa2uooP?@8BEBr=c}fQ_x6E=$awJ}^{d)Fc0=gI)`4YX!Kym8A zXW91;uZY5<;xwIziEE9<$aclj(PDQ?IzEQL{h5W#bK-HFr;y?g3Y2yhr*pVSwV0w^8H?^iu>U! zeXSxCAw0m+xcJF*yTzOW|1$f#Q~tir?2Ltq69KWU2 zoF zHDl|;h$W2utwNZS*Q0yVr@buGRxG6&9y+KzLZr0#x<8XFihL&J7A-OFJ9J%yov2$v z?oHhKU+xLy_<1;|5m~9amyuLXz*3^C zv6VY9o!!_sH}_{X;?Cl>;CYR>jjO>y=y^Z0iDOB6k1>@Ct_$J#v4%4tZppMd6fv_u zXu<;e@xwIj7$?5>6<3|Oji}-#QqAz)z?T>NFP+nmt6scKJE7msL@RM+XiDdrdBN!Q zXhr6+mpqvX9c#<%mrj9& zUr0`_`sP?h=HHjAyn9*m=X$ug=zJdSb<~dMW}0Sr0pvq_5Kh?eVKoDNkJ^u~wH<7P zIssvD(Czkh&-ndEf z`M&A&X;dB7(H7SvluOFkf13J*^*~*%Mfp;5M$bX)15{qm>nC1_s)7TjQnqAKXT{ez zi1RLFlD@=6n(aFH2;GzgyV!lp}LXU{Z91YgDwJHH+Ga*lHA`Z{JB}Ky-*ry^J zzL&(7v|~i&RPGgd7{;2x>kCg!B9M3O(2HfssNFD>zx?SuZgZc$&Y4L+u>eN1;VxcsAerD@EAjUrFVE=s!uaaA^$ zeL8K{Cg@qIMS%B&VyUllMWW+g@X1~{imXQH(@`E`i#6FByH1gvN0} z<#vYaM9y*c8~4e$MS-lK0{*qB3Bnw_d$bE=(R@4!uCJXUg&|a`ai2)he0s58p_>*3 z?5~!E8NN%!>%pbRfG7yyt;cK+^znC1UBue)+|z1BW_anGNc~9BXC%@A-(*9#F>n59 zWG6L;r&UvvO!;#q8#(#BV&7uu%BK{plG&xAL$&-Dd&4g;?CG(DSPs>`==K`?Btr3} z+cu{xbSi9UqW!&E*7!N=_+8`uoVfi>V22%b9UZ}P6odG)t|aJRi#`?)Iz?C4an}081B>!=&4pG zZ0CO;x|O+H+VD=2@$upyulbDAZtJ|wd3a`wkg1;08V$|pmz_8fHRJUt z5MEe_+-0koWGXC-=fvxXy`wlX2}8lio2B2%ez79dkiCi1ny@pcoQkTQQ|Yj9REVs>(p>gLoC(3pszUV`5eW}ZZ@fLCDV0#P+liA zKJG|bKs!?~4FS7gF%W#VM3Lp+HhOwPQg_5qY;I^QdSfDrw-B9Qd#QGzV>up7Ab~n_X1XyJ$mUeUZ5=3`K@x%sdb-}sKr=CZ_#5y zkt0fVB3y5&VI3W`T&MntbpOrIH7Ni2XlA;$&Y0VVO{o4Y0eH*&isa;**xokSt5*F5 z>GqpJ)$PWs!T3stz9MUD$L}Y|cM+lyb(b(Q25imoZ_r~}>(5`tw1x=2?ok^Yg8qJh zOzrr0AvPlkwf>xEmu>wjOT^3KIVcP}rbR&e*J!rfk;T*NDuGS^!@HZjTvP9>1V-?# zcOT~7Y=H287Y%p6u25M#7f=*fJc~wafiB6Gr9SRa=f(J5C1hU%h6LW$uhqE4)~}!T zsQ(H-k-tuUKMb?QZaf><$^(MZ1sH-aPHM+FJII(;Hlq6IImldgq#k!DKa~%Q_Yvw! zzHeC`cnTRzpZ6SU{6{14pi!Y8r*wWE{e1J|MReL10ikJ*&ZZOJN9`=KW&P1h9j;h{ zRXDujr=&)to<&qVglUTg5z=+dJ)6{wlxSi1c9?Y}u4R;Y)~d)mu^NPLu88piT_^&Z zr8V$Wy2?$u^K^-hOjeNa>M@-v+%3PYSze=i?mRq42stnE*3Vgp`I(Nz@0er}*d==~ zQ=P1>20%93g|>5r*jx(J5l5vs>dlPA4ejS=MXzijwi+Hg#ux7CZ=?8#V^XvHP4 zid}b12IG(siab15xYGqiLuN(B$>Y(b5vmf(E0y`DAhX7h^<^VBQ6|1I^%W^J`5|83 zp!LN=!hQFdSC)C9?rudVYd#HKKzC$lr-ODULj5p2`{pvq| zS_k{Fk`rhww@Lp7uW#s*2F5w;d z!3SiXsF44YIsG*5$NH7k&j{L)AC^!Qe*BsN_&wm25O;F#9-{$|qOb_sgz&x~^Ztc= z@2=i$m34rYzr&c#f&#A`mGJ|aSG@-O`vTqHV}1gs={AQDZcKg#Q%d$gbY_hZSgrbD z3s18VECCwK+p4EM7u(3B5X5wy+wO+x?^Qs*<-U_G4@3Sjg#>1zNS7UWgUcYEnyp5K zx~Vp4!9+d&*ZBOEIO)$*@}r)ZDprD(i$U&HePdKZ1kB1gi6fRsW=&ZA-oXI^pZvsT z?c#snV&0cAcnG6~eCp!F3y`Pi9D+2cRP%vykW1>X)tQxxSghW#zM;>PapLLWhARM7uz9pX)6`j5&?}7s<@#%L*?uovQqOC^B(;M5&OKwNq^YYrV}5!;KJ0l z5pMZM2W1+9vM|}dmbkC`W{=9ytzriOzS(cHWq4+P!Ov4lEYhHLZHFo88i^xfO zAVIWT-DMd|ESlrdmW>mJei#;?pOhoCY$*)|L)9DHW5LI!a~b1A<;gIKGj_3_3zNF$ zj8e*9ba0N*UUYocgE1WU2-<9ci7rloT0#PEmMo9*Xz>b`9V$ENPBKD&CVAzHzJBfe zw+zz46xUzl+`*jD6U~@%zlkLb6%}3 z>$)OF*u@_4X7%f2I%;-O}+LmZ1h| z>u%d#{E^PtvH!ZcwOv^x8&OLakAW@UVj>wX##~3L-kh z*GWs!DZmNV-*0Gdz=_z;QTEH4NZA_4#jA0Q1^ih=amJFtPfXGnkrPb^i=v=SN|aSy zl40}x}qv+-N~+nOorG$t1Og##slDt=z;YjEL=YAN2g44(y_ zy9juViyCgWHpsdnIhyJhPb}_J3~b^T&vXp?^*7t^8GNtYa%R|AJa@~V_p4O{V5RRr z_`Qod^2?9SrJihoHoKlasM1a!{ZRkV4R%5rCw;Ox{{%su`R_utj+x!*BV`&%>#ukb zI8C0b3BW`I>aS7V5vC^3#+OYoSP^4({+x$M(3XQZ%H;fdXJo;{r&jA)&6k2Lj~UWU3L zP9_bFop69Xl+7wXy0c7wlc-{`>{@-XHVI1VSdnErUXVNW8ZO=bvPpVSU9mVoLusn@ zQzE=%;HLN`77977#BRC|wQzACdN12QM0SxsX>7XN?g2}tvDeD>Cnvl`BGn3=@wGB> zwR(;FYCPg2Nxpz{=|oHP0hGzX=9a8IW%+SD*-4)q#vWoY{1+*d%NS?c7P!w(WTFOg zqC8@w6czg8zg+`k`Ktp$KDWgecNKi6p9_Dy8F)xQwoI%*)*r?LcOG_J5EDq&QvFJXc4*x{bVgEfn%75&_^3J2sIAS| zs#mn4Lg*1p_l4RquX|aZU1YUkT47y_UPY;fZnV`b9;}E+t!a?($C8Tjf>@1RtpY`s z04({jrF#6~m1^X$dY1VIo2336XdWyJkm_|L`;FD6!^_k)Vq%J ziA%t{#!=+Q_hJ(et?XVUgJeBGjqXWE2kc%M76M8wZC@EOvL0F~i~qQl1Hnr2IPz)1 zFTf)K;4v19AwvugY;+G=#_!$LU)wIA1?qhm75u=^QgR?h_v-d}ubRMs?yuNElE)E+ zx@wiZTk@Ux%kn)lOAaviH&MU&*N_z1Wuf)d4*1y!JCRM^$wnn`Aa|S#ZA^tq!#_@L z3U>vX*@6>kDFt=ftl*!qOTqb)Ir5QoRAHaSxZLmm$*GH^Xf7q6nBgd%gbbLsArmba zWJ$my;mkwf7ASTyx_01^Zx$k(SU?a*3>pcQ_YGp~7#zvqC@}kz>u0-A!5S@pcciUR z)`vM@W{Mzm>Jl#&{i7Ic^z25;LWRq-ObjWiO&=3&T1$q%$t*D8R^5{=$x!V}@v=n; z4}R`YvLohY@NSv{|8#wuo~pCipp?;G8L=l@Oh@r6k5NJ}{g{HD`t7As#*6PkgP||g zb0`MeqOVn7viKC;d8((Y^RW-5KPn*Ob!Mv*!nU7e3S0Yml4g6Q zt@@{j_Q-qJkBJ$U7d*Kk8Y?HV-ITD{doC#rsvpJKNE02Q&|J!&q$@>Q%CwqhB{kcL z7*SIs%S=L%^&Lxwrxk|fk(r@#mu^iVm#aVY=FvjoN9dH^o||zG#d5cHpl+#*Quq9N%!I14G_836KOpLt zTz_kQd-k&kA$#_F59mB~-v5U>Dknv{w3KCB07C@cd&ng?g?mV!4w`pS*+uZz$vU+; z=FmB6J!>%_P&k1h@WH)y0U@2I&V*OFp;KlF8uy<%lE^16alX|rBJ=1{;&gXND1Nq# z8ofBUpiSTomCmbq(lVQ-H@ds%pm(`$}N5k?jm_Jq)gu zF_R1b+_&7lxF->s(PdFhds2)f^!Z>>o@@|TOlUHUN`ho=@8dtky_gAs5J5{%ab{^z65RM8_6ASsu|$fT3uToKoRC$4r8-+ z>ER~rv{XrE2h&k_rdP|Nq0~+wL$)Ju^CDBG>282u$cY~)rcJIy$f}Pg>-Scg1a}BQYdoiMdswzGU-D;`jytH9QzW^1>DE5 zTcCWKdpmW&#^!%>1)`G2wd%!yj|%Av=_mh1=IQpVTMMP!+crK_dpLu!H_#}n zKsWyF7I7Q62dXQ#ZvySOm(c&zeaBmadni{eMZsIkL-ZSPOaj5ZOpCx0XeXq_0d&rQ zkmRohKj`0LbTK&Ini+!c0JA_lGcV8tL?lsXC%0H|5B>vp^@V)fElg8Pfo@8T8J_@; zF}?$iGA=-;K{$ZE0P?#l|94wRpauAWd)WqK5a?zVPA1Skm;E*B3=imj^b9W0Enu%P zd6l)CC}%rkOBJc^Q4cQWc|h-y-@=`GSAFv7xNlm1b5Z?{td;uWRLq0%v* zbFA`OS&tAiN`>u<$VKgjcamRa+Mli9-2B$bL9~VmzIM*hjYII9BYRi;s}A=bqI0g; z4-)rYl}!e$9SDKFD<1ZF&lM0pzw2nUtp3#iV37AB5CP-dHxu!Kwey|ZBTnPqH=`ZG zxvf~9ee6^MYqty`1JQa9fY;6Zo=9;3k0N00D0x7q(O`f+zx=x^K#%Xdjs|GqdmqM; zwEz0iZXwW2=>quY1G)#o-*q!5-x5~tuDE=sZDG7O6v5=-*7l7Qy1@6Cm(c$pvdV@( zCr3wsr8r&qka5R&!9iYAE{0HF)4~(8qOH^poYeNPzei>L0{N1Q?g?@Dwr`gUWoX{GoBYWif9`c7gYc2N zU-%^VRqCnm>f0mt(mm4To5(a*t>>-!ld$I6pBJxFSUbw-i%Y67e zif#NFD*}_uZD5J&wF}GO`L8;jtFOu23T8??R|R(2f1XKWa2PxR7-Bbq0Q6m_27n>n zH2@gmy(kC35LZSL-hZCGcEw7AI_seZfFY8(|2zXQmGSE|uxpKGyu%QH$7sN# zC~Pt}07LAK12Dw9t9M%|9iZj!FaQ{0Gy{MkcE?q(0sp>0_rRVtiv4!4NYBw;SEzf@ z7s4~<17=%>-NBM_`#V)O&X>6|NLPlg?jDyW#4m+;8e%LkDypN2DL7dSgyiQ~Dc2{S zmoSH)eEO>Dy)$3&E|MXx@(f!Uu~h6BxybXZ|xa`cy%+Q??{ zgIPQ>u@YGoFR5g`)r=5UPcw5pOCCFn7xh}s5=hm;-7`0Iq^;8ugwz2=ida6f7vvM+ zx;fT4cRObtxlw6KS4Xlf(>sZp_;1{zHFGm`O%fcdZVdr<_2X4N>9*v*_`X&lb7V;^ z2Y0qomNBb^6Q7vmhpqCfRELxd&qXst)bqQE)#{Z{?lR^JcrF~0O7r=t8f&BnaJqaWW zEFl65X@h|FU8fP)5B_TKgZ?c7`$4cZupi)IAZ-9qORzPt9|$%A`+>Bt58g7cAHbIb z`vFOp0DBAg6qV>TP;4iD(Q z{|t_#ixOkg)FZzJiL&xFg(kUU!TZ^3Ou(MywK(kFvGVV&Dd9gzlrEyf)a(%& zoR9`Rul!!AN*IZd&_ejtA=)5E66y#i^~28ER0JE7Y>Q#!?MYcekZn6ki7}YPpJI&F z2q-ba{yhNtI0Awm&9L@mgMjMPZfgGv5xK}610&|w7~HtrDOm@v9(rvimp6)06;wav zB!w>r4q574p^Pb&o)AfuV;PlTq$jCsHeKRf zvSP_x&zH^yeAcimD^g#!;1}!i&Bj9ahZtwtCbV$nrf&1W#}Xgc>|c@enxH9pB4M9l zHt1HAN_LoUkeJ%>gR^X)zlu_rNZ}Y(B5cVImG#o!3=m8fCCm;qYY3-MVbGi3r`EwR-72lr{y zwVse4{|$U`gtWWwVU9-Bp`Os39h||?8)&C67#H7p6%ektQP@_{fMDa^gZ)zn?;Qc> zR;tU|*g&|_*$;#(_XB5eU|g41Y7!nEB?lR6qVTIav;z?opw3&piNhQ&O3JEXLg*3x z2XIoUowO2Nv-9+uCkq34bBP?X@p8o%#IO5i_^M&%r46;bLn~$^bN8`!ODAVwJFb-J z(f$1!X@{9>g-kB1N<}?03pY47i?tI^5%Lpdgm|XG+a9uC7^#wHKoKH;fe_$)1pmSF z=|Ax6WPB8Gq0;Jx{8~V%wNTAiXIy~?J<|3t-IAz>3YsQVF@razTm$}80KD(9Ts~qT zF!X=%%gqXZ&UJX4>(t=$f8fvguU#~w{`gtgnLAUmELwbh$@)+oUZp8q9h8=a}rnHYp&fFtY>HIb~f+-oZ1XvY8n4Gr}icsnA(B=-=-Gn-=U$Lk=3#MVzbY+n8TR4MiAK<|B*}Ef4vqg;^$HZd&qXDh$E!eCXVhUKne2|7GK-q5ez`-Sb8gV!OFkqT8 zcD1BQy1rdy(SmPGH7DTTLBXDlzb z_XCbZc`fBVo40@#w7T~26nR_}sFD{d7FOraLuqn)*@)Z`;{m9Yrlc?mgE!{j*FS9g zP8s_xRpcj#%cO?JxyR!#&vm1y-|j1bZ!4QAu44`^j*ZxM{2>G$*d1y51isci_%?G% z$}2?jeP<#+(M|4h3H!do)ry3v+4-dXHlGTn=L1{!dFJGe*4kL`Hpa5?fMV9lqA50J z=m7Na6&ERssXEYUOHSsmr#+D0D?@?}=aqJ$>&pF;4cL|Z2VbYI`6W60CoCJJ!o$Jd zp0>B=pO#J^JDjEO_V2+DFznfhiG`(_rJ8eJ?teb*-;+$h*sHzH&&s_fyEsJpat?090%og=}tDS4?{~=n!!%$cp!Y!e5 zn7QdxIj~HGc1s0WYVv0};;V|$-RVvI z-cnpBOHsU_d0sPfnx?Bq9NaIsAukvv*jSvb=7_UJ3tf#xU`1FCiziGEIlm?7Gbk zUczrJOrdO(WOP8bC+TCspO|fZzsDcLv(ao(;gd3DJ*T}j9B7261<+3A9Abv3YB?7h z)880XFYK@xUBu=EcK=~oN<{pRnU+ob|HibOduLi+{TtKrySez3eKy)QYe;o%?Q^-; z4JvO<_|S2(!4FL3)9uA{W;25eQ&mI>lZ37h2orF&tkUzj(gPWHOT#!pHjS#(0J=N= z)@P^*AISY=@(0eaKwPoK;8~Y6xTm7Wd>2S5Ma>^cKbc(ydWQEC`-qPc?VbHEj zing;0EOEZV1Cm=Kb}wR`z8tC^aijj6zIl~U8Mzq>rcuTP7RCaR^Z+kNH|MZ@RXkWq zr3hplJfS8*(SrQm{4<#<{|+;STK9gNujWJ^t8d>Bpza}X$&pWq2Ez{4YnWBUY}6a2 z8D~%tuVUi0(I88bGr9BAoMXN`g|VWW^pSKjlZ(z=d){qqN_dxllV@yOyIX6M_=D&} zR&XcGZyWvGQ&|kINiu6R)5?f|5z~2dbTaN7Y77SLF;iRs%Tjkw5u~~|q%Horp6`dk z4R-XFk4r|_-cTS!w;P-+W77kH+|)r=PmJHpIEB{1Ze2F_emyr?e7^cPvGeN}gfDYL z@`R2Stgs8-c2*gET*IT5028Juhq?#M%x2#eZ*U;W`r zp;lXm9kizoI*QJHi((y?5ouau>T_=%m4X&oc(yC&+{{E|QV)C!a$UsQW#3)-T1Pee z3YRAi_c{5_|Aebq{mfFckcPF>52>S4X{K~_|aAZtEV=qNN6rR{^@PWANFfGV(Z^V8C9Q!ku z^wNgeCJnyHMx0STBlWWF)aIEnpXr3CxJ{enwA{n2Uv6czK__!5e!Z?6;oK1q=L(Lg zA!zH%Po|KX+gS3rsnKIjk1NZ=Rwi#4{6|gJJ;hB@&lzf55MA4rQV|halqw?1$`C&# zN&7+N<-6Noue^FX3>aM~U1Z||C1;vT;k%8kKm5{3xwwbJ<(I@M#yf|u8`zRySK-Gp zq$;(_6>5}FC*r@zG|G5ksU^RGX|funs*5n0&^VKQ0qGf*d>Tvu@NmWTV!8qE?hl8du3ieVZT?gDOqc zz30i|)}!1#=H6}s_xNJ2l*ZxgG_e2P-7m%iZxnAe*lrhJD|&rt5!_`!Y( z66eGQ*;s9TY@uy>((9?-MAI1GK(CuZUBLq8) za;#U`4cs{aYli#G(|QOpO-1}{+JR!~+s!WfmyGm!@5)kJGY`UGM<<b;vc2q?38CNHHHe?;0>^Q9%w`A`hQC@HvBX=5S*=a;DHFGP1=p zq06*W7Kps`X0;hhStZ4J2I56)BM*ieEE_ncsLH4XjU^+d7!^!hh2cjS1}ZH*$nz_w zq>MbH)i^RH9nw%Pf9tD?HpPdPL!|XicNRn7l-TK~dJbUdc$39%Oj`E*r_Ii zoPK@$kzG<R$Nud>~VmA)2Bt|<`-6WL4!Yvmi1H+gr#&cxj!sKk#| zx3D=b_1Dv;VJ#E;?qTZI=dO3Li0u3j=OF%7CjQyV`WUjm-TGLKh?V7*QVtOz+e;23BCa3oRA&F30y=SdyX4y0Vjql3y z$8zex4=zt>P|~4YoOTxV54H?|@jY5kQL?yhtvG1LrkD_$QYZRp!!yt&;rSii>@jRc z$SIlY#U;lvM_Kj@vPM(BOEO)E{D+{u?TCss{oE(qkx=nzLyNEJB&HrokW8nBGDfJe zI&4NlrC7lzbK%ItHjw7mmJ6A+h_lWe?4O(&Pxu(+H(MLBhejqDmV$=(Xsz_tL(7tI zMnO%O+@7U)UmC#GZcUz*yJr~O5G=$L*6D86nolI3wng4iZ9Ax!hB7yZgO0ozF8TFa z^)HqpdHj$ts@8wJeNa+0qEMEjPXYRE;v4ioV6uABb|#q8t|8w$!u=P`{tGYzb#>M7 zNE@QW5Q2?#;C%2@*qkI?BDy^9I>58|ckEdy0P1fM__zW18F*V4fRbByvjIpoKY(ll zw5z|6w}lJ(t2|s{hNvs4vPmCf z27?N$-=_Z+Aw_UK+4P!S_mW36U!5}i%l2fj7<+&sYA?%@*5zrqe(H+R+5^EzrWCjt zEhA#+cRDq(IZm|dkSG{2+1%}o9D`4kkf?YXF*h@M!O@bCdyiDl#>sTfSknR;rn=y>Tk6WkT^$7wtgKg*c|{FR^iaCUK8fQN^~Pw! zJUV#J61fvCLzeb+r{WO&JM^)5{7nn{jGmk}uY!hfMKdyN($D@Xs?LxIk-#JQ;Q^!l zk<`;kX9fVCZp#%>ZhuvY$1_Y~jj<0Qbfq8`0{hxUV7sGs_K3hUfm`mUGpNPW8Lc9 zN`u~Yt*dUX)cq2D?|yUK&9YsP*btk~-%3u+8l48o7Au$u*-sa33 zqBORE2F_e+e&2m9|MAE6)X(d*%w4y)6;biny=)u=$xptZK6J5A&O*B>GCuk;U?rL-tC+Sd6 z@A=z_o}B;eqb+i}k%fQ;f+`1q2GSx*IPgoLgc;5V)f}82t+qc2#0bW$j1mEf><9L> zs{S<2yi$#KM`2{m8}@28@nOqx##jfef=9wf9UW!d?uDhr#7!OUF>XsEG^nC&W|pW= zi)nVr3QuF`W0HpqKNOj`;%ONq@61CKEXuBMT4rZyr>0*H3)7qB$0z&L1;5H#tjSbu zgtrLDWw>{fgbT%9nNPAC(9IORNJKuS&??9~Y^1CPkRUk23$R&)wGfU|6#fguI+U&_ z#|rS9D58k*KhwF#8cQ)pb%(WDgOy$29Mc?YpzZZ9i>JrZVQti^SC!W{NDyb0`1qxb zn!?4AvU$@{Wk1KUvtg17&8`<+rP65rO4I&N<({DHYB_zZMztbG!mqSb@3hUNp4FuT zcjdMXXOL27&(fyDBC66R&@m{7L2cS4zr0ibJl%FzSc)625qO#{KhColPQ5WTe%IS} zT|6&RYAAanXk_};7v|~EmeUY4J@(I`&Q_sKhl5n1Xnn1N>CSU(h9tjwA>bjj_rLyu zjh%;;U(2td_@t^Ghc&Qz6J*Hw#aUYH`!R7z(o=t^pgfXs(PCJp)8TK zSqkCr`wV~L5{X%$H~oK&P+$yE5R0>%yo`HBTed6_6^MQlo(mm^rmNqNTqxQSKPf1i zEhs9Jfcd(c%Zt&AF0-eyb*QT3BoJ~qg7M#?M#|&m*MVk*(|D*A+!)nv;Dr^1yp+9J zWKHRmUjO?kxE{J+IRED0_SY4SIYGPL*es&6Bepr7BXd1n99&U7hZ(X^t4Q%%NgQ2e znZlSK){aSZXZhJGX8Ob5t~C zmJxYp_k+?DYTslyVxM>uGj8o|eoVaJHc>XfUiuhi93AE;TJ`f13_IQJ%ozb}+i%5A zH38e$dkdmzos~W1D)Uvw=CR5LcYF+U(0C>TIdrr0(u<&<_aS0s3mXFTFx*w&3ptF; z-LCXRqMd3Ds^nt!%XN0T)>##u+%Z5wuA*v+bgK-L(*ti#cm*>a-P^eZYCiUth%0Ii z7pF;lSqMZR*kab(GGZ~g_5k;BeCD&&KGc7$TS!%P!%1iKZSsl!ffw$H{=MX^^|Sz& z$^q4td6J96#b%zUl)T2zBnU6pW!|I#8;)`RsPK^_xk%ivSbUtnX0T6kN*ZxGARl%GY!Xaq$t_jedytFQBTWJZt(o-_W;|`ysxtC)Y(sh%*AjNyR&jCy~GK2axtrCN?f-X#!f6A~*a5keW7tqTpLks3d( zf(o_R|KEWl!T%0$l$z#z1@iwEa0K!{2acX)0pKY0{~2(!0{}<%|1EGtin<=8@m~{p z**(F3_phib1PWK%Gkud@+Lf}Vl=I}bD#SY1Y?W4!y9uHr;H!eM-SAO{A$pvhjV4CTFw3)G|(Y5Kx(yWL`|%ux+H-2CKOX63s1DAAN_X{d@a}5 z;SZID`rD6M&99?Pur)b%f--fDe~Rct(p$~ho6Qu?3_aps9n{vcTlNdc5Ry( zqmM66R9&h?u8Pfym8BjgNimXYA-h;cMr#4&r@)ix{1Jqvm7pr@G5m_e(J}{=1g~eq zc@=>Uvl$hEQdOfDST{UG$&wc>1(gV%Vd?9I@o9u6aNan?5vDU@qrT(iY5Vqh?!N>`Ki9mdrAQ_pGFKi6Tl6T#3&qi8xCs$O+*GE=^W6Xl|m^$^S*32??)Y5ag7 zS3z;>X456_Q?hA;nVy2qHZ=Ubgl$yAVkXrj%epeMy2X5!KW2u%Pm_HXXKP8AeyQ|= zz=y-sFq|BVqz7*{`Kd+OX-7UGwAbBgY7d(MMW`Fs9JlmRy!P?5?!-8JI7EIwY4fV) z_($Dn&m~5wxMxYs!#d{1^8?7!jw++8J-meqje<+LnK^L2qmj;q=!}(y&mgqI3$xb+ zsnj=B&cQ)}Agnyl4pYA39jkb-M)!v$>K@oa$Tmnhh3(`C4=nY$BR5u@!OB#_>Op@JDw$4AYJ@}^L)ZRuC05Lfyv_+1jx0-gL^+juKIbU>l zVjofoT`sW8s(XG9k@~|TJ<`wWo>Ik{*r00KWf{tICuS5yNzS&&LpEa<89*vfgD6N) zkChVTzV^(3BVfu<0BOYBq=+xk8KTe&qn|~cn(;L`Eoj*$B6wVI_1RFl5>~-+Jh2PvL;)jS|+uB?oDnrZz&)NOR1cqa7Rl z6AXIS5@!(}9Gh*edwUCG&aLk`zl9l+uB%dAUz&>?jnn4!re+j$6JcaXTT%pr0(dRE zMoYF8ZIub$<_XbAm^{O_$?-8#FZuLQ{;=0!4l@X~J&bXe_iO}+gl9h7;1YT0So28n z@#XRN&R}j3S&jCBxH}G6%n$_+W25_rP~pxX`tz%U_$m(Yr~B-=mci z>QgcBr!*qIxly7e#uVk(#4>x>qW)L7NX3xU&#xl#Sg{JqN-8Gd5B=KI&$${HpM|*h z=c+s3&6B6Kb{9f+FX9)D0!Z+{XMIWo`&K@=FahV-1UD(e6LMOI+B;%qN5VX;J!JaBkXB4xMXDHQIGrS%q;r$y4OW_A!HtD_E3B(oHGvQ_G+l?3)xrrfEm8S3eX3bg8U?j@~My5qYz zK@cL-&2A8fo-h(9);l27L-E@BN1j;r;Vu0?U!-n3P7(J#Ew|);ywMlC|L{0%+BQ;^ z;NL+c%aDHX9V*a>8ZuJN0ElLNZ=gC-V6J@gH2{<6mcmww#g`NJ82q0)#IAI>+fvm` zn67jHgQ+wEm^{Zx5m>&Q0FwvM83&j=e>DIm&wCMI@^qyGOrA<&UrvC@)0GY|d346# znLM|?m3sh_XTIj0$>aLY#qIU}~uWso`wwiOa)hy4Yof6_R2*;yjUM$eQ?!Pdk^ z=xd+Nkaa$UDb?JDIO52%1lkzSryM4{RMQ-0yD%?#3jvjU#_B>1y84kNyQrqd3xI;0>z(N6>_$b-d;%J5&+v*A0IK(msTj1VjhM^0&)I z_h~Ng*Wq_gpB6$LEOH{Jl2_CmbFFsfm(P^nj63I%O*#i$^LUX@Fb= zJn^Iy@Jz7Jg5UmCC++KnCq6R-D(y>}MuMa>1RxuUZUA6`AN28Er&QzYuLh8b@Lr6S zmyq^ViNQhA$potbKa}=efU+m)de1z@gF@1&7eo%GsY|Noh0pJLL3;N{fTR;V33Ms~ zQ1xnXi{D)VdYNEyi9pNyFcR%a_~8w0<$-1t0CPdY1rz+{5x@ga#L_+k6>ddICXxCC z|6?tJMk%1F_MVqIn?;}?_yle$(|64e!C>Hb(5NLtKGU2BIBd{DlYkxq@o+spW=t|g z7G`(oP*H>VNSQ9$6<&##^~hfe^mg}O?vZaCc@!V1-5pB7Fv(+l12~9HCxph<_n<)2 z=8@ZEEcxP0kw{(qhtw(SRt)Mq8EhudINv3*j0eGXi85P>Il0>oTYD+Cq1l?E1Pv_@!G8DxE^N@>LujdI4j9s+T zEb$EZaRZhQhA#l|^jbyFu5VRYL(^90ZYNE9u;Kab_3Z8F?d7uJjq~m54a8G)jDI0o z|ECBG-=ysxv?yp^vBZ3j;zq%q9|mRa7Ds-(VJ`x&LPI zer2($y2bt2xQFm7NdX3#r|<*c7dWzC4uWLAlG3JlV=3Rh`+mR$0mJ=GH^>WCIl`F> z_sJIy=bt(ru#bFTm8QJpU?1Zpk@$WYAo#**bGg8MitYLJt}|Ee_*VnSvV1R!6%&Dd z1i)RsUvQt6LF~akTKcp3erQ;7=#wiMz(%lk0a*8 zI!q*GUO{j{=+<)b)s;2@8|*Hrty}(MD2aZTki!oBDB;&eryhy|Jndw-H5=aFweo*H zt1G=3XEVB_$=6}kOt{`s+(1Z8Q3`AOF=l6(?DiN1l_Qrhe4^-;Zpk?u#uL~*9;OH) zc-2v55zA6nZH2zHi0BQffHF)ROH>6PuxHFi=S(^5rrc@4StOzxBP?XwUZ9^eIo1`) zC(!8lxUc8xdRn!CJR zLjG(oKu*Lp!h{xQj%HW;v-GqPkjGk_k7O<^eKV{BS!Gv(JP}z(e-*F#xi_4^GB4Qg z$gzt}q5|5|#h*P24#1r?X=CSPO}ej}cX}K6z7P%Fkgc^r(NaU2w8w|Ge~uTOGAQyG z-K~1te5v@5yR5ryklv7|F^;j=vGe$ikd!bXl~D6iZ7aRWI`Z4^SrizA=M!p-Z2{AE zYh}NCE-DOt4W$(n7_B*v4V;Edwvn8<%#I4k06N>&Q9qy5JHP;KYlTyl#XJwG8WqMy z?RVEl$N)E#ni|M}WtHObt__u&3XH>Qy8&(4tGaH{k-MK4IKxgSim>Aj8*SZ|71(t5 zXGfp1rzx!NX83Q!0!yRLu*z`j<)DUFxwMhJ6a>cRV4oU72QmsCOYz&wT`+O+rF+Q( zH8g}vd)%<+;HyLDEHN+aU*_P^gyaKMZrGmh>@j6b;~SocvLEdQW(OQ2X5p7e{SBz` zE5m=Y;Sq1Ymf>IS6>%K}YDJ`8n=UW%@eOG|kq1$bF=~mH3b|v?Axx&uS<-eU&AKy2 z83@}as#nB$xob$prtDczkyIyISqMh40w+om_Qnt4x=KVDz$?pZ%S6o?IyflE;K<#m zD#|~5^GRkU`}LN$=PE}%wNp_#Yzz7c+oPhOw!Bp1(SLnvZJnP$MM;`&X#V|MEQAuJ z=aLXqQ(ZeO$~COYvw|vkyI80Ms_ilXl@1iSl$Ne=+C8WW;igSpXTV0Yd>9u5B2{SC_gij1g*8u!(2Dz4CG6EUKSo!|Xh7*(QNTr2P>&$K+S zc<9zeQlpa;x1BLR@HJsa0ODiyWp=ZKTt!vtO8`X_kgH6mKlrLTx!%b>-$HuCe<_cq z6$K+vQ=OMHll@vj{Id0`9*w$(YJ>ph>iwYJ9 zXU1T{#nKHj1Io;+l%ETKj>a?VbjXwzp7lj0WYbWraqx3hEkOH?N(e{UAJ{ge_OQpy zQy9Zx<5SG)>vI{7`yYn!MDfXk!W15&6^e2OPBh}t;&=IIW8ve<`VDSJ*;wikG7kg5 z?COlb#mIU@Iy69|)LdRv{xnCpgO24R8iR)m&e=CkG{aSmmhVSR` zeXFqQuq(sG;3br8gb^27ugzONmkJdJ&D}y)la!F)>ESl9SaS2_;5bvOp!~(a*O(0C zV7-1~?n%|voI$C0_7GQ&he49~C+3I2OZH!b<1i8)bYwP4#N0`E&2i%%_1V@PF9%YC zhj;AUZ=`C79aM-o&YWixP$Y8RZ&*@Z)k8b4qh56OleFNASt8Pk5~r6Gg?+GI^*Q|- zqa0wc-il9hAG#klP@nm zKOOfIokcGnmH(kS{=|Sd6wTB=j+hl{(-d%(N%5j0?&DyB9xD^m!U0))#h+ESpQ=a? z+r^(12cZvZ$alA%C7lm<#F+uPk@d&4*K6TV`KW*Wjr9J%(-sv~lLw=Ht0dKecZ@%$ zJy!XG6!0#?#Y5M^804W4rQW{oaf>vpSj5N?hUS>{?SZ1H*$sq_{M-4DpKT}qujfA^ z1Lr^bXEVEWbP%{(Y!=Ota&DrN)eZC>!Ir}1e>x;Ll@`;nmn=6D%M?zgcc@@>7|ssn zGI5vncy+Fi4L}WXd+7Ic2fkxcZguu9Hoyz6F=gUExR3-SHz93uM(i8dnkHo^^N!P# z$|Jn}v?!+6?AB~ct?wHXIKyo4Z%-x}(=J8J;nz&34RvU7x3LqrUn3^&UtM#U zdmH8Ij{q_yMD_}oSXo(JCfz3qPx@Dg`y)F3%h8a!@)UF0VLVt7g5P22Pq&Qx1w0+M zZ69y09QUw2n%#Jx4XuaX;AVddm0F-_&e;vsO?vxp1NieCo#}tUpXYy__TS1~)}Jt| zEF~RGW62#>GI6F%8bJrtZO;C#@2($je|#CrLY*gb3NaQBUo+&xoZSjV9^P#WI)X}B zWA6Gtc>Bt*HoLCNr-oD9p}4y{6n7{V+}*u66f5o;+$C6XhvFXG-QC?MecpH8&t~S& zd^6XTA0&iBa_)2Qv-Ub`ul?$-Z=uW)s1;xqsSwevr)@d@2{s zMn2+^n7b)D33pW2*~g|snJSc7LnR|Ke1@y;i^6tPJW`?YbJ}l5zT(8a27p;v$Uc$q zof?4%1(7-VL(r&d(6f6-8$ujaaOsT_wBqZtowYEw-+fKiZh3FrTF~jxw_L8{QjW{C zv~SuK4BB>4bW<6N4y6-yLD+HuI|3Rt(jK)biEXY6U$GMk?)X;&q+r+ydS9(6&&fvI zrh`%rj@_oQdBd44LAZ0)oc~A7A^_w6O0!tiPWRuUS=4?K(1#c-s=g6(3l!fixK%_H zGmStKtH!4(u&`$^$nt5Zzl>Za+Un9i2G~C38Cne8c*X7M5h>c2%c^!gs?k4L>^=3C z`0R11FFR?u=PiI2G}79weOrN!l=)S(H>EjP)+Q(bxHoWC_LFX?r3&$v!Py1IdTR^hm zw7dAbn?oK_O?m+_7~MkX^q`m_1Oss8S<^j&4g2|>MuUg%0q$!T8(r7AYq=#qSc%7h z`ypIL2h^^DFLviqQJP208cO<|){?MeC-O|E!`H;M+57dY&-#B0@$7jzdUkyLWZ&z} z{xX%ILDIm>eB155jZxDy1KyluA%L7P8JMBGRH&MvR9R-+2%d+^a+Tlus+#b>rx%$p z6I7Pjrue8T&$QHZlfC4{heP4BE|p$Rgmisu75?5{#d1tiO`6VGD-lG_{@aIk(j3wF zW751>L!H>YS_7Pk%%#f`MnD%G4ti#uc;$#HNLPaDy> z8-4D1rFhn0FTZmplRar8OjI`1>2W$FJPu*x4IJl**=F=bJM%vhK5BByC+TGVUj8|d z5u;t*$*=__7a|zGl@qCYooSN?mtb|3QsUBC5Loifwff11ey=FfD@$j|su5*;%~MUn zR_E?L_Y?N*(;Qg|Vv#%T3TK#(IE21pWuF}MNVXKZBdxQ}ISk4M9rOZc0;jX?CtgJ* z&>0yBK=%eOP&^fsNFv3cGME5v?+hpkl za23G~BvITp^5_x?0_TDkvJt$01OjMZb}TRRwB>vfAO&yyTTc7iMc}{c!&3>Z?oG+pH@a9ISi`xW4|I~k-fp}k}RfzbMFZnu* z`aW#TCEX>Pb5yOAn99$2Q{z?;#yrqE0F! z;;Xvm1_KFiG=;Z?S!-cw0UeD{yT+gcx}C^1T9{A`sW0_dQ-XIj!%A>RM#Kw$lV4Y5 z&(6y?5d-?Wd+Lkkq7MS;6gO%Cx4DRICNmGjVUqqPq_mk14KeHRE&CelECuCa85!R~ zjfJRxE(Ob?lk2Q(7f!SQlw9<&$CZI3h=Pp|P1cx#$-^Y(@2pnXfFL@*yc0mXEDg2H zn6xF@0h}PPAx`x;ulmFa9>+wg0tA+a3dWrVgX>!&Hrt1-NLe*<7;I+K*lvY13SUKx z@u6SK>}HzF*hI3RBQtXjhL64BHHKFF)egQpUV_a5og?N28WXFdA^AqaNnr$bXeson z6IRK#*xKHgCbmGW`4R7W;3Z;SS?Kal1Z35YCQvfQ>Pd>`0e&FPVJ_w&&F7yohsfjf zGs7IiT1ayREuah107J1_-!U{e4De?@>yS1!zj4;U%)1we(E+!YauX`loVS2L(t+TU z#~|~|-lD{=G$G}6$CAVf z$8|@;1*DKQquATr=d5YBp|w5d3NgcO-%Dg~sX}s3Yn7Ei)E#25w1l^~I(`c=SgLIs z=EH=tu`~A+`NwNN>p5%NN@t6M>RllQOD8%IgC$Rh!IF&~#9#^X9#4qD(w}$yF<62; zZGjjp)!#u3mQE0D&L9R$^>+}1r6o^@0I{|$=cEl{uyp&!U}eAQIPA zhGF2!Wum}~HR__6B6aQy&7K{#H4*y)DBJF$Q7bI&z-e>KKFyB1F5&SbU?o}|anQK2 zQw{5=3P^?$Y#2zA2UtGLuL(0wNYjebX9U@4qoFpr@WLr4{Q?HD$>?kk8?mx?GfzYf4RJ-`A1HI8#4Ml8rwVHCT{j zb$A%kV`v;zJ`*{>^XPlG zkV|p=sk_D82$p_$)p`{K6nPnut<6cNxW_M5abU;m+ZD*!?ovX}T4x=x3sjk_rB6E= zxh?q~$ybzI8@O3+tl8%!G|W0rY1KzOj`WACMtr~Hfj%qsqF33z2$);==~;aR$V_S( zixK3I*Q;esvyxufH;gAZY}sa}tc=tj*41&1SpFa~X0%>B;9We>e8%cg!8KH8IE7{1 zJe>IJYW5~hHO%zRtS|d_cS0ncYAZBa#F%Eh%?@B9zd##drI0TOdnR zsVfRvY3m%pMVl*T%pe}M(1~nhf*7T;Je_V-Izs;`ZoBu_M1imi_Jp8z3INA{S4HGM z`b%JW91(b__K)TAhKS7I&rfei&uC9X!mlr8aulw>xhS5@(yA$cfc`!FU!-fUEia8% z+YV15&QZ-7@$nGbVoIIK(@cBQ0u3*1Xn%$E9n(|0!PEa(d=KJN#8BxO*5@rqS}Zc~?IK}*c3oo&ZR;E> zS+k}))D+*xkn{ZWWmWq^G`ZB~L{hK3TyD$HMEHO`^^F~0Y~&FMaA6obwhU^O4|Vap za!1FdT|V;Z_LfH8j8dU;hHe#$t$TbXVC`(vzi$oZNd?lA!K_c;y4s;H{ujd8)t2esXra#`~SjdH#Tnb-VRR}$|HEh@c;-%>2 zM^l=k##wNUL9`!uI9z_-lug`Cim|nM`;K6vL&$}CaxnXUBo~&WEy)j(#s8&iJNYlV zHp}aO=-Mc>|JJp!*|GkY))Nc=uJuIK0;C}F!`*)z3Gc~ZSz5A3BoNPslo8a z=ZHGYtJ&m}89Por6ZGm3BpwD2Ug44ych3#KLsQGN0pY6Ev6J??{H<0y+FPViiHQ1V zgNfF*#@!J1! za9k#*S1-6K`v5qbPkfvihwsh^Ozi4VUONzKqv;`C;K4&Ewz-0CNh;~c;Z#9#W7I7M zl{|_X>7usL$5_Zy1+>MgqVAY--=UCPyIuW0gmvU3e$W0| zPeYkvv#J1&SZFFadcLV)zVupid=35OVV1kZ?L^?z)&G|dTTEqWcSL@WS|)I|)&4`n z8F8ICIYpB$7t(VJ8I3j0_g))GeZGu zZS@4B4(_pV{K{TFNdzVJK=sUk!~;7Q7Q$B2bipkB4((FYN`_o|_(JJ1m&nl(%v(A- z-IB+0E2gF#&>IDlzz(cPDJ3_MY9eoXT}@81?s*jTT?3=8nKXNG{llTb%}- zaPBP8>al3(oJ;7}{B^)N*Ib;H3uY#S`&VQ*;zz-);Pk*6mCl=U!1kNjnNBKxf0c8m zc7LUQ2|X?8aiO*&5>oWBInv6}!IxMZ)eBIJ+OljZb-WN68FM-b(5tbfx_QK7rUtjB zNx4*WWo1O=&eD{_sOFe(d}(!$u~E?AeEkENP#a7r`c|WfYRF%1?H};h*M-(a)*Dy2 z;Y9uY_X`#rockbWK|ZEi%bhm}R%rdz>AccIoI6ELF~RK4;j-Zsz81>$?`Aad3yPXI zBa-51sfGXojKb2U=B8JhJb>nH6DT)uV5}h{I-*S4EN3bp&cA!8O9~+`BSwPU%$Idf zEShU?e!$^ib#^=D%n>$ds(U26t+kkoG)Sa}d~$31cwW75Vw+5Yo&rmgp;-+;*Mu7n zg+(BQSSWPcg`><6rZ^I+)60WuafqOT{$-&UdxD3RyJ7xH5;j`aGvQo7wJJe7o5x6M zN8&cFuMTXCHtGBA`>H)psUekO1kV+W5@{X`aXD*HaO5~g3_*k!egraa8Pnv0MG#HB z28~)qRZ^$utX5LK%WmyU&&m|qJ?T`xU{G-!`LHO6)eu(LxFc?U7WjD$5(d-WIlP#D z>($o~Ivh!e#lxXQo8^g@&E@YRmEL5n{>6_7a#3e-hx23zy>En%7p((p8y|~OkPYBA zU8EkvXzWfGQj3$Fk%8hUwPo6QoGLzG0bMil%ULWf-EeOjufg6j9+iZ-6NJFXw+?1R4gg< zh92jL6FE4(0GiGR3<0>Kv_B^zP$g4ZWw_Jxi9H&MmP|_|04u_{;j5>CjEp=iY66Yk zyUaFa`u5aeislI_me$d1`7VX$2MyFl#^3`9kTk!td|X%EeZ;yOwE)^Yphi}93`zWB zBL_%7N64z9^DLOQw6czjRxKXzEa~OLTeU-?TpqjQ-x-W29f1+AUK+Wi1mr-bhUTuAEh*RYOz}nhdSz zT*O<^;~ChFJ;kFO85^`eI+f>{VH}H~H3~b6 zDjGAr0d)YB8SO=4|Cq!S$15*c3M(Mx_i8WB>{RQBc(*3)3$I-i_ZrWX>`WQRr{5*!mmMpZJzjD(oD;WnfD#d zluUKr2`8u)jP4gK8~#0lhdid(FfyIY1!@p3$~q3wIzt0tYAz#2H%LDM|NAAb23cu3 zuwwD6N20mQPc1)m4M#E1EO7QF9S8U_!D#NYKS@3mhWD`jUiJ1H>VuR7d8k#!pm3V) z43l^Y3TK)#v|+Xy?sB4}iWwXCS7UZ}_OH-; zH^CodAeUVhn-w_kE6iv*V+9ema<;z`C6&!Ux#t7ldP8P`gWtui)#W^|xIdf9-?*%? z#KLik4x?<+PyAWr3=4+%T&DwF4f9I%{5-S{(0B!`e?8Do0U@(LO4-Jyb5ke*#I`S} z)c<4v*AcK|(y!Nbxlzul*y`jL9~DKB0log??(G)n8v*Pei4OYGtYGsBZo{nZuHqkYG4MMX9KD*h{hg)S0I?}=0v0~JeSD@igqB1P8G&3BQ(y_X7VNV_}R=cw>)l4Tco+`rHi)n z()A&M!a4)EB_H67`VLh8nt)Z%eilx)_t-)Oxxr94%~=GylPVr6rFKwWaVK4C$W=d6 zEF{n<%nP$hTx(2#f$98dD1T6E7YSH3ij9Iuzfr*6!e_f*8Gm(92m(x+wOyno4*9b=2*msa-P@ z{^xw8hNuwyRb?BHbVmQ{s<8mZB_7Em<;j)s* zGn!5n)MgBDT&6b_f!s7u;yfPBek{KSV~Z`X1e+uiuf9?Xvk)fqK`syT5xnCEo|ih= zj!AnJ3VHsZNFsg-UDBRfu!^6Nisp&o87=-#WQU920ngSt4)Il|DJS@aXwx79dEKP0 zFO-x#r;d)D<*W+LKadHf@eWv}2Xak=$QYfmN=dmRx`refAdx>IBMN70{j*UEPtcL& zMhibuLZ_x9K2i-;fJ`02yThUj{sMki%J9qP? zVHa4=`U%;KA#v@|I$tYK|EF~`i>`xWb(Q&dQ_5(%Y)jCO^!oh)DS{A?dagNS;S zI}N0!ajSrfABGJgA(uiTN3s};9DUBDlk?sCKUcmungQC4TSW_pZeX}Y ztEq^iZ8IK3GdY*4N?Dl(K7m#!)M6Nk%Vjn-&8n}LbZg;}Com4f?oN~7S9;Bc@x>vf z@qfM~LOS)1W|3Fe48&oEnMMs7tz?kI02P8aLIeV^#7#U}SYlfo{NMZcAi`CZv+4-9 zrYtw)1wtD56i(jk1nmuy#zQuR&y&Z6D>g;k4T0f6W4o zZ6E1e$!ZrVnH8hDD)s&6@4J(cr+J*{@INS;GUu^ah{?zC#2bH-5Fdo92h&O4lel)G z0r!Hf85#4r_pC=}4bc}}zfc=))c>F{)nHK1C`sDvX%J(Onc|68isBe!L$Hp19xuRx zR%_)@V)&K;TX0D_CA9^atRbyc)iXyd&iV!?#;3L~vN0BsyYqLnx_)U`1z-g3!B`>3 zoN`t* zeV@j$TIwT+FMu&N>#`c-&zIVk6!qIP4}34J4hYS4FR*th)DFc^=BbpP<3XcLMpwl} zhEtlxp~t}0phPs!z_C7t#*px=f(iN@BNL(X#n)12g7OZl`UL+=bE!PF5{1%+6e73q zt8|~W^^q(k@5WB!{OSt18uvj9|8&wPEk_W2+AkN=C{Aap#TW?8{(dGR?-6xfG0Ge7 z11I-lN_GmtsZ-f5HHQv87;!T=_T1l$hj&6X%>eMEN!;vao@A5gU*c$C6i(BIC2GO4 z)=U1U^Y2==2QO%JNr=&k+{VNJ&5chaco5hw)+++p+X{AlX)uwm1mQYRPHR0ePKnABsUH!Fa|^qvh+Xq$0h zv1YJ}=8MYJV+{d5jwUy#C6-U(+#%zPLuj?&hy#Z;H%|JaCplxFAZ@E@o$NgWm_1n^ z1I(G6ZC5^kaw z>|p3}XL1ak@T-g@N4-m78dql2AXDxnxoZh>klv~h@StGu8L~<0_hV21Bwv0SJVw9- zoI=R;dMP@zQn0MdH^W!ZB_v*xSLPejXj?ebNGh&m7LUsY znQW&_OuOa!gGESuE=YdOEB7^{N-ZI7z+o|LXl|gCvnq>@gYD$helromDoNcC4UAR~ zT|w^Kz{=#d2~D&Jffp9S{y z&j!jj>O|{q2!pbl$qQ9;F+LY3llBH2?v!YnE%FYH;OJc`^~U_kqmv+cH1(f6It7w~ z=_q}+7MD28jjO?dfM4h60-~xSxDd#D-fKC3K%%$-q86mbf3YK)-m;s}~x}0TO948hkYA zcbhrcY}GENQyEQolaXSQb5&=&nf~6O0+z%tZpp&=lxqc$-C56zFv7&Z=i4Mnqb~dI zFC`#IjWZ0nNz3-~&o5;oI8rx>iY15R&Ho$`2M*Z$L23RuikS@_TOyLNRT&L~~@5 z%V`{G3IPhCgg+$0<_|0gcTi!;*z|h^VGZpeZo(6FjwfD`Q20!Ir(ckwP%M;L*0-lm zL6yL;Nxu$Ug)U*AP+*~HHVF$C!`_v-=SEY^Y_f@N>q9La?b?ZM1W8l&Wmh85je6|{ zxTS`Wpv3)a%--ceQXTRI?99xpRMJTtmD&lGDmZB39jXiUd_D-o2D-d_sV;IePP^vo zUnWPx>!2~al0IlTJTTUuJe5y^LGArC? z`^#mAEZEpQe;qr3NcKVTr^@$RE)m>S9<&m&(|KYM30Mq?BW}+5gAvf31W|8;IMGH0 z%yct}!hpu7ReOxA`lKOMvuqP4_eTvWNFFg|ERi9|ZOVQG$rnF=Rw}tDCPIYl5j`Sl zpIf>`2jjjqO|RgKj`~Y}&NuxNO{^PnxmKz2v-Z(Xycn@Smm*S-Ocj{_cc$7`H|UyE zH5d|&fiMP7l87{U1+$RjApi*!EprDu+UlH?h2V}&)uj(KiA7*@mWzYLl%V2SAT2P5 zifj2>OkKc(>g`t%fku~IsnZ#3IeZU=i*%MZ;zP+0y6>AY;1^ng15G5M4cN-MzqUT; zS&`djEW{($lFnU>4pB~qPokfy)4@bH&|*T;DT-I}kZZJgByrET!b8%T3B9P?8P{p(eO$)Xmr2^MBDsox@k7`+&wm!RNUJ zo#m|2VjbyG{=W|Q#DpTc6v9iU?`sVIkRoJeQ};M-Ocyvv}-rrTsa@0s9MXvReN_`zo0m3sRZF_w9 zguwPm0~EaUX&2~ae>8%&2+kN~aM>twmYAqov9xM{a1{)zL&R}2TJFwABUmRRh7B@q zIbX_XChBezLnjmL=+OerT$5oT;c=>mtU%64yq*>G>>xuTx5Kg5dT!j{B#`T3>c~%N z@7ymvh=rjvS%z5w4xz1z^Rxu~*$ljuK%EE+eN?Y}S{5bsRB{_iHbQQ#Dq11t89-sY z6_P1KZ&xol<2vF{(afO@NkuOfbm~88YW`V!Z+)nZM{Ivrd7nyra>4aSV{vDXRc5qS zt*i7qVOl(Z8#k8y>J>Na%z9@4*T)HdS3rJv%qyQXZgN+T19qwMb1v_FLx%$x#)^V?KwnNga)bk+%tFGdkS-Q$1CpI-eD>TpC3-$RaP8}eHwfPe=&!-@vv?ioh=B*s7B;*h+G3**&;?F~ zhM68;UKb8Z#NWIrcR49MTDbP0iA@jBMDs=x`Ii#(3 zV!1Y20OcLjD9!isTcgGPr+W%8Z;5MFJOipU$hk zN{D&}j(BLT=~l05c#rY3_!m^p>jF%q_ForNILM9uC_C=^-=(m2=Edc2 zLbpcQ$8vi6;XCq(XXAUvda$E16knEWSD27#TqT?!wU$65l(M}HVo!zP2$WEM#UIU5 zH^{-9DnUY0^0U8!>9lCAm3U?)%i{3ZveK?BIBYk52<^1Ycb#vGK^Z%KmEi^19d=l({4%d?yxUz(Ynx4SkvBTHB7D zdfRo^WZ5RKs3>L}bQ883Yo(EDVWmbkI5fHW`hzR9ScB4pg93-eIoj=mpv`PCHmy}| z+;{40+)!LY2A4ydz~?HnBq9324b-`7qCxaGF{sE;V}ZtlYI^wGXp)*CF2n~5`8>~W zlPqxb#O=H{>Ekyws^l4D6x7Ynn`vd-v3weZmfkQ@$ygXfPdX_ggXo7)105IeQ_3Z# zY$e7dv{O+Oqdu;rxGoP~<5CqF`IeSy4%x7C~i!sTPAfeY>DJ)!m_Ms^Wo*Ug7+8V}Kf$%wnpqS=kLRtyl8{&g8W!!JX`L;Wgu?4_mzmY)p zN=+X#ZX;uF_sKWxll%}Xs_5~!b#c`h)bh8AJwe{rLauf}AJox(3mtcx$If0c!j5C# zR+j^;NmWrykPtERjwPx9CUQ@#ojb<27$C4{<#o$m6!S;<45g9Nlz#CgtPbySXZT z*)1#yNX_(P719Abhxgj2jEY$&7Mkt!gcr^*@|*cAD=?CFG~QEWIz%rMYAc~xw4o^r zLf9YRXd6%X-Nfs_yaw4=q$6f1pe=lZonWA++wxUK?F41II=1c}$1~Sf_}d8_L*=Rh z<8iNvGfFmp0bEDX<6c*4Mriz2IFtQuEmC8jK+7`^IE1eCcI0}ptIe5@vAI&KSg_zi zPDux3r<{OpT1|GJ#AV2sXD8)_rjo1{@>BK0;%hNSuVM>X;dhs0kLV8HJ*dj#0RyrQ ztGT9Rt)0pz(!gwWO-4K=CDCx%c+A@2z`2UUuy(hBdbihEG6SyDE;xfavs_Muejj}( zVtS=cR+E0SVKjCQv{I*E^^cweBNA&cQ#Y`e=pKkq&au`S_6S}UKx1RTe9gCrlBZHD zw#H7VH`Ek@%buJYTJEeoV`_E}%MhhD_=|yY#Rm*u?$j=gwlVyFa3c7I1z-Gd#J@`T_ z|3d&{sfI|xqhB2CHohW7ne8WEQKut*{!m=2WGE{26%?Z}PtlBR;!Tba_6*XgQ*r1V z9@tO*fNY+SFExLkFe`e|NyFne@JjeeM*n`R2Br{L6<$2kLb|-9rLR5Gpgv*n`87xaf&M2zfKu@fcla?6-R1HnEvFqH$NrRymGeS&Im`F&b8Ic*nZnpSn3iH*ZCU_ zUDNOUQLE^_i^_b8@u+Tgj6@`6-h-!?5|OF#G|3Jb9W(30N5)sL7^5_KAm=cv73u z0(Ef1A(FYs87jSIXW3P865p1p1{bG$@|RyyXtfxy#?MLz;S&vOr(zBgNc$PC(keyt)7%RR^b3Bgo|p9Z zt1G~*EBXAZrG^TLN+~0= z6OXU24<-gLEJWa3UM3$Dg1OQe)S4%ZCU-0evk#$}AkSI}x-HyaKO1qi3E!C_73~ah zdU3VM9{hy-2;%hRYEwCbLMobbNw>k5m$~}feE>381txqDh1NdifKe&Kq0tC$wS?BeeDJpJeSE1m$o*9XSxR>rkg zCd>Usizj?`7qUjxC<;CaPgh^hfvIqgozPi6jldP0h*Vzgg+(t3PrUY1Mup9oyw0mS z8o7#xCR#08&7>n!SL3C<;u2k>QhfGS($cu1!tcgfbFJM+1N9tw0ld}aSI$HP8i^Eh z&&ve1!7hyiQ^c-cgO?|2e~EB!N9EBIh<5Y(%O+gTOxP5<4+B)(4H8>tDuPT3#QG04 z+QWn%Y*cRKzhnt;(@qJsXLf*2B&=RW7f!0Q;;oy5Of#65%{CDeFjvg>5fjw-&mlst z_vJpEV%IqJryRAL2#Uc5t6{PPC@$h&8$5_%l00rS8$o=u(9A+HP1@e)cD_^ckCfhi z;iBJJ?o+$#W{4HFI3BOs1M&650dFzn7O9C(J!ghdwpc=c)roATY8oN7;b1Dhh*Io^5Q6CZ&T2aqnd`=vVR*^|h3 zucO(+)%|7b2@AJ!Xz!XZk}Zzff-wDRFWr_Y3|B-Ss)v)lrk!H-5F9TUGM{jaw|a`L z5GmNrMTF?IvALJ=gRM97^vU4^g_xik+}+jOaN~UDriXAo8P!#(me_Nnmu4)g_e{kSJwr$HVJ* zVo{XreU=w`#>OJO=~`gcrz=V4?`^#J^|g$*bDjvt?9=(qRyd=AZrt1bZ!#K$DPm$N z?wGaK54XMJwXW@Bsz)wiVKk7FCpC_P8M^SvT%A}lTAA=Cs743^VgJaCEy4bb42zR)K_GI?x<#neys-9fnK&TVa8+oOl>CxA0x2qGTq-exjD)^tKz^T>IQeskhYzv5m|95 z@=kVQAq4QI8GSqA(kqHczN?!C0tr%X7`GTx^+aWXb&F1Qj zWE#Y`PihINcnuc!qYBWBG^H&rdG{ zMClN;$jdb-a&`R5Qv1-u#?W=&qzD+Z)Znq_exmLn=FrXkOJl?-Ql2tjIvrJU-uE(z zqusT8V?a;A}hZ-&hHrcNkY1qT}37r7QUGGjo(yHVp~2ZswezO64!f{pnUlOB|XJ}DHs ztZAMumPw6>98(?FW3D5kEbsfWeJkR2ssq+Q&hl6P8eK2tn-XG0H)CyuwwW?FW0 zt1w#`?)a@l9d*M7;4OwSWPm4yN4Nbkv?=l=2?n3?cdvRrMI+WK9%!r5j=4^+>qsV@EFy)R zxnBxc2jzEA?X|KjEVRcORDIJgGwis_`lL=7o(#1<D+E;C(dysgqY;ivYzx|11Ln->mPScKOSBebizXx5x9jr4UnzXbw91j(Xb?^o zL{4Z>upELOCZdjOMPO|FtPPOcnr<+m7RJNT*df0_F?n2~e{YPvA$sjN_I4ZJr zEokdGr5RbbBX=T!Tc;3yjRl*;;qwL0`9)>zb{-6Em6|lRCN~+rTLeu{Q zx?(pFpo`J%)>pSl-)to(X^2bl_Np$6<4Zcb|4@#hwDu2>8(3b*>oiw8kk-&z0?#PO zeMoo{ex`SUAI}*iRe8QhaA{qi71}lcvh`wwVqepAHEJbyQQdjLZWvG=iV{95VmZW2 z9EuGQ9MH{{?tdDoAG3Nb5d5Nzb4<<(YI6HnFlW5kG{O5}l6@n|#KNDh1LzJaS}7kJ zz794UEnCG{I)wT(E~{5pOCQtlO6D7Gi-;gRrdxD@W&GL{%Wj}XPW%{QsK}?%``Z*b ze|&bQmstaV9|{*VwES|zb{~8KCzBX?msU>UHW9$k7OcfRMNg~WM-oXVs=;+57m;oD z*8PhGt}7{72Tk)PtO`Y4_{Q9dk$lJ}2@sb|?)niXAQalm<(P=)QX2u?s9PIB-RgrC zyHj>GZ{EYPNT-liIZ6fS)6PBj1L%9ok&_c({_`HRO^tXXD1fndY*4YTQ#~s!&2s*$ z`U+cHeJ{nYnZ4%5Pf3E;y|pVEzbpdW>}#_Ms(w%TA1s|(rm-WwlX${Oge*KYd zU0dT-uCpVzqS$`SFpN>~mW45MBz`7bsU$GEe5(QYIyz7?WRn4Rcng*HX-UPEF0XT` zTU8}K(qlP*W|}`4+zxLhHv>o%_L`N)R0#Yc1&wJ;x5;}|{jSNGDQ+!5ha)U_la{`n zefR6=;c5b}x50hc4u)RUo8Sp597&ox^5!?Vv#-(e$N6q}zhoL;k)98qR&FtDwuT3g z?qQvPB0qjEj>J7KFFIVwv|ord?qx`UhKuVcXI0LgJxr46-`mw(lpZiNy^1;CBsRN< zP3Ny3vNB%oCa**_KaLf5a<+dIa*=9` z+OiM0rnQ#v#OU5uw`Bg*X$^xH>(-O$-X-hzsg^kB;aM#OoyK*G+v~Tv0sMl&ZD%bt zj#K8H*~dtrV}sw5K3e{YVUB4m5g*s))Te$}Js-;0A@3xUBlzk+XH{(Qo7!jhCscUn#|jj*MnDQ$p&j(is4C{FED1i7)Dh6-cTcd$ zjFWx6CEpP$*SJUx_Ptv1yK<)vxu=MapX*0C-eEmHEMiBvxDkB09}i%~X;d$Me{%JE zRFe)GdPz6@$J?_uJwhQ*ZPe%1JwF_TbXt`k6i>PU(DPZVSxQ3y^g&*z@z}ynSBEeb z;$XgJfagi|`{%#$_Q#pQvFvBw!h&zD>Lt)J1uvI#z7IQSk9 zKOK#EXo&^J1L@K#_Pj_wWtb{4p?YIO^dOok3p=fx@Vm3?omkMzOR%l&V88gh{fF$q z?DB4VJO54PKXLbjg5HlovuhIX0()}YMKKs_rAFx$B;w>KWc~+xZy8iqx2@|24<6hh zxVyW%yGwBQ;1Uwt-CcvbTX1)R1$TnG!yV-N*4}Hcwa-0u>Yh{g$Gugf8vRdieH7K_ zY;!zsd;8cv8#Vt|bl>9nhVDy~V;H-F0|vr60CaEFJJE~!hVIiNoc&8yrgUHr+;%m< z58cfMSEXk~RIsbbU=-MkaW^%-mM~BZ4PoCzn^*o@CVCZMIk-VNyiK$=~3Jb+Le(ZE7KMc#UK=jHgojXKD zQxyS@E4Q9@(o8g6T0)bosi|vX|42t?a% z+^(8s}|3vp_eN3>FEo?*ftH~0XG|JU{{`sw8 zp;6D{T;<3CEg%R`ws%2d&_MQiLoY`abV|meXbYZhP&+>~+gll!>X* z>e1Oa_OUVx6L@~Hi*_~QaCMOz@Up*bdnT2Qan6}i&g1dUSB^pmuW}8!!iuaz6Z&1_ zTZVf)86sVK2BT(BiI(;ZMv25qHR|1|E{KlpHw|BB>JhF$cH=RclDUUesY zU7lneoPD22QYU6wE|#vog@y6?EWWxOx&ZA&?y~wD}}~U2X<>zTEO* zRiM+Iz#uKraFZwQi)r(?NI5iqWp(*cvuJB2p4*mu@idXG!``U+=pjE*vl+ z>AAl>wIYg7?2o)%_&-&%=0@)s=U;e-p$l9#!? z&Ym7G$|o;GRoc{$^#2IZXLJ2O3iNq9G>N8-Zuq2zu1rRR3CUv5jmmFigWKY;?X&5T_Ztbg1@|)Ff($`$!y)LKV7M@bG2Wq zl3Y=HJcaWi>ead(d*b^7Pcta06DwVwQTUhBLRp#jFs2$?PZ%oW!qb63XLVYDdECBL ztLc)DK(FPvh?8ygUJ9z9+bMC4Q2GUn0zx<~k@18SaddL|20f6gmN%)@PQCY>z-PeAA^jbtQ*i(C31!zi~Z zd$D=D>VyKX!k`|~He5L*$w423l`@J;uQRb0xfjCH2jygiA7f4k zVjpEgJMiBjd-h2gb=*u+O2qX{NzKoW%EuxP5Y<{(s5=kbQPqRTPna!*;~YD=3tEsj zmza#sCR8<-$mp`kOK&Me+=nVQcSvykdnj+v%`16o>Fd5Zr&85R`Xw0SH zWa1Q#i{w{^3Bn}&fErf)az$!asP@Bf@mXR+U^u(q2}a3!WXXD6zDA?-W{Rb@o`p&3 zU7BSLcdJeDd6W>zczg`Enxm8JJOd`|d5_N>Yiy2{$cd|^*Kc%2(1)6gE^_vre4onTEd*oE}VvDCu-oO+MVD~Iaw|t(MC7s3@TzHh> zKECaoV^~o;m*GB{fpW6s#>YpJ;R?m(Y^cX%9O0QE8@zCE((s`a&X;Zsh-WC2xF@7^ z$3(H1nkgf-3T)& zRs=j(=FWGfelm^@u7sSIBsvz2-*02*CR7S8!?ZS)Gef`E&t@#(`sNflf8hwh^8@Vv z<5%198Gib$^T3a9mzjs3K;>Wf<=B{un8TjvCzG4T*VBuv-9!HWjaQE>&wm2v(a!O^ z%U#|Tj)&v48J~=D=yd?vY}eT|<`n{4_&40R`!Fwc=j}A8z&r5&cdsAUAWkX+h;`fl zi4d-TI4?*$e7FErZe)-rZL`NOh#(}7L@}sDk>+-Vdc9#k&i9?3A6HBd-1nTBGR4p2 zIUW7au0Mi<@wPmO!L-f)kQoo%q1I5U*=o4Ht+mYu?&7*bDq3a-H2CozkCh%0$I^pb zb6XoBLM%-7hoMa>GbaZag|1vO)aGJv6Gcqt@ zxrjys8gTd`E}W-hUz=Io&O`x%kg&~KO!7Y`2oU&8ArCW1lqsBCxlElD&xf~(eQ%=^ORN8Ri6thcQVYub5uVq|TlVn_ z`9e=aB+&i`A}@2uUfJ+h`ya>0YmYxdGshF5a1m$8NQxmeDB&ZW!EkDwc+n&n`)a70B2`OefEE}gOsf0P+o4X7|$E26H?G-~f}TnN3Q6Px|1(wr+2 z7s3heF4=L$Lykp{PV`$fUTs7jGUa0`3iH8Hjo&r(oiDMRpOB`DAAYUk~W`duP# zwfmH8^_pqRszGy7PQp*)Z(MMI#ep(w($}d07qqC;t7hS$Cf8=J^*rsgJK)WX<*B3N zg)-43eu79>98$L$QcO@7GC#Vjm(k}r0gby-ZDM8Sg7Oa&EnOr1&_m7krzIE(JkPMUo zteAlL%oIJXrld&m&Z*uKQs(N|JF;TBpN*7KFwC0BUedVLNmGp^9nd8s)FM44AU3`# zz`1C;$jYrP((MClolf7>UA6(0qyBJtr2Jz38A(WiraTFrk}_AcP!e{@q}xjUv#36g zaT>R;RV)Lp>!*OKCFUudKqG#JZ_((*>nSx`wL2l$X(2y3HMF1G5q9(J0DCyNJ4}0^ zcZ);=4adLhq2GL=M-kjNCm#~hClqVqflgMDV*E84q=TCg{%6rG5Lw032%}(q%fg6b2sZ%jLQBqs6J8MwbN`1miKfhlFg!b9Vq-Hnf_W*DU}HuzIaLj3AW zG3hDbF!KABI|XfhF!Ye87*s1WaI8lXOcWy&Zi#Qax~_y2R(_kXS_LcdPYNG#ipK+B zv5R18*+X7Fr+=vc1V+uZci|FWk=#94ZhzoEFv3QY@5>LLt7P7{b7w<0jTE*190$`Y z{PIT>tv1D;=nR#&`@DEiUP+XrKec5>a#h;(8MU&S^U~eUMWz^OnI*k_Zzj%W@N%+y zey~@I+3?oJQ2)|Q&KzqA(`p|$F2VY$iq|2yl>N@)9%`?yH@F#U&u5+U#yQ&d($i%% ztlM#K)Ga5BzP;)I8!r!q;S4-L?PJ>$u`c3BCnKD$7IDZhp)PiKky@!<-s6lv3t!gk zu5zFLS5^-xX^EFP%0h3WrCpx%%edM)5#1RgyVVOw+P0_d@4mD29lm{+(yOS24c%6* zgSC=F-sMxOh$0gK=R#hEve7#O!?mHFeB7U|yUAFo&PESVXUbW1N6FoMs=v08vR-pZ zeivmHRI;u`AsV}meaK9Qna3m-GqWFGq!ZzTn{J@Rb+R_sgpB+(Zm`KQ%~8bcMi*hv z{f&RnjeXbD%w9)m@Vs6H*?Y@)iyc3y?R+5Kgrw(w%KyT$#&#mLY`GBaIHfyO?M95V zpHNLUWtbiOh4?^ixaRU~%7@8+i?oWCS+#DG3hFw$4SPHHYHK`ueg>c1E)lz33rR6C zf3^xDl0=l&f0|12Akp6Jj9)S&d2k*268`L>5nqy6%D~(qVXpZ5txoBlzn&Ayya?O^ z*3-p=FJ+vIxlid-fMy~J#r96XXrWz}MS;z_ec_FzturK__UCA#shp9vkONJ>r+;+y+h0po@VTo|mGCOShKlet9;Zt+FoSXlyd+?>ZA78IeUvE2K`O`XY`ClGipI&2LpF5}7Z`Euh%?5lDZ$2mC z+&FWEJa9YZ#^9rlC@YLgnjbpWPA{4->Re3)wtT_BD3v0l_ti5Lw8q&bvFJ6S?;h@v zN>13N)J`1qDg&iDU{jXtSp#{o8G4oNyd#>q5g(_$5&O%dhW^~JM>KJjmjQxn#QA!A za1b}c1N_+{m-l=1B=FTf_pNN;v;W$dj^dR^^^Rxb2MWSlIGOK7>4>TIh&GOU1wFA} zM}Ru9PZ$PqZ5lQ*`+izOYS~1k}1}WtiZrr9G>R)(G zJ$~G6&{*%@(x@Agts_)^|7afs=6Xk`0(Ek>@*T+bc#Z!j;iD2-Qx6WaHQ31+_O0?e z*Ct0&KW;DW>o43oF<*b+br7riy(Rq<8r6{h9+iHFTi$3@2BuQKt^A7uxCa%XUOfD) z{om6ly1Fj8rH3*t2YwZ{>&`YaR7(1KVs@5SvJvg~lPNr&`OraKpyI@*h2dMLydE4f zTiXPT&b>}uJ7*MvOO=^UNIdYQWb`ENbYzRcQC`>X4e*@9CZp@6l*1-=JD9_|M^j*h z!5M4Z?=mmGZ4jG@t%ctP)%D#It-e>wcOX2)lXN#G)2svSiMS%o%~kIIqB3qT-06|z zpg;=8jCSDBKp#-IQ>p*Ka~MtWQJs`TfOfQ8wvpCBDRy_xti;${Qc+4Z?>=?&F@mB# z+0wSo!V&B_ks3*BQ2LgwlEF;yta2NFU+ff4BZ<5my#9j*J#m9&NRNsU9>sjZ&VyH& z;~3na9|8Q`)Xh^P>1)!b2QFw4W$SPW5F`2zcO4hL)OVekR|NcH=e~FZw|=iy^ly6t ztsK!ypLXw2%hGZE7SxCSPv|7`sVo==ejU=jz}~fenE-+c6_l4ARpVEXEQ~Yve-7#^ zZ7e_b3Un0LFO`Zvp1Io;;-9%E9x3SuV?ic5p7li@MnvYb0 zcuNZU7M8Rm{~nd(G67TNfT<<mP={~0pd@blL z;bxk6L91Lu!x?>#u;{0^p4}KYNZjL!?x2@cIH_1>JNx9dGZ?ouH=BQT9p;rsK_vda*bQ9!)8z+wL1-#2Mj=!m+y* zFPlKy>cBffM)>NC=y>~Z+kjb`7K~VF7}JF-7VE>rEoHq7jf)3oyJ;hH*-u`?*Ydfr z(e1QGUzoVS*m1SvN#(_aMRUF9Vt1xQ_N516`kOPlvZPEZzNGs%@WdhyhR3M)<6nMP ziQ`Y|d(wnIg#Vd3MkQ(T%Ssa8R8df}SBskt&n>|?%QzDY`4T+QLaXj#YC6x%wEO{epgWd|D^9 zR8lE%%qqio$%ybco7zsmrX&EhF)(F?$#gO>*)WZ+4`ENi|7Ys+#feiE*j+nDRkz{t zt2N`rJfb)5Aahe42luyM`9DIp`*#AGO%QLga3)7ie~3t{XQZCeGf6)R)WWfhP`x(n zy!I*Q(~GqjT_Pzt|Im-DP6z4;(B53+{<5}J`xh;DdFq5X1iQEUHRPL=f}8B?caQNF z<}1VQT~nNZY7+Je`ZpN|s>yNXFbeVCkopg^{u8v>y-6ousMJvbnojk;t`n#xb)7&p zc|+nrH8J<~yJ-Zf$y*v#W3ue$^6wwt(D^A)O_tVxYEst;RFgkhfofvz`&Lbs*50bg zaV1bqZd`$Ca-$ye6(Hn5HF-<=Cjiyt?-5W<>NT?LMQ+Zs$h-_8x%sdYlM{9&t+l&i3fH91E`*>q+)I3&*H`bZUX^g_UI$_@rl1CpPJ!{>K0C9h?9@=YQ`AGgoUk^ zeWW5)Ag}b3+6wBCx<^pv%}5L9(Q5i}xVG;%_+h%I| z)%?tG!}OammFs9xIw!`%z<^qS|EOizFq^tc&U5_f)?NCIGd@KpthGn$8T%2K6YGMCC1W> zY@?k0o7d=odn8d?T3@Thwxuz4XKk7v$F5G-rEwXyDhu(kl*&-;^JQqV>V^ix6xSm2y?xq_PX^T$FBZSIrG^&Nld4EXW<3IHE;DYzA#ouh{ z{IqT(rEq=euwmrP6Ze1YcGWvSMm?k zbhWSB54-7l1FaWqk8k+%%8*QKy(oaKec~RVpI368fe&~M2cIRLf*&3CyH$T2N&Qan zs8U&?_kB(RtQM6^Hn014=Tlg!2UhUq@3xapQpcr&5m^XF3J*E6Bm|36P{TzC?%Ee( zbjLlPTCQ3u?JA$hn?EP(OUgk1ricOCX}`cCja&;mhkapa3)zat`R|)2>&;C#pEA%MFOP-Y5MUNPrK4n`U)g}w6;FVspBp*fe0Mc4ZNM} z5tD{*pu;4REyw9W2LZdm1#?SfCd5qxYRnbO8_fLB$e2e$-An4wHF|>BAcJ zPY`A^o?0kl?|`vo7@rMQFmj5DT+x)rjHq> z|E*&p`kx#VGuMD)Li|4+6EsXlWMBr;%r?iNB$}F9%hVs#kysD&NBc>H15W}j9i)~s z&}Fgz_9x^0)#TKl`i~|j`+{#kA&GcJzAGhKEjh^u(ow%sVUwDU&e}!YF|RWA+SR0T zs>hfQI$*6na?N``M_H``aK{Fhst>cX6`MbH73T-S?Io-GCnBhp{3G1&7$-Ed0%v6{ zT{+)clyd)@7Nrb_5|7t<=8WmX2pF&F0?FTMua5xrcKRJE___2pZKJi3^SU>C>1SM3 z5PK;56a0lO+}`;3K{BFkW@BeQWh@> z8tTd@O8A*NDUyEdiVcsk%>CyD_Xrm8;Yi$z_;yM>Crd>RkC60N99326I=c2xza?2J zqoC*L=^pM(Ubo7BVQm|xni0BCy7DM|>}1?yu}KuX8{5G6W0qL|hgkx%?t|hf+Fpvb zLNCr%7}E8cWtI{MEIvJanZDo#)8k#WPl34+I&B(ssXFg&w%&3pz6DBtDs&%tNU{1) z{~ce6N<8*&ZnnDb?XuToPO9W94nn~GG7|S`i{jX)ea|N7wBT#EibAqrA3Irm9Fs%> z{=qd5rWnJWA|N%%d)OIr5(ylnxmB;*v^HL+fju$4UQGE`=UnW=1D`NS8pn%H`EYsj z==t;L*Y@FUa5sU3NA&y7I zgi_aZy*45CdESVlcsO6g3r)daf_tPM|I1JvbNR_GMS$U zRECeKs;DL5VH{2`uiBbDiloriggHZs`5|^5Da^A>Md-KQrS8#xF-181yD36m`Tw9P z;zGMglr`@^`-qAz{!1T`)W7r*DI)w+A5rJW34#BnkEs5yJ|a`_^>fM!Td&YkX?X`U z&L8w!+y`5qS(qxBhZGEf9-Fw8x09l;WKlGCC-R9bA<2k%tS4*jh5~LFgDdZI_-3Lj z9h5@dF6S4z*XZbY5NY+&NWkL3zV=zYj6&1)ywvZ#qH?`{FgH>PAFK&>^LZK4vZwNc z+B>rKG>rb+QPBve1oIhR&Cw+SN6G6Ra8x{F?)~kk7>sg`pndHJ%)_*|tf)#|=gzWj z$K}diVYcolu^QncOj#5!4P{eK`qbbZg!d^yPCkHZ_*MIa$Ui9y_d4pK@3zv-b||ge zSkvto!JX|FRG*%)DqmrIqol4*nA!_%@z(J79XkpWg^xw3&Bt)Vb|BFxhsqamIZt>+ z%y;!@Pr_Ix!_=Jcl-^dUZ3R19nbO3;9=;R>C$WDW_ObSL7 zpp#R+q#V>f1Km19J^TU2@mAqgc;n(+7Y@+3D9^wX?p6M4GLP|nR^+1@K(s90h!#IU zFP7zL_k7;yg*WIb`Jd29wp#QLdcl$PGqmAbTkGeE%GjSC&bC+~))I z!V91m_Iv=nu;&Bl#W?x8*Bia?0v#^`=*3$aNq}Bl76bI+9z0zhpcfoj0KKs1d!rX` zS>Nb|*Biay$aGA-*7%u|o#W*=YFZN~tdhwPN^ew#6i@!zyy#S^H^ui0E7r^p) zz&!x;Vo%xYE3g&qKOX=9V`M0ZB0|hn+#-oYcKEuNO@`6(<3O4+e*BNA=-pP0q8W4I zPwvyZIRxfp8Kjdwys~*#s8>0!=ET#5n_ac=&}qgZl3CFDGuqUE*L;N%!cDB?cNVf^b)#|g z^`2ST%}a<{2gSNP(&;R}VN2HbMCqpHaY;(j@IIV5zBE?kD$VNV7oQJzU%cn5EeclS zi>Q_|8$cppy=h^k(`2!rer6dOVw{xJ_;a=44P$=h0^>Js&0$xHXbZgW|2d{tld(Qs zZPOrybC~9PKOrf?icMH`z-P@BgZUY=BdT}I6@zCZOR3Q zpo6|RDEEV%rhhQk?BPjy&EC4tKC8u}`-}O<* z_y6{C!Y&B<;h_R1R4S;WY%2CdFm8&fZ=nAa%vWe!e;}0TC>lVi7JsbzW?P6~^(`^~ zor{72RJpaQ0ThJGB(S~S(x?F23$G5?UI;Kp*}(Q%5OmGss`_>UY_GS3C(^10P&UB! zS`f4Xw%1WMu)SO+f$im@0BkSrePDaNCH)gtv?Tu?mFF@6Q{{lE<@vzMwt2ukC_y7} zn>!`~=OFC-?l)@=RS~w^oLv%4*Lq}=%3umCEJjZG>+l29eRQiXxU|gOApGh$SqQ74 z1IC%TXwxljshSY>O;}wQigL=)9KNhqwiGUw+*#BRp2LFKd}BS7fyMZqkpiRIt%y6F zr}6BbK<9ysv4udxrnuvExdwmFHoWC6rY3PmwWJlyBM{fm2KBP#Y9F^0joG9US)gs& z;}t7o*mOagsaxs%tV?WcraTHzl_3zm7bH@f=#8NI_&E*Njf6RLj~6I79$$O&()MCC z(1^D>@r-C3|C-CISxTEBK8;YsvN7J}wWx1h``$k`HoiW@^;0{vegX5)!lEN7MI=F( zxC_JB8dYHxrX|&G=*pGr8?mO_h09Z)$c zK^8K-sbn_7(y%b*Ma;SmN{W;fICn?<`RSx&<}SVzsJ6b_E;Rfgy2rh(tVfRRdsDu#o#F`Lw3|i>87;f zMei3ZM{l)IdLVmzVPMtfAgmy7a*7RXa>stelK8+ZTsnx(iDm)N%rC0FFSTTbT*7T z<*scuY_7>Y(~x?wwNL0_Zuv(pKsx5b?Z)#(32Nmf1Cv=hpzA|+JCnX`hLd3ra93aNOP$hs# z`6d(z`b`s1JpXg(w6(O%zEZECP@C=pll(nWSHz-tb}a&?sw)92H!1@6Q0yN(okg(v`=Uo% zRHmK%QVlXz)nJXPS7l-O5__SK4%Yl(&z=?~r`iF?*t;q#d}Xumu1*?m6x z5nl>cOQfFz2eJd7EHq!mey>aN0GbZ!nmfv@M`W;y$VSxd|EXFZwGFrDj9o2S8S4m~N|0DvSb6c9cC|RdV?!r~Pq=Ge&Sx-@ z7aH16e+4-*5a@ES|AA`wgnAeO$GgY!Q#si6iYb|;QUw0MX#==HqQWIjPOf_&9Q9`@ znKOISac_oum^d>vBR>nYWHrPSJL#ACEFtAiteB}Ua=DYJIK&vW+K%GRyf z=m#|^liK;hq_$%LmK_c;tntsGJni8Fg;4@EOnfyJ8u;+S*euxaLM*BP7HoWV!ZAX8 zwE)&Hf4FyVX{eY`6#CVG&xes8lM6-(n8}f?3e@nzvj^f^!UgYQAV&mN1Bi)r#3LoJ zTyv}dR%^M309L7lV0QRQOv#_5e}XnO^jl_N4OJD$;f0mAsR?f@+n|CEYfus9hMN>M zw{%-n*gB^IKd7A0QrdmQXROpMJdSzgE2j``D2vOIiDJK3D<7rXhv1>LIvweIzR2fX zBKqwHG`O(mmDQMjfOuHKb!Xr9-X0)g%T3kwQLv$3uB~aLQk)nDKS_0G+f1`Tr>1$- zlrnTY21h85dg;F+FY`gvr7<%cLiX5MJ%Phj+Re0xS8kyza64C?h5z0L{<*GADqJUY zOuWBIriNzu6plhy%FIYCDV<3Q4V&1`DgXw_S5I7dSMjvKn4?vRWvv#?nd!D^GH7E$7Z0@&1Si%a;Zeo~u-R53Ev5(YDGS@6!e$A=Q#% zDx1X&LD{dV@uiY!uB!?me2r4GP0a%cme+DY`3i@Kb#wER6G8<+Qiv6LqSVWan_~!C zh5{w}?b6(nI*3)x6(u24>alor#^2GQbZAegX@gFRU5xogKwWw42j(vTy|LAQq88VP z^7Zljd}wBC2KSY_xFX8$)%)#tdZ$^4w%=*{j@N0yE~Jm^x+~OMxV74JrT;907)x`m z|6>oq>*U8?g%anwle#PUAvOEDT>c^fQphW@8 zRgj!D+m+&$>Jsy(I8`_8&pU3kI0p-ku(K>9bg>Gfk^%xvlFtPWf)mZt`fOZ)=ZGIZZ zQV<*|uemjVKke|9*ncO#7V}seI}ctrzi9cuaWO|6H6jR~IH`^9N@fQd<~vDBBHX9C zTge(G^8qQv{nIi5>>4famb2KwkDX3T5`$Vy61)WWJQ*Kl-_s5j&>F!Hg~RX{LlVc0 zVkp0pGzNaa91N(6c=pB8_`!lH)g%2PKXQ8+JP+@sP7uZTXhC#LB$wa56(S|LXuBOF zA2^qsDD^cFcA~3F!zQ^uap=#Rdw4e1^D*NShKUSc70B!bOIRLb`EyAPHy)k&3t8x3 zWAY6|(TXU#n5wKeVb!95^K<=`-%l9mkXA2!M%5V}gBdH(cBU za|`pgMT)a%i>XM)-;Ec^Bg!MHA!}3n+)JOYhW(bLtYA7L@go>J1D%)Ecxs0YqLyIe!aGd_2W;l1}%YnpREIAcOhSD(2v;k$- zK(LQ>#3alHR`RJ^nTxDpeIreSh))Z%N_-~l*q|I@ds#G3(fA0QSU#*&kzVs;*)~Pw z_ld1xl3y)o54*G$@PnCw2b8^rB5FRk3q`ja z-j1XBHSY;EE%=U=^Ujbh(2swL3nu%Veh^}s)|;_EP7O+u+`1&*gqQFY3Mvhm6cSNm ziz0g=il7TfCh}&SE>b><=91@Xl{|6#5sS*HkSf>ubka(ZL554C;di1i9oPG=S%Fdt zxiQd~D@i_*6OCAEXJBfC&~z}XATG>0TjuK4Vb-y_p>vq129@bYW6v1vCgCspT}>W* zGU2-qeNV4P-iL|5ni6b%=9NFD9zjdWp7pvu+mA!KHzSbSi8i&N=BPHMjDlO)%A_RZSRBU2 z3gs1?ld|o&Tv{OoVUeUR8_dD;m2;kA4xq?AnlO3WQOCI(d`iWqRC?i};>1u~LIbHbk_Yww5E^kV-DA)n+_;G0gGqJJ{@$>^4JSUfoX>>0 z^{k>eS=lEwRu;`A+rRfr;}cQh0)&H6b%^L{+o2b5sCPKpFSef}3G~c029m|T>(zsc zTxu@Go0wlVtn( zK}Dg>u-I;DX&_@$Mhy&E9BHehoog^fx0!mLeX(*;YJLy_Jyvn0Bp1vBB?=jzo=fT`>sq~{<%hmM!%QmRk;d&X7;V`ftnxk<&M6I3s8t-zWdhRceD|xg%r&j8>b?c8- zSjI8ribnglXN$6$zB)mMq?OZfs0=sSl9(FQO6Z(NEK5uasXs+riD+Jgp&QwF_tFuP zD4`;n87cdt?6K&HQBGmB#N_67h3tr~-I${P?to9Xu#TOMm(H4&z|Pbtv%+XIt{$W& zSMz9|HSx%uv3Eb*liX>0?_aogildcOvPHnBBE`Z|OtW_9vD+s}KZVR)O2|!4NK%|1 z^M0brO2g8$<~tmN>lvXfWpe?EzrWP|V9!urZJ0q*8R~FUMOC2YX`T39VI9SW<4Uj} z{QXh$&;)PcIkHe}*htR#W?|0g$5A6lpUeg3LYo0tQ=&@OQDS-F=9lZI9%*zjJ zW)7Ky+>SjWb)~;+P}pTSS}{B-z}Q1=_ZwktyWH#$`op(Bv`W;51 zlM*32WE{N1iot7fD!AZBF~|E8AM!A94IZM+9jXu)b~ z(Z-OR)AnieOTzG+T4SbNrYOeQn~y?AXJT+WeRD$XDm`zj%S@lzRQeJ<4NB>*XmlcR zVq07XV!8Js<3k$8r+iVzCOLzgU0$fTg{LSA9Z|GYq=n+bkl?TNnuj!W9^E0;-shMN zH5XN&JY9JS^QDseCZ_L6_#5w7;7FSa=qu9}PYL@C6?icuikzwJ9lo!&Ag807n1gkc z{GKn+(dAklNlZIMYILn9OWWNGKYb=qY)f<6{xkJZP|0@PI>2?;{+YyUl;KV%HEqn9 z1I?>&L)OnfTH=Hz{r&3b;I4oW<%NHZ$d@itFLh`vp^SbyExw*l0w__R&TLysn4X(i$akD^Tl}|Z*qdy|Cv4j z;ufS?>Be+w)NQE9wY}B&P*ymg)ZrcuXX$P`O|>KP48dQD*nc7jl3n5+axUyMi{{j3 z8{JwQsvY-raU&@zq6Ej@$Su{{Lstz^n{a#1%JAUKc3uZoYoZ?hQaL#?2pEf!oMC#e zQoXi(ASjvTu%?0UFB7jkx#x)7h0DQa1OE7@KInw)3HiqhBS}SQ=dc)vAgRZ=VAQ0M zc;Q|oh#H>{oI>fve9L)htDpMM{Nzq8rentEeKb7AH#uYsLh!uP;~Q(AlqxN5y^cW{ zyvNEF)9k3oGW;VUMf7wzJR{1k$x{uf+$Tz!4>8!LdDX#Uy}OTsW56nixHMZC2HQQq zW3lU8%GNRRzuQ=KJ69kH2!P#XY$_LXgWK$jj;~jsb%09nY`+@sfy56$Z07>$HY(*2 zp7((nYupIhkXgwNZ+3asBJ^0JBqZ@sQE$^3>^P2(PU7&q4=F_36Ca{dPoHxpG6g-` z>m5qBi|Lb!@|O<1*&B9ZS2JzSOqMRii}*;n2=pGSMy@bP!^EN{Z8c~r*+mW{BsH$wHD;p zTRG#4(Fhu_S}h$WR!c>?Oc0Pz9s~?B&>?d?iXk3{8CH`#*1g>l-(Ii2`R|nClX<{v zKBqc&svR?gZe1kiaZF+RGQlg(@_U2hk595H*k|;pErR^+U`ADntV;;Oocy|^Q9?d# zY(8Q3E-KZ%j}jKSDq}*KXASuzX|k&`Mgx%$eA0+cV90K5dpr9b_}V5}3E8PD;D%e# zsBz3VM33yait2*O6pd^P3&XHmj=th)udPb7$7g2awfYHzK^&2&QsZhm=O9tr@P(P0 zLJG;##IXI;D-EI%s+L#^B;=X({6^7>+4KM>#8#4DamF4-atTB>Djt02wdOlQsF!Dc z8~8P|_SeP!>BZ{sWzu-@V6=(6bMLW=+R7C7zRA|b9B}=9e*&`AYmSkouX}6qnu~{? zh#Ns6_Z?`0i}za8IXT2wt@0>NeC+5+%Y|6(4*8^*PS;91cKA;#I&4$LTKgWMEK*md zp*RlhhaT+Wn?2jpT9g}`MxVT4LH-=@->ksMgg2DoL$ zra4{qa&qRF&%)pm#X?A*6t*cg`)G>~)2PT0hF0LXT-4`FH05hB)}})kN{*nJ(ywX2 zj*`U`#W1BaTr9(n3@x9Ob|YfwIX++}+BAn*fO~e)?et`N)vLuuMCg>`YA2)TkzAv)j!a zeB2IhQ!5I$auRN`bFDaygkyS+6SxvC?guLmHZV)8RT@e2yAucuE&L#n%|R)aiaUw* z0pq7uzL&Vc1cDcx^td61OLAuf&g)#C6P$aY%4X+~jidl*!gE;4JzKYawp}Up3apQe z@b27hFYsU76t-c$5Ol50k92^cY)cy+qMyQ*G`eH8qr@Tc-bczr>xWnnoYEYoWJ$nG zH%;|zpqZVnwi0iBlR}96@*!sK@pVs+#3H9nxacJ9vz|Dq8#@IhgHm?zW{3OUPuUe1 zdwLg{c{|c>c0N!LNesSBsBbf2_E%0Eu6vqF{TQ~vBolR|I68O`WotZ&PHQ(G?XI0i zI5unt?qZkN<9`#rw2ZoGvI`9|le<9H>MC&(8cwhXYy_tS(@`>8SR~`sVb*-e5y7sp z@0BqgmPyxuk5wAPi!QC)lgA7K}0PCREm?e9a|+b98Z6Bf;lc zHG+B63qumD1U>;rEOGm2%=xtTN(A-%&F2dy=b%4N<8i@t)BNKni{h~7km~&pLGu?D zW?sdVJh_srd&>#M)MdlI9s}Wv0fwPlSpJ$XGT?gpUJJg{+K^IcH0GPL8#^{)Q|cwW z`nnf2o@Afz#+)?5>fvbVQ(2#$I>(kS* z!QDMTa0u=a2=4A4T!Op1LvVKq?!kiw4eq+{aL)TY-+R~n@%^biU0u>^P3@YhuCAHz z1m(OBriNVXQ6AHjkygwK;(yB@l9606Kz%G#7dhCkS4ATsCaw3C7`d%dt-f!cQdWhg ze;sy}rsR#Zc;#3_Ri>I880mlN*%aa9r+7I(8vXIGCgR}NFnu{Ydqjs%M2w`U7^{e? zh$;=bxM&r5z&=VX|2#V#S&b?WGqg7x0c1)AlV)^}yvgKmo5YWTkGIz?2c+HJ_d&eu zH{U?ySt{R2v2k{v;6-{5Wb>=*i$4vgplRESi5&64-|1<%z9v#$;kX+cP0}^3q#3!P z7;^alUql_h8b*0Ojvn{DtkYzVYV+bUPkdWPF&~%!=Qcjb^2m-EP8K@xTfDr#%v8 z*bi6(t9{WqXuk}qNX<=s{5zE%n9fpjD(w$Cbm?JH%!D!E0R7X z?y=7lkGdYZrLUSfJ3;Yt)Zq+rdYJI*&yr8U^xS8V@+D1lJcigXDC!Ex~|=1P$o?}-l0#(<=<|?=%0Y_ z*1Uc#_FFs(nfFyYLf$NY_|ybyZAZcvmaT(7F1u0tvA=<@+gl$Q1@o|T@i!_s^>3~T zc56&N!QY5Yl)oJu@Vb4aC-_g!5>?ln*suu;TDULONhR?8mN?W6O+=@?YM}yEuiU$W zxbqQhI(jwPUNxC!#2K6tn8T(1RS8=%0{$~Nnd#qxVb+S$r@IjLpI)@3w1v`a3k}7L4JOM>qX*!u*me* zowknNtonVf!Bu_!!|{ggc**URN^{o^b3IE@7(S6Hk_~5ua{(7|7nUoC{iez?V5)Jy z`_|u7Prv+0ef^+_Q+ECW^ss$f3AesgShD?Ud2^=#WpJUqdx0Ss-8|Ovp;SJHfX55U z2f*A)y}hWa#y4w@=g2+TY=C&AAY5mASd^Q$6U? ziw-3TT6}d$`~@y-iH?LcYb1L!0|lMTdy39Gl}L$5&c$&AGJ~K3WhSoFP5z%u5$C^q80+zYA@J$lb9rH?kyY!FNwN8O7}at>^#yWx)6vJxvJVo=EcjZ zwizL16@eXI8Z?kh$l)0Id$hyr&Mve_DpPX0} z*XuX$LUfx46-w}%w&`>kPsmUXmqEmD3s=jPimn|6f*JWQ&x}GU)(r9b!Rr^+T>BgD z-%eiP@1i=mY?GPJNwrx^ZuC^sO>qPo&`>R(sw=J6XUeZ>SZ%I6lrmxQT}<7&-E@CJ zeC}%4Vrnyd+a+bL{;0dvg_6kV7*GpYBs=*rdfKWwZ59Lk4r1Md((mlUOu=lP8#r$1 zlU6A#`tx)~82x@u9+U@aM(Ev6L%o)>dV5a>%x#QSj|y|5;x*MbPGoM*@5064arVaNGwk3O)<)b0z55x?Qa z`Ubf2r7(a4g;f3_<)F1Weqw;NyH+ltT9!7Wqc&o@jY8Hfh`MLuOgE8Uw z*~b~@PXzRO5s#w0WY{fj?SX50`uE(Lshj(e9aNLXg_)?WiF1Eg@dhU2!*&1eRST7t zJlMq(ii74F{q*pAS|Zx!MklibF6s{G-5I6fpLa`K&;G)8=JFFM4%`OzjwpGZHAE9y zf!o3H^dV-SpTQ?UF3E_JHSl~A?6YXXD$2ifM!}UUMJxY!rHA-Crb9IaP$deL;!{Hm$jy4sdVdXc*O68Lvd=Tz)$h49Ht; zbBk)Z7@ViAFC@HF2oVST*og6R^y7R-ZHxF$SMjk_3U;i?5bbIca{*ov2K<7>^fwPC@R_}L6g3tq*3tD&tlu`6)AmT7{$Ni^{91->AWz+c59man_4%Y{{8B?;SI;BCg6_QKKL1y12PZHS zdetr$v7a{CmVPzoNdlJ8 z5#2q7@O1U*-I$4zW!;PA$DPSgo9^UhxY?w&X;gE&c-h;26yIgcJqi_1J-HUx|A0-< zO*hLxA*zF{8~!L|G8sOuJG|bW6WD>w#x;d`bh@p&v@LZS;0zd3UWyzN(U{Y6mee!3 zBl_#H{YLyN-Xuz6nqfE+YvhZ?^0x-B+9glTTV(p!t(achIkNniCG?t&sEM5+$=D_f zzYen*L?dZAu~ijp6hU=9s9Ij45}tyYaEqg=twIJD=-15+Sv8413qTV$Ht-w6ZYG59 z*l9$t(5=v`52q~q#8_3#%%L%7tS(D-FD%Z=#CTxHP*(0uWF2gFnyWvCuKL3>-bXg} zy9sdfyokWyMhS$2ZoSIe5)Vr|qW!uiHY9IOB(D?;a?jYGZXtY^W(=X0?mA$FTbb&- z4=Du@Iy3@jy*P}etR2vQ4=)Qn*gWbJ-|Z#ed^|;h9m3fZ9CailIILdITXsW~;X%>j z_^AP#5NZ+?UwenTHsi9HvaThq=QG-3X{CL*uL)D~CmX3t3R}b-_vU>3wBxVe&}OlX zf?5gn@d^aphhy8b>zO08hmzKoZaUc~f30@+#o@Er^tB%pWrIlb1cdtwLalo#@n@jz z!;8ZkvK`>J&L0kh>gpr==>PMtuSa0(t^rx3G?C->HC@rh zofPcH{;+Ijf}AW7L#4*T zJ8}~%v5{7yhyMI-79eN|8m?AzBFty#Ueiw+o25GMjto=yxd72M*Hx@(^;${=nwK@y zcHu8MW1{6pz7moYIeJkVfeoWoek*-DawL6G0&eN0$dDJQkCJ=VIbHQg-#L^Y?S(+# z=BQQpCY=J$>0^^qci=R8FEdiq&x zvTB%mwUs}G45Jo~5byY=;oI*$Wp-)=mZ3N*&kuzklwGyWFubq}2k1sH(5CqZ@+N5dJ>sIp zWxFtn#8;9&m8sE2pWET?P0g_{I~jGCOp2BM+9>Z>fy@uJj#}9Kfn%laT9G~RwGhh- zE8A=H=CHlEWm#0Pww!-k!|s`YToQ@td_x&rS$;Iupg~gG)Jgwi9pAlTHfCPqea3bI zBQvBWR7{7(*=ZS9L*hoEo+1LhjLTv6@eGAopYQ1fMzetoew#M}cVjWiZ-a}w-?vIK zZ=0iI^)W-sH*H6AW6}p8A>+;GFK?T{su!SNH*`ZF!oR+sLBAc34Q0%OZ*i-7j9#Hn zY8TN?Y9*LXAF%=JxWN6^L-taQK?LVt*~tLWZ;195^e+y2n+484lcol0+y0NJ*n=*$ zDB2rNFl@h}4AMJ|J768}6lL-qo_eNGc6_Rt|z228_|!1<4Z zL2a{4_ffyNp4qt$ZB+B}&9=c&pDogU-@jikid5LJHXLlbbM+jj1FKQbiTyBGqf zBP)?(ubMRsOQD1MSAycg3R7D;1NVvbCZebHr>;IyuIJ;&*3`C8A zt#b{ihRiJhq7l*qJ$9$h{^3gepb<7g?Nao&?}>@P-SA(y1n$Q6op71R8NqFs2|LDH z`?+Q5l4^=vOsqEHJ(QTX{a%^1{f&Dke9$#&)=^^HmryM+AB6bU&Hy2(zvM=!;NIbj zXx`F#l&6obj@^O0P=n-TDCHPL;o=oO2S__;Xkh{W;=mo@!o@SX!BBVN#sY(Qi(~`H zQ0QP#2gwug$WXu?e-6K*yi+&kL%a{AB{!gU;*i0E-kH||P{Q&a%eSsa+zIqTas!uAM!Jr%csgwV!dhbvK5{!%Q!Ko0gZV#feZxU zaP?+y=;=1NnUU3z>M?&Eu1|rJO&}b~)FaI}3N-)MxORb4uGOIQPVyg|?r$bGDM;A# zpZ*QZQ1wF=YC0*9NeR{Z3_UL$HAb6`PhGrEs+g~*(_AiJ06`qtO_URlty_g*vhUQ( z8;$;rXOHruy0@Z&-?>|bPHy;@D~4jk_N^tbLQ0N=h6G=)O?w!}SHq4|9YpSZPhzPg z42|&4QdKX`RV3B1?zCCNoF7=%h1=Jz@+GaYDipBw2j37G{?NAwk%69Cy zbulc0@2Bk*mDG;;RzOj}P$fc>pDR@r?~E^$TAH`&>02FtJNk6zBW>Krp{~hkS@w`Y zWHka)5dH^6Km$Dyxtl$p+#R7_tF2F3o?0ZOL-QHc4Ul{CT`*Oe}u=15(=_14-1pr-H```^h3zifvj@r(!Nf;%bR( z?W2-{k&#kWvYDo?&T4=dNy$d9F4EpraEDQ@tEvTW#4A0Qv} zhgoje(F+<5okf{+TbXss=Ei@d4AfiDFf6S9;*2gJf^l0d{p2nnG*PfRd(|PJSRB|qwxCl6 z!QN?j&fNc@K*s)O$Z$+^0bvh^*4euS{Ts#wxQ6BT2s~LNc^B!R|G5uwouC1^vllt1 z6pY2;4_P0g9uA2|AOi%P!4{Jk^nbK&%>gq=27q#V2>j08wO|B;t(YxfaY((-V~9jG zgFd1QNAsH=OYQByn`)SQel6bCxO#r~-%YtA^!pMc1e&~P%8bkEfQMI-7H);_8bN`) zBq=4n``DRjoPu{Sm_f*3E9){qlbTe;$WP7VT#-o4@LlSlh-)y1fuGIgm{wzg;R{)7 zG@p`3Ax8wh@DH2$ncC2k#GowgA0yngf6z7@`u?LQLJ%o7AX@?mUQ?Yu$1^+YjsWB$`Cnb0X7^tbrZT; zVtsUJpU%zA^O1QG_lj{97>&umuRM|EQIN_M`Ejqb*O25o{Ft(9YPB^VM6&0LrwC>v zqvi-{{*u0g59-T1T^$GSxRluBO(0Q5v-FggJciz|yH;>OzGr%56=@#>7`6b=mBW>m*nsqTRHPdQGpa>Sbr)Lo#WdkzJZC(ZW1TA+A;Q4$ZmiJTU63j&)~UWEu6PILlr)ydzy~Y>$QRsZY`_`N7e1qbE?6A z2!?5`k&=bz>^%{fnn4=Soy%K8b}y<4 zAniiUu{}2%`lkggUdHJw;9-3|yZr@3)el-fC(Q`}wZ$sYy&Zf$5B~EQ+aNgZMW{Em zkoLD z46q2p`}E*JKicpFS-Itm1Kw!}?*;y$2u1j3i0z7rm&pSKH*ChrZ4b$hm)QbI96fn! zh59bCjk(Oo#x7cVYDHb-@`lu=H>|QnS=!B#oim!uGti zo`1a-U3}EFzf8khVk}TaNPlGc9d*GNc9z-{s-T@+F@^Yvl^)k@s9m~*T%MZ4$-4&+ zGg>DOR&Lm}KmOFee5EIqtq7@JnzWLP&DXAqxk*B!ZeKSR`v#j9KE6?(f?rI48}Bda zSomv&O=oIGexu>Bai=Ny4~E_bO6#^y7D)4O^H7`Fe0=o37n-6wUS>uZ^#3fqMrmv_ z;FoIZtEV}=NEu=e`7)Y9C2ygm%jcOwFkuRx03Mt6$+O%ETBtdu{0BK`zHihr8f3}J z3jWjNZ)U7*ZY({);RH{4%I~tWbQ* z9|DB=UqS$9NrHJHqK<;~q6GM5kSgGp{SyYk-f4iG_d*1q0Q~a%kRI^MBDQd7FG^ef ztAJk?v4!P-$UO%9G9XeF@XMeDz%Rcjz58X5D&UtvYB(eS8wA{2Dd3m?qqP+9%m1#@ z76Si83GmCn>+iMzHAtctB9}yZZ?xxEI6WQM=3t)Np?*gB)_0|-_PISxaJr(2skr{W zul*Fi*0n5Eon#_pn8Z6uRO>m_2fk{B3zb$Jt)qAR!KJn&KP#Qts1I6Kl5vqs{w%_l zU%xi_bR((_)EUz!Jm>jrMVi++tWkv&%cS-KWgd_2j+R+RDK zMDi9YAZ+d*x^R>vq6@SMk=M+s4Um1~<~<}v@#-ku8{m?J5PYH><2w}jhc?IB?NJ< zJO^aM(-It2$ucAI7c{@gO)c^9UqnWvMuIcmZd;ka3+oec(_i zWDa0~kUy=$A*E~5?_T)%HhUqUaLDSw)ZtMWMb$~jz!A~30{#aV2o1+5s?eYv0A1#k zX9Qk>L8cWD*$0UjM+Ngv)9Ba}{7zw82KGKwQ|1YTwh#|60*64H;m!+&wh)-}%lU{YtYn0=K#lgw_h6hlR(jy&bQYX7GZ{<36KsnQe_orDLc~W#oZQ7! zbA^Zs-Q%Po4H{=B%X-?7@Pj{BJ`t(8+mZQ zQA;|VXJ&b^;^G*r;c~*Ja4&xuzal|wYMK~0*UP7NkdMQGVujBCYlp|#YVM;>iH)lI zh9did$ara0ScpzC&#`PvC3>feDw%oa@M`bQc!On#Hp~cF1owPu#;dnyePERcRfB?s z5KINv=jzjmQbtf_Wx)uHE?q3KEh`Q^O&|huHt2M3Z)*>D9=JI;d4avP@C*NW*evQo zrEl#}gib9z=|h0k;H~Qq#GbN>#Ag1U0MtYed?3Y$;C4jOG^u&f2Gu>A(V!g3!v6;c z8wB9E6kMQ!T7i^|tOiKQ!Wm#tp&Wsf44_#DQnGi7CLkpPhI&9s7Ssx)WMn8%jzCHl z)C#0zVtPPI_Aas#ksfa6JtZTnc~8m0D~YJ!c7T)&U;`6FYXMTS|7g`D0A@tdV1rtL zl#I*{NXgJzfRt=785}N%Hz!yM?cn#`@l~dt{sE1q=K7xOR;2T8LJK3aC*4khbJ$&f zVT`x=)rsLCd6U+4ba?K!RPqlqSYpt75>8`2WUZ1UBJ1v!oLNxKVoyWidqueOR@+H( zve@}ax+;mAXzGK|f@tGyAG4w`D>)X*nEqhFD{l`TO6QDeDdV)nDsN^~abl-qhtu|MW&jKyxCF{mS2xl53~d7*Qd6crkXgO)}B>c*?D(%cRWeRzUyua)d$b^4BXJQ0%sK6woTsd1r(czU=_~;E3tAw(Ghwuy{ zB+4b~0~rDjt2YpaH)##%to5X)${=h>#N##i9W)SJJ*5`s-o0e-ZEjtlqJXw8YGoZ9 z9yF;nv54OKwn_gt;5uzZKmpOiB82&?Lwp(X#0zoD4F#qIWKwLc_u9hOe;Q=r< zhX>d&|9?QSSpUDP*rbWuzOeWH3;;?GV1+P%aNwC0=08PU!>o(!{wP^fGgP8CX8yaz zznEbvj2|NcPEKMq$cSvTO zG$sVL@GjyvnF^SyN4}O=q=a=5zd>YoD;DZ_n&Ii-%uX9{>KYi*St6_Q4@n!+1W(m1 zQ3|T=BsL2~l7AF$*ekV+teb&j&)Sr>__B;fpF;DqMz2gpuTR=G(IbWy@fULs_O#?0 zQFv|7sSGA7-Z3M(1VOKoDj&Qu0WDf8iJw;^8pCIEk7^5i+ssra?`9grgfG%l>>pN7 zWGpJ{-O8y^BYpaDAo23rSI2RCz0+&F87LsQ4Wqxcb94<|$%$af==0Dl*pFj%W~x}q ze9Qgv*{Qs(C_}wSEQ(7qNZR=O=o4H+q`ld(+^w>ZqB2m^U0av{vQ_U zvldmw6d*l3;Ft+3Dt|G@$uwDDRf`>kL-m8dc0Ly#yjZT(BXDZ+*0<80>|*w~{Unro zA!^#Lo}4^Ixn7i;(tw78G{qt@$?F;9v{PrS z5Bqr4UKiIC0p^xI>sAJ)FP`Tb=N0|Q(t4==Gw>FPHL6sFC9jSei$tutXQSthV&9El z=c{M+$Sp%MNE(}GOuBB4<28%Hc?fdMHwi>J;9K}$z`h!&%6|X2cx zLvn-a$U0cjHHeg$_(qB11r!$C2lfJb-xCLw-U_dStvm97@d=Rr2HQdgdk4K%KM6$@ zxtb0%XC7fn!5k34O2O2Ff>i_P&lCIUz_K8E{}&LQ-}~i&@R{#3FLW6OSr!CVFl;GU z0^UDNK=l4jEJ{cZNC1eGdHU#jL&3JOz!bro!HEF?2>>AG`-j?9EJQT`2nQSxW`M0v zKpYWO7DQ4AAPyV+n`!_PFb&2F9q=MUJ)P$86UPe5*0)Wc04mJ}+uHbC=Mb-`s|?D2@EV53sveVKPqmj4sV3 z1K+Pt^=fR^W<)MdN+O`d=sI6bEH!o2a#O6L%^?(ESd=;)5#|}V2dX1i$+(;4X#~wl8(|DPDx*K)M<4ar%-T7+n>$cD` zy>pK}u}X@H-zi@VrGgX1FZ>tZ_g|7%p2@&FcBzacsleooj36K}@zQ#$LeqL94=aRv zQl@xj0s~QyT#VF%Ac?h-X-7q2Vfb192bTv4;N}~-^B^mUJ{$A#`(ZCo({eE)>;o2pACL#R%h&2+1bmd>?CGQC zQrFBPHg5Y)CmZPo)gFr<#?^$($0=;b?lnr7jv3ljE7^#TywrG=0{V=nx{8UC5xNKm zAAZm}@2tD9e1uE!#I45Bs5?&>ip4S^DI{MG3ZkUoFvKTLGAi^TrRJIrA0r7M{`x|1Emq&tvpJdO`x?ZKvU1%kU(EK9Rs1{Zuh!4chE{jy zi4dL@yBio%OLc8L3F=L1r%jSY^ndXuTSsw9KHe%;iJ5i5MocyhMLMU`8C*k%mj!M& zaLN9h964gyB zb$2H+s&%xkT+5DI5NJZi_gX`3fp^G^djP)9!!jiiUClKvt%HB`0+I^G1A+SJqF~=Z z@23ku!Cj~oAOXc&mLr?Gr{G1>syCzC76Rkj)Uslso{v*JXb-`?q)=~w@df%PyNifz zp+flo502~tHqd`wVu9?UmgocAOC=N>1PCy`EtUxIcN+Wk^M5D+<9i=!E+~*)Y@(6D zy@+k~ARhwPC@yFZOMvkKB0+%h_4WY92lqk<7#{=(FuvX%MnQlL3JvNFFuwn41&r@~ zK>$A#JKRePEH=~|V0?l8_yJ@W2YjtiZ#!oiOKlz4KsOip!(A5#3kefQAkpxW0@H8& zo8hCA1&5m4pj$d>xZ`9YUR1Gh&90W6q9WEBS>&11Q%B1PXY#g2<41|Nz7z8%hdbKh z$j^5y<)ij~^gG7H;m`WYlj0Y{P`-{QGJ5RLvJ}b+=1c+9o`wZ~UUXCx3AY@Z6BNzu z&G3|R&wkh^=$%j~Gt5aSU!__+3;AZ?QCR6I?ApRzEQNrF(jZ>+1c0b7flVFL0{mZN zMJ6cLRm!hpIpdZ_DvyRRrBbw|rC;7s2l~E%;9gkXpAJ1#H^LT1XS~SrUb(@@FgC14 z!Qh0^i)e)M?QW~rCx3h(>5!zqh$5&`^Tze7dFFr>v66*=|BHiE!HetXRIme6Ndw|| ztP&uO4*^OmMXW#^570~iar`^Qduat2$^&t{N*WNyW5E=$0&%=b8W6|R$pf*~yU21x zdg(9kaXePZdmJAElvbp_0C7CP1}28k0L1bC(W*)S%!ndDs-yvNJeC;{$0IbL3&!;) zfy1fb>6wzUoil2Jc4Ex%g%a)M9vTCz2xx5lJH9iZ4~;Za4sH=)uh8v1t`-X zTfA>f&Gr$zoyy^-)Z1R#y3&TrjrJ9o*0gYjB#FUqlpi0Z|ZjD>$XE|WF4AZ(7u8@?&1cusD^ZE{&Kn+|?@)OZiqMX~NZ~H;LU=3d#Ii$(7qpkZ06&Y`%Z}M0*}%v$ zJH%Jr{7X-z>*uA)k5-H1!8*x5^E8;)%hY3#tQIMQb+AYCG!)pEC6ap)g0P_&;55*x z$h5@jf{dUylo-lvJJj5{6baoo&BO*c5KhDv1^%F(n+aKS)yaG%rz`;FB4 z%7T>D2l7JyVO94nwjC-9B8L!%3WY;L$D?4CFbY@GBtVMK3JoW%o84E0F&iEJ?jpXA z$?zxr+nc1$^ivEizIY6lajSvy4Jt`W3cQwM-Hy?aZ4c|e7k!cA>KQVp$>p@Tc$_3V zpH?7O1b9-#gmAsR1k&frE!{$UUJgX4xY3$>jClJTg0`Us;6pKyO1-UkZS9{cJuI7! z6M_|7WF{h$mgDN)j9&Ymf^T6@P=AqDiD>!Py`2T!;xgF6KIFQyO`SPv&%wCof5jk@~0f^T6?kO4$XfALTij}7#{BL2%Yo&xi(;9D#K z3?33Io)N$l&<7R_4g-knlMHOoqM_)k}W zuxEjXBd0oOf!sN9D$UkvP42|8_I_Ya1@{@#WR|?y*g*ODzx@Gbgnni#$C1DA-;Rj! z%MpjN*guQc&y_Av)v^fxZSaDYeGNTcP_yBuPHn-LG%UaKaUC5$OIMr4=^{FV$A(CXh$E<_>wDX<{Pckw6Vj?niH6>Xd`q*~&&4ETpsZ@Y78 zzpqGefGz=^7Ti^bbInY@Pd;rIvWuswCG~kcp^ujSR`QHi_fyClCGEDizg5Sz(lM=W za|ja`KMI;$aTV@A&{`3g>}L2D=B8%wE1&+TsJs(~ZDB6lJkKQ}Mt{4%+0%MCCFSi| zIXJwzDN=%wf(=egESwLXhny1;6cpxv!9KFr>mbTa9`XtoW7Fivr1ccUvE`N<9Vth; z1fBgn7_H6i5dvLobl?u6m(jkUekt%8DpJD@et~x<*orKwUX>Rwx)&xt_hen9y^)!g z*`nHq9E$fJ?_Mn9DqS#x+;fx3b+h57@&cL)U@)GKk>>tsDnRttCz>)7v*q?Vh_t-S zZ>u-osO8V8&rCZ`U@Dv(ou5KQ8u-p&_4|xP%@+il(wDRpeWXd7LKP9f6qTJOp?hSO z&+ZX}{hQ^Pxz~7$u_7(8jS799$u3O9(Iu8ck~M^uKXH=Jv!jP&FJn?+io?`veXS0y z2O?3LH&1|#v;J-MlvzQTeBBMgISoSwV_|?klS3Gh3rku|T5m1>?QQnRFPC-E47x;$ zI_|hHZxa+GufHKxiu#K0jDI+{$M4c1A4d4Z3E^v&hGY*h|?h%#%2U$hJ= zIZ*iD38K=YW2KPuIq(b4)VR{ctm{^+kP`*(Nro@3NM;wLiM<$@7QV&fEppT86VPxh zyqewmwNzM2HMeE3CcgOG%t9XSAPbHzwyr_(lqM?me~mJZhUP@R9qNA&i^)S0vL?vm zsLqD>?(_P$H37ZLkW1d#)OjU z?x*iY(ZY7Q%_0YEFLVp9i}VWT#>bB05g7+#UlsKm18Eg*dthUgjw!iw88kUrCp-S9 zLm_6^M(M7~*Z48UOpksQ7xwjgWI27RHRUus+1sv0L~HBn6{}V4jA_5MvX+> zH<}L3;X+jUP==eEN<)Y#KLIhBiZ;i%@Vz2G;s>j7@Gmu6ds|}f-ygdkS4#NpB@I2F zP*;ojeYJ$_C^|J<%tk#_2tDS~$f_>cD6^_>1huh6R+r9MG}{|kZ!>0|H!2KJ3zG<# zX+>%dBNYwln+xE9K86gocwS>|<^R>kfOjeM7%@*rD#h?@YL2JyZ1j>w>olEV6E^Hi?Cy6#Yj`|Dac$ zbS7`t?f;*ShBmDaZyFWPmDG7&Q(xe5*H}Q8s5^odh@DHroDZRakT)b;sBFTOO~#+( zpq4vkN`F5tql>s>SgVRqg?vo7 z=vS;qlf5qkXGvgVp<+3rcQuvRRa*nY%@rVD6tykRADGlpH=e|xI|TY>XoX-#K-((d9@4mx z7492RpR>VgMU(J*U-7&5uv+E*gnDbEuW7mAMiPGo-dwvaI{_<^E&LkeoLM<;@9g?$ zTT|oy&*ked(;m-@S4M^5tJ#C%AT20$h}K@)=c+$u`j;m?2h%>JMl!7&OU^)A({zKo zB^De@h(|G+qxs)YO$Xmb$mQ&1n|?yJ`!}7NIlN5@1n2rcyrkWb#_QgJ!tC5ovk}ey zpK}-%ug-KVr=XeBNsRh$BGD}%kQG5%>Pq=AU|e*gUZ>hW}- zn5;e48^jm)_Y<3|BaSQ;mNDq7A6b#C`ISZH@gnvgSm!kPh(Gz*xTQSuQz8%O5goB# z6*xsc^bHM@Jl052#7cu?h$50@@zi`zR$LBd-$XWV4m339~L2pJh zp@3q9KoNwf@Z%Z6$R!jwO5W78EBzXQV>|40<^DPKg?Mq+j&x{pt$>M#i6+o;&QY(G zuXOQ25IqT75|Xh;b>{Q=Z5y{jURdF|0?By;C{yT<)oG4Xbu4f$W1G*YxbYhLdFlfTFK z3BLe~;uzM)Hti)H;A|%b!F3aWt#O%cWAWuu)F@Sh{C+7;8EKwz8`SbK?z}}>5)v% zIXSBY5cerT9FC+0KWm&dQ2M%;>uy{(Ckl%7qSL!SR=~rq#Gz9dF%0qaD`J&=)7MFh) z@Q26ynk+4va<=JgpaH}27l|uFkk^w#YbdmuIo>73NW{^iF7y|cE|Jp*c56oq(5liI z0!-giyF=mF>3%{s^J!GBDY)UdvOmaKJ)@dqkNH~ORW|YDo6Jkjht}u1AdB1%dL$O4 zS^)f0toRpiK6JqtWF_@bI{hqaoIKhhF?BAN^8tV=LdVcxzWf@W%btD8Aale43C>;gSu-Onx3LC+%}KTUrEC zIy12QYw)*zIF!%zyox#{{ut!kOB|3R@#2rN1!^c!q66i^ccCujy071wd*u$C(02Ou zzXKg)&sX^+MQ^{ZEPICs_^@1u2W@Iz-j}Kb1{4&L?F-ER4Km&IV8e2gAwveH>B0NA z&Dns86kP=PJ5!ru&%ibm>9c5rC#?9PNU01yB`18{`-9~HQ2ye~Gu zIh?Ru;P6Jk!1NeU?=sg0#A&08^1iHN0Mp+Fl-|Mg9NGV@!Wr`?phpO(lC_}=^1d)a z0>V8}Y6g`2LdNB+T!*l0pdjRMB0PBJM|DXoPxqZ0i!i&tHUsB02HT*_Cc>NA_dIpK z^9uDR)VE)s+q7p9sz&*Y{zB}bMI0#F1Dtw=B9>!jRUGBaw-a+{-vAoE-&KRqWq+z% z+E6OuQ2CNjB21UGclEI)sL zYM(w)o8vy+QLqI=RM{trnJ=H9=Z_CP6s2%7*Cw-C&z7=(R)G;w z>`wmK{f7%*Bw9CIg)aF%=iq7fvniFjL9F*&3Sk?Ej#Z^8Vt*Uwr^e^6qA;&zEf3-_SCTG-scH4gSYq{NkQ$vA2BM zX9dLH0Uydfe)NNLidC-U_?yL)l=~1!rQt=}K+U|K&Z%kb61pT?KZk}w@h$8@bFBIY z#%e?BNRfGHJ~g%R;;Sn`1!09xg6n639lFIs>;`iL$QUKG>G_5ye)YkW60a^r-7*B{ zAt#+IMIO8BEcQFgIs7TC$pWs$@>aPjgyY5-+3cg1J}-66YN`!VJ#A7yL&8C5*gPALbXrQ(gr?QZHNJ^!9wP=F*4S~#6 zN5)k`HS(>MV_|We$3~yR7LDhn`tg%Omdn-jB%3KqKHVu2i{|>7V(^Xp;0M@aZPt6d zGI{%eQ8U~VV(TV(Zo{JPELjYVuntDUp<6wn^pA&`zbq^z&F&Y(%YT{^&e6O&7H7EV zm`Oju zLPGSw@RF{*wMk{>Sw^ctqisQMV__64BbWk->`%dyl+Y0j&KMfn;Pfu%Q2>aCu{X@9u=I^8xCxfKX~6wiMhrA%-TXdCR+ zS9&qWD9=A46YY(<$I+hGwXZ?;bIbEj`ifFpd#s-hFm!nKBRX}bTvLpES268EmP)K3 zSa3Jn`Z#CJKU&{6v%F7-YnkZ)8EWr{E8rInskKPj+pa0DM*kgX@Gg$2_O64OvKf_C z^eN`zR1E&3uEC4!MynXSE&BJ2IJ`@ve}nb1K0xwlcwlo%bMp=EKmG z=SL+Cmvt-3jqpM(E~26SQPT+z0rp)nh67>#w*23=Yd>U(zDVmorZBAO{? z7XGI={EJbihaQk5$`kA>SeS7fr=#8fvzu6-|J2CQy?{kBTSPGbEmym_y}&ip-%IM# zdRwEzM^O#_14tj=%f2sn*K)vK;(Bp|_(ZC~O|sRrW@_i(92soe*=MoGqtZ2bA_|3M-u*pn*fTBB93?m093ocn-^x#B=;xji%9F*GFTDg_`lF(>m!zq~H!1gZ zhpDteQv!VJ&)CBEH;JOIJX|z3%txM#nO*k_7(PEWrg!_By>6~mRB0=Oa3)fN*!@c6 zi7?)@@L&Bvdxzl{J*BiGJNBU7$4OzS|HIo`2i4gu`@#uM2yVd%?gV#8Ah^3jaCdhN z5Zqk?!QI{6-QC^Y*Y}Wj?{oLLbx+lI|G8CE*YnJD_e|AVi=MXM0NuI5`quVe*f}^j zdDwXfU%LD{Cf1d+wS~dU8$=ke(Cl)UcnJSz0FvZ&Sdc(sc!Ta?Po}F!XM}B2W4Dq; z?jmW6biW(tAF>&8b5}=Q&VqVVJLdQw#5KFIi+JCXAFK74NM}=2;`1Kom4!=ALjqf( zRqsQ*ty$qrnSOHZp*2Y)l^(0!6@|0$z+NS)>~5RvK?iK~p|e=sVHUQ6z=wVen)Mof z|KEaz-N>e^pZ_yhm;%3??zuUPQi|6t!Lpj<-a2sTR6D=f-6O@Bj+0{BVvux?o_N;v ze&ttY)XkiwlgVYn6YE#J=5*>6=MGBw9dYCYA&wsv-8VP~X9Q`dcd+t?O6}3GleB!F zuAj6c3yMzmuQRQdX}~>_Gy*LXB8OSut^Ra5;7 zL9zuvkf_*={jYGLuVR8j(HjJbm~Soie+w5n#sCl`YXWx z%_%K!Lns0VlT(AWis#22u^Iv`(S&Tw_tL6Q!IMUovgw)XVXnvdI(_{1^nnD=tt4_U3dl>dGxEQQ&+&nGOd+pAaO%4F{ zA(m+iu0s*9z@JI~sk0(F_l>{~OjzeBRrK7_qTbCbu=ykWMTnqIdMV@T(<|EHt7%-W z6GKDk!)V+culaE7uyx)R%89f7Rlq+jC*skJZ#26`H56c zyBnhUs9&G^N>CJGO$!1q^qh3gIOe&yj;0b`BId+xb~!#xw&HKj^|eTCtQBkx47f z2H5!h*zUKB4&38~@hZa&Sjd}ACi270(c*t1dJ1bpTS4$@@-;0r04fCB&8|_(VKchN z{|HI4hih}u;?23Ixj6ejhVve$SGN8Do*r>Wgw1mRVr$)>iFs_?(C!+TJbB)5rQ4y= zFUhwZ_YBf+(Y)t!N|!;^D<8jCyrKvXw~U+du#zLAl(3-#&6WtlkHFO5^*3W8$dy<)?X!Ob)iYqo^sJeudV5;+Xs z!qtU+a5jDJs>O$y*lUO%4e307^I#F!(1~=bc}9;X9DKAxy}q8L?kRT9QAQ`F-5u-Z z1~_oM(C6~q?vlrfBnK{AaR((hcgq)yN8hfLbpa5PZ_?dM7?D14G;Z!AXcbtU)Ua0I z*ZMxjNuSOy`X;(dZv7*BH*!rQ)>ME~tthyDqe{sa{|38R_y8JM~1a}dcyVls)3!lbm1=d9t zaaZjU8S-<}DyOkc4XkhvH{QD9<&pqIxN0!w*zRT_;b--U{p*?R71CCf8nt2dcW)j~ zo(Y~$T$_90V6@oqrkK_?g%J*}NEM)Bmweq*STXOr-zLU%9nGNVZ_lRK(`;D>?M5xZZ+ugH-=1<=Fvv>Trmmls~u8b8Mp(D2^L=-v zq(B>Xsr0SQCH7v@ad^_yddD;nfa4=~CjD0cZs=bDIGt)B0N3QZT1Z8V&XD5Lc4O%W>5XVxPhl*}k zW{6O+ld7JHl_H2~^8f`=BpWV=N^)u*$O~pH^O7+MRyFsc%N@HAOeHz*Tz~WoL^;r0mnlv&T0c4S7=D zTs&4#B~NsvUv7|79c6q`jX^NcjbUWcI_=In+x*fkuSuF$_y+F{x#Nd1(V*F`!LvkrNSX|&aDKC z#2wMI?z1P00{+IcT)+000{}vJdo9jSX}_xf{PmpMch3fAyyL1KZyy*{cJqEy>F^D5 zOwVkX^_-j4IUS5UBF+zDOi$GrV1OZX#;=1w|F2cWff-;!fIO`JIkzPul`}q@FR(er zcO6&#cGfQVX-DdsXOBv$b0#E2ks(G_g8nRJTLjI*_+@`yb4*_989l9H#Km%B4fH1| zWoc{$;-sGh@9~J822D2{p2N=)4Uo7PO~l?!@k{k-5}9qYiLNkJV$+UB-ku2RLYd&w zkw_ig2G+P^8es#l&z{wFU(S^&4_fI&a&0l6a)4~8o{?L2&aunLo!PGQ(7NKHNx@gI z-bcF}95&9h+AQ&~(et_e$=(18@)hR-ISaL{Ndm@647|e6s07dY>*PzLK$k~?P+9E2 ziAr5*e#P%v7q0Z5;Vgk~jqRMgJRIEN=U#ZX5fSYm#lAc=kh0jBAKY=cozKpZ+qtg~ z=EvqA>yTC0n~+0!Ik(S`K%f*ED*TJJKhW@jtD}fd4=((Pz4KpVKExk!btLUpyorl# zf3L$7p%Ain0u3L+i6l^OJhece^o;`ul)k+x0fACta{=#l7;xcvAW%wd4g^Y(m4HC$ zn@XVJBfK04l&-^=0fAEXPN3lMhUl>(8C^=Xd@|kr-hYN!Zb2Q9dAosLfEH5q^`n3qIam^uqx(j zQjAm*JQ|@aVGdg`=jb-_D zB)-huvf6#dwL<06t`VO9$JAw9f$@k=q74#8O~witBt2Ib^sj+ZuC9YUeho=DrAdYi zYm_POXhs1^gZAhU9rP12()FGUu@J9$W9Uy+SgyY(@js!R_{PyG2}3TfQSSdvn?dI4 zjsK43R3+vP+odF^WM-xy|1&;-kl0cW^FdBon4G1vGI`LmKe`#~g|xhsLhj|{)|mB_ z4=RDU3F7(26}?KmJdX?3t;KMWa{ef1*0Ll0l;rrP(=y>l+r3SW@tL@k_OFJzw zF9WJOQIDv!Y6c-Wlo|%<`FM(+ePQ`>@yZ)wAqpdNuC9Xg_nd1eH}ooY6#_p7s6Lmt zx>hb8dTtzFHPhGOn&P%J307B~Cw){1;Za@1Fg0SQsBP$o!DU*Ib#4n9JJa($%ZXunsJX;9a?@wqQ=~?QV}2m(TfX87iN2h>D$Fj^qF- zDUloJja8IM-S;#A&BdyXxr9Ku_e^roYJ^rPxulW>5;>6f9`&aLCHOYouaNpck*0E` z2(KU#VFctmr1&cK05cfn(yQ|@_hiR_lD{wY7luNYVK<{g1*Eao=>4*5*hun7SxPqKg;k(W|W8w9QkL zOr5CIz6Rr(*hrxYsDD#OpHybue!dPVS9b1^Jb-yIxW1OVr~)h=J)m7<3JLH1bZ0Uaig`p@;TlZ`_>}oHC@C z&c>5*{zF**Jyo`h%Kk=7u2j7gkW3X8U}{pW8<@xxxiOfUJy)JY-ZSFOteXJ{ZXD`r z-q|L7%$JY5m}AasHb&V9Sxy<>t>kOKZ|bQT7sZ~cMA$mHS6Hr??LWe&o30l?Wz4z* zJvj{V3dddH$^gzsADi7wuKB*S@$kb~8RH8m75^g?GKddan4J6^B;S`83nDN%>v|Z& zb9#-*+uL}6PWM`WBgFySpzR4+H_sCw74ZaK$7lTnl#SNE6ht$CS$eJCLjNa8cGP}f z#|NY$mNI};#ECSJig+Ua1q@j~RRO7p6U60Lpm6lB8Xy(1{Avz^^d@cuq#|yOfKH{$&9LnD$vBcq17=D&n7A7y+q> zrz#*7@dVV4*1u4K1InEdN|y-Eh?JEzwhv3`ZF@vVRvTpp>bR*MLI@mA&ig`8?634n zBxVWBktynN&~z(?Rj46KLsy0i=$>DZda`L?^CZ<(?bZ5gBCdthzP0g+p4wNgJd(JA zFRHfjM&N3T>y3Qj4MU%Bix}u2*7cA}(3`WEO5D*|2)0y@fW=YK>RDWe%YSPR%PCfk zx!Tsh(*!!fzQ%8ZL}GBAztg5v!q2GUQ5s05n014BruAumB?scHj_3!EcMlnlP5fhTC=lhgBSbD9}qc^N#DiLI>YFTwF; z@}c1td{L2MWUyw6P|tHQS?x?sKO#SMh!j2U|i@ULj@N^*=}3EEgFkk&ungP7W#nVN8JRH z(~(BWtC3%@lGv!w9N#X7DRw^-_Dls?Cc>Gtm__#&ROl9g2>%$p8VFso>#aO;%~t!l zo@25S*6$GCGtCSHE*WHPXRG`+(I{TivbLLVSuYgD6OGjuiQ`Z(NzqjMjiW_2CZ!7J zt&bRoRluvzpzECbY~RMB|HAT`zREI zj<0k&N@Z=#2P2${-yAG#GsiX|^PW^G9XDXP6rMx5_9sk{ZNfaq2(t5=+6NZ_#{R>6Mm6xzx+5 zlOvSab5V2Py`m@1jWdTaf=dd{jy`AW`c)_T-7}NQKDqc)Q4KofQn^_u!`o7xn?}|B zARie=t&6*IGB9v6zYUX>u@RD<-uXqp;0AQ+olf@9J5@j?t=B0E-6LP5C-lH@%BG1hrdL>e1z(z zB@_O$sfEVB8Am@M;Y_to2a7r-ilekzI$%-#Sx{k-jw%L`gHN6h zMtD)*K<$V9ow~Q{p7jzb6d#(I{|}=byu(RHsa#s=EAUvwZdSE@`3(-4EOPN_>ISF! zVxGt*v|=r&AG07#ztTca|e>Gl_8KD}vYv-MJ<&}YZ9U(>hye3Q@7`P59-I5Om zaY>)~fj@`ad1Io1oqPL1<8rUBzpumId{3WWdixyAxz-MeKxb|3qYR6nv972^435cO z-`?@hm>(Rj#=4~4qAy%C;68$tp%B)$19di-^(0VlJgtEH_{IUak8iJ9fcpsN4!DnC z(3tmt`v~U_xQ~!pfcyBS5~#DGJAZQ@!K{GqeSJGnXG3=mxQ~!pfcxlU1xxi`t0q9f zzHJDQ2i!-nHNbuJv4TL^l@_n5D?Q!OTF@nhU^rXX{C7YCL{%)DI-%| z3i{R4QmYiqq^!?8xGsiZDt$vX_ov%5b5~FlWxUrsP1N{GL)TJb*K*a1nbi%mOl%?&qrLQ8zlzDcZNMdiK$|IdSaZ2LF9(cvx~0(YE$qr$z9)++7M9^ zFrw(R%kCfJYE!9uV6U z)cuHDuJ~3N_)YGCu)z;XWk%i+Vd}$BhCRcgeRU7EXM8Oytjns%$tVU;FG2OHP#COA zMrSX?5B(}RoAr&2*kq{mnQ8G3Yd)kPhS?qc_I~qrCpnzkDQ{>e+t~m=Cp_VZIWDqN z0Yu3VltQ(jWpv5vq=~O|`uHX6ti)f74&qNP1DD=vD<30Rrnig;ny~u!Kiv2t((%`^ zR!aalt5Y3QvegOEQaS0#1&#Kg!ETPOUrVmyH#h$xNZ+^$r|B$8qrT#(+Y+9T8+~=m z+{`Wga}qmgo`LnM5Wrk`VVp{KRp>~q{K>y$lzRbve1z_UmId*>`1ujvg9^6f2SL*H zcN+(L;ckynj%@Ca?RkiABw{8~nxH@zfIZlD_q)S)KJ&Rt2TX*UbX+&$`6~Ds&wrAs zYRnJLX9c(v&36j0NULta9e{}F$G<{=iCA@8Z^;8p#G9G|z(lkd33&e%2Ta5n4`3qB zcmNaemm4qa6U5ueky=E1e8^`!A`%sbihQojR7XY4YB#I{f)#z!TxI(fQh(E z2Ta6WI$$E)q_F_yU3S(jcg}TnjhnYhsh#8Mh%t5C?k7=wUZ=~CYFt}7Uual;m`Hx& z9{O8F&1`b+akUCN8oBRr6N$&HH8UO9<5~{)ZCgQ6k0|6_Bg>L466?y+;T!Fh;YS^m zl+sKO5Lc=&=nZ`-5&kak+34}zkg8~lSa*^@nQG_?nI4pUNY%D*C$b#rLF-Ol0nr;K zmA6*c=Q8$hWH*weqX5W|vVlyRu>{^F392R64gNV=imwk_ zVvRV=ka*Sx($T=Z^Yk9io#=3)NLp#i^8u zC2=XbRDsz-lf*fD8%mhwab8FWqbpL)rQUs}1F7-3Pr;JGYVn#AjfRv)1PKX_=~8qp zCg`vy2HWZwqHBcKuR0{ ziU%!kWp{^&#dD}HD zmNM#YFYF5f)W#2)oR*YT9~1hPO4@d=sV7Nk=ubDFZdh(C!)-jYUE2<1GdwGaJUld? zl=zRNyjJdRDHp!5(8~@H42V`eg81C5YIo{wazKxq8AQXi+f?cj2pj`BG==i2igF7q zH7cd?ue@pvk@}JTC=e7MRg-FKl(cVNR9i1+8ct7z*_~b}Tz#)#$iYzGBfUo<3?RJv zvm=JGg<0Vw@wMBktYG5{Y2L1`TtVI0Aag9dp^*7pPA_w8m|37hK)xk*FwbHQc9!$! zF{%%ns$}ZP!j~o#4BlfZEn(cBj_yV99A#iGFE)5y7hVR+SzL- zPQ;;E6tVsA%AoA22OFJ&tF9;pD`a(sylKzH#>QDR&)=dod9<#3s#z@eTU?CW9XOi( z^guVyn#;@Oi_RzR)s~|&zEDM zSDIo()^@gaRxobRzG4(}1o%V_#e8XK6YH+ULXP7f{^ zHoV59q?g-PTJM^cPHw`b!dS|(zLwl;x}g{|soQTI~cj%>SJNp%+yGP_S@=5gvCtd;#uvt&%+cTSa?QICZ$%{3{ zn2y@7&>dMs73-tfu!M5AwZ9MrK|YNgncpX6Vw;O6A|5x*4XaI*46)wRZOo?Vqhm(L ztI|8nI-0zdN`&H7veq>pde0zxRv=s*CzBd;Gp0Sf5pn%sMJL>1{o3pUI3`y#no2U9!Qr&!CEJgAFYl4VcI9pIsuC+6#!gwaca-;q6i zPG$MU8|GTIw4N%JZvnpu*V4qF(10$68;*4lvx4khN5BI1b3Bz<7vaY)!~q$WAzH~Q zb9y6t`z^=8Xl!LiX4;#F<$GDl{7?%swcm5$F36_E%Dwi3f3Qpaqmb|?tDmh_+dShU zaaN|QoB0sdT1ERqEKN1E#Kw^dI)64R4X0FG$VwYaSjLytwrvahOXh>b3zJvpwuSW@ z6oi%5-1ihyDnKd1;<_|u0}`uV*FlJd@GmbkV(-!k3uLHY#GrRsje=`i@8^RsDzj3EOg zW&J%}=B)T0f?42Bjo?)|+92rG%0C5Jhp=Igd~TM>y^MuAw!&5X4eE5@kl#(4cY1dr zFMqs8HhDI>%5v5TS7WU$QFXC|ym_|NsbuU}riu2TbW4uIhPuP5o);fU{l5DWIA*^J5bQ0y$#;YE_(G;JA^#z@X|0PWTQg_ZtROTTZ2`Mo#&b z?PH7p9;avKeDLn9hH@Y3E=u3A+%%_47u?#?#`)mkP2ee!!x#lYK=?}*i%9y@{vj;i z1MoMnmHTYc6??~hbEe{Y{Pe^{D-qH3lT`2)B2{R+aly-r54TqySw-+R`&!aV<)xE( zx1|*OmWPgx7g1WKP#9;i^ImpFCcL3Vw zch(|N3N~iq$tqCN+d?p!%GbaBnYQ7zo3#OT;!KmhmSNAL-OY5tT>_Vc#KLXs*8vUF zT*NM}NJw9T_6mK>wL(i}P-v+B!mhd!atcF>?+c@dv=hw0vUdVssbS4rdS#wXLsCs2 z!7ANxLZh~h{~FHRvMBf87N_s?lk}tml(|Go*~EvsOE?LQxwHsf1Z`hT#{Emo&A5@% zGVLrD3Qx{y!lorIUR7_uO_J$)d|-{&HZxlF60UdW?eOHt)i0y#q=f5D)H0b5f6#y>$a!odL7urF6Te^de2DNuvht(3^kwfw_UXvo zB`vKrm8&)`0OO*+vH9}Zv40Ow(3ZJDoNnW^nAh++f74q1O3tr;=3>GdV)xFcc|#oP zPI)S;Rp~@|&|%R$J(fo@B#ed1wwkmoRJOVm){~X?NS!mx{$zz9Ok7v7o9U2tJqVGD zNZkNwK>L+!6>^B^NYx%okYCR{5yrF*$ypCPgTQZfcRvwhDq+aBjap4P%@vy7LB znfy!AA*;R^yB&{*(N?re2C4f6L3m{r4o<=+ZkbQ3RVa3MYN{kg8$Y>7VjfrPGhG{1 zoD$G%`DCVo6L~8OOk8XXqJtj8>8qs`zE@aC!aZvxnVsEpPJdmo6@Zm?%5odyl90OZ z%7cLr+Y2tNd-*9-0uxOLi+=9ai^(B4EBEl^Ck`|>RqqAkK_WY6I1?H2uptGuxre0j zv?)0(-X_?TKy5ki;fc_-fDepcM18BmNA+s`MB<2KX2`yns4?~9S7MzfXgzfgk?C}O z87Pd%K!}fdWXI`Tiq}xu-LbhY-sAKl*+W6-wa;Qt#^ZPjt8nccSG5LJ1#JT08XaFv zM^xPz)wYp#r76{X>stNG`qk_@<_b$k(;Dg|;>*po^Rci79HL!>C6dY@U9Gp zhiMPIoM33;0Z=*a8?(-tqbzjkHp+|L)R8X40X6o0r*r#BskMm3spciD`ULmI1jn)e z^}B$)2SHA(QR_k)8aLH~5BBNjM@0^n-NpX#bGd~@oqCgQNzf%YuEUZe=jCB} zuq*o6XZ>p^*_xWJQE#JoIcFswSD{yO860@Zhbr+UdoefrgEptN{j?{oW-Ck%Y?hJP z^#stfuxZ841pj%V2Om`yKZ142=6jY1yo>WD8NV1jI_%MRMqj7AbHBX`2Y#9n*<;{( z{n9we3Q=RtQ)7MdP`n?&^JiBXk*Vpf?t?&Pah^<8fpK%eSM*vVMHTQGRD5zik-UY| ziHK*Zs)&I2n{R~8I&IDG;e*$HbNAPvPmUdQE+4*FS8HZy)NAXBDmbkjaAFE3%y6tLQ zxj9J`8efe@3~Ga1+mr&`(Eh8cci9oqO*k-5W76oms-3_cU0`9wEymg<_=-NAgx}K% zV-zy+1;JeJeY*O5&5%o=UJEpI+hW+5DSP`rCsbl|n=Cd&Z{3CpXzg5M*8u;pHg`^PC&u-NB!^mbUoX% z6T?SSmE3W;%ozvj!xKKCyskuzJ(Oj%w77$STO7OXmh4^w%fT273_7}6Gp-anTep@9 zM-DTyZ(twdr6`K_go}Nz5iSt+AjhedF(OoTMks1jJDRk|^Jr7hYexGkeZdA>U4Mec zSLP|5f0fgQYa2>gDA5kH8)cxo^rctxSwY6-<1hsN4@cEQi~qw>mG-|KRUP83Htovj zu9ESUqJX0+7A-6L(eZgX;ruK3_M5JqSj&&0UY?+^ZdCJPySxd7oon0u39H#23=R|MT=SNPmk=MJ#-W8 zbg{Xgnuo2Bdn}lJ*M>h0w0|gUwLT8AtLx{N7qT}rKGu>}7r1Md$%R`px>YdG!D|$* zrtTp92tm2fj&CxcriZFig|9}6rLT}CjXEbU%&l1ZRGF4`aBQ6^t)6!8LZI*%Rh~XJ zR|vG6;vGp-PSE5NPw4d|*O14Ct9Gt@yx-p6jCqB-&6ry_XA)qUkN-k2?^Kpqlck@pY!U-V0zYImgX)O zeInKt%Y=m=YeFF$Z8jt{d+gWg2Y@uYm}d6d6#0 z0!vHTKt#V=L8u`!M*Q5$Wb6yLO|vXP<*i22qzKcQm5JJNrBOiuL#E!+w%t$}%a+;% z?|~B^Med-$03`n53E_refrjGmM{Um8nAN?am#5WVd|8N_hgur;2O+0{OFy}mXd8uj z;dtiKTz;Uvrny#}ZZif^SK2XP%MNXhnE`Fnf>s5)M_MZr3bHr;T0(!Ic-bV0kLgQ~ zjg=^zh75l6i-grJ&o_U?$7Li61DR`~(GSZG_13abkCpsRU!#>!B1=pWtfV)Pu9E9o z9~F2-kgxHpxEXYWJsROkIpoId8f01~RGz^aJUplCG!r!9NoqGER>!vU&*8O_QvUS3 zl(J5mvZBr2$o2)k^2E=Z@^n zm98(Jy*}_=hFw0w+IeqDN zlkcS|FL!rcI^5_!iu%%GYuAA@^b&fjM}<0TTbr9#Ke|0??kzjGqnEBw)5cEj z&70hpr@P0S%a|u~B6@6r>to$*hIf{xO^NvB=bvq1#m$gru&d?zZ6DlZLqwuno9v*# z)c_d_YoKzZu9%2b&lU2?ATs?FDZ1f3y_d#_X&H}!^p-7?Sp;9R<~+SaTPI8#TWLd# z^WfUGcu-Jzj<#5|yo6w}i12hzEgPMKq&l~Kp7X1y!IJU+s{^eT&elE-6y2Bk>E`Yk zCCOk6TE!oGIlKsl-3SlOe?-E`oCZjj(`NcY@fC3`&9n-aZol&o&W~3!^GT@QM|Zr; zROgo|KE>Ilv8Iq4NKfhNg$3hU3{dN#m00;^NDe*5OA%|j-3f0+tDs+mx{9-Jc7^vV zVST?$X#3^VQQ7Z`p(z|S{%MKaZ{6twLGePx0?Y>R3q^p}WB`pcNZl4F*Rs)16HG2D zc;z<2C!vgLNUtr_>#rKYYCi}5DctmYn-$}vL04E5VwF5SNOcTR`nY7x^y#Q> zQWw=tIFfA@c`r>hVt_}xe#)LkcjTimPE3-mH~`x0NFuIht%^b;b2sagcGavCfS0OX zYqCGpVarcIp6$G(G#l%Jh0Al&Fq+ZV;O@teMiFi(ECovEdlE}$u*X<_qRC=^X87?X zRLu!HBLst^_Y$gn;Lkq?+hE++UKO6(n!+MGqtlWYQewT<9}ULQ>SgCbQoJ0;_>RhB zUb{I7X;@gjLQ+rpiH%$W13VKBy@Y5rqs{t%tf#FK@8U3{Ia62)x4VXhXJ&un$nb2# zG-zr*)_z}ANW6Gg2xAHV`vWfrFXRI~s-H!@t-aHW{TB{J`v~*bp@V^m0h4Hu?IIT# zC?{O{^Q-ve<9gdM2Z*$5eH{R51AB$Lr&khqP6#bLAe4x`gMY?6*KYTsl*hfNH;}@6 z2ZH=(;Qc=j$-6*Pyj-Kqx%MC$%&R!B%X%A3_#0C~$qB-nDn^obZvtYBsQ2{hA0Xal zsIvV)a$)x8+J_}P?OyLeIdlcEc%e1 zkh6L;Sagh64=gxHuZDu_OTHj&HY-a_w=3y5AtU!9GaTDL^;@+mO>M)ffhzuxH?#YU zy;l7lp+uz(kn7oAPQDZdNE@uhXGl}FAJv+!R={Y zn$gELX6I$}ZLUZ2L^m`#b-|PppNf2FM=7Q(WD)Z6!cXqS7h$z-Zp0ecaGw~PYu6|F z6jFe~7#dSPf}+}bLx~b}BJAiI$dTqnDJ4`6s{P{NM1z}@b4G2-UA9B#;Xs}o{ij*5 zKM5-2mgFTAr&;CI)HF3)cfDMa4RZ?AExA8b?Z0C z&C-fW>wDHb>BlHKChTRXZQIwJ#*f$=3s0T*DmI6 zMyFVgfuWz&jHeulW)s!By;}AUJ1*1GJcrCkD?~vbwFX%RQx@}Mi=?wA= zEXtJtzpS@be##u)6TnVaP~W%xm_G;GX}55hw&-T@{ii0Yk6DDDXJ{77p4tM-N2a47 z(~-fYg-8DgI}WsK(Y&jRt-h`T9SN4htc{%_o!RXx6}%mS!Ccm5ZuwTmdEr>t&E{v& zYX;~Egq{|+xLI~mq+yn|VHVZ;;jTnyT2k!5aKB=io;*U{&P+hKsJsXq(H|P)u<87P zJebNIpV0lo!%Smx{b!>wEP|ZhKCwp=;VDK>mNnB4WS+H4D)9!bHB_-lIfkT9#YGQ= z9=LR#k5QmZlA^EjZmSIh*8N&Gu?opA$wJR^QYxm5DAlh?Gy^xa?+_}({7C4Ol+2F9 zy9>@gtKa&kK6DPe%x4vPCbu^+YH`CYChkImO7Q|ROYlShul=^_cd>s)O z@@<%Q2jbH%?W(C;NS%^w_1W^uc36`e);Vo$Qh8ID;qXI{%@C`n)5B}0u8T>G=zThm z^mX05Eu+8Z(#g0LF8KE|jLmatBF~b!axUCJG)=o!w| z2B|77eT{?Jn(Bsjih|Bc_8k+c^6who(%GY3amV67*pIX6dgUK3Gwg@pN?msDk`;$6 zPNqa<7M}B_v_RYJ9bSib;jZg^0QPUU7m5l2Nj?wxw~{)pM42D_KCqBvu`@`hrXKJP zNVy|VP@HJ{GQS1lC=u-Q8Obqx5Fq~<_}7D^ywuk~Dou)g8G{cHcvKnO3| ztRpnu2YU)Ely`3ez-MNkPYdY_%qXBwehVxV;@p?HnZ^Gt;Dex;pfH{Zd}2NbGwbdj z#xun*VL26KU4TVNknHn=v)_dNZUP+x_MZpfJaVLqc zk2S(2J}uupO0b=vHJr9gDQT_PeI^w84lFYc8dK3QYZn`Sh$!QSNo?WN?e~vp(Q_ZvM1F=mye4~ATcwK zyPJ*WH@q05_UL(q1b%!0ajN-^6t@~c!$BH&!3Cq81nIw!aR(H4qvnOU-$GYs|%EyZNOE5XdqHc4}Xt^ zt8#jNJK{yStQNvIq5?1IhO8t3trOjB1#{_3NDp%}LK%bT{r2*Ar=FK_bzWGLJ%~4(D!4iO zHl7IRk~ozgCX$!=T#xNO2kAh$HSoskQ&*nFL%H!_MX=}T-za$Hi5EFHLr9t9Vv@D; zOD0=?fiu0l$qa6KMv&EUcUpxY>iGbkk(U6a#-QfcrQkZ8z4IiCzdNj90pHl*OovQ0 zL?yq=RxpPm8oufdiGB5iVl|1HlTEU#?6IqB)PRrRH{jhr((7I^y9u8$mXLBCH)!hPYh8eBzf? zaA4j=)7Q9TL|LmNwyuS)sQuIQj~4y~4S}YJxYk9DB4^VXj-nz@gK4yfZE(xULG~8Y z#1!nykqr+*ZJTDAA&j938{oNQTa|jKZ$UZ6L*H?e2e+It&eb~<( z$R*@YphNq<&j{%YlO~NHH113M#^h?&n`=zh`me#zGLE||g5Xg=B+(?X1#AKinE1P! zx~Pvt_71?rsu-}KAcQZ>NZC4SW*3WwMQcFON$G}Kjz2G4IFY+AT7$x}>hgQM#T8b$ zYiY?N^1k~{K{&g6rX;T95<2JTl^h)cMK_^iEK&?JR#>k{heYV()Y@eU>}DoAW_8O_ zrkmV%gZvJySand#;RVmpIF6%SGalg&wxeNH2qU)ZajEPh0d69kKMf|aDYh<#8o1ne zp+k0RS!9@`T!|!xGqep?jxSgXoO9>JR=;+9l+Wa9kBNNS}gq5rwRi&e{K`L+; zNUdqGJuC`Lm1nfB#3{a;WvJ0-(npqlzN!PF%^eIi&y+~3xrvV-B&O_1366;Tn4u;= z@t)=pf`%sWLc$lyjXF{SscD_dQ(OVBYfiOoj!X2iZ64GPD%_F}0>$Zithe3bg5oUf z#@oJvz+T|4>5D!;Dm$LoBjpY~LEU4nYkPYE_VB!naWCxsE95@||9X%VFn|uKwU=Qz=WnF+pNs!LVg0tU*{%!)WhyOeP_VB#y5SRe$VS5{351&J{ zI|992#OoJdQA%00J8Q&vAFAAt8m=mm0Vtrk0Ilmj42u3A|x2@9bsNd=}MFZq!LJDjXhrmsiztp>D)r z>q3ItsR7Lmwj{K-P2<#eS(aI%T`2CBpfus=hP!GL0x^0DYKPUvMx!o&1LFY-Q?tVc z?LAt2)UJ7-4^9QPdMO6;4TqasaVus{7A~#BNuPG@446@OMum8M!{GezKXnc7Fq`oZ zKV>;grxk}kO0v}f&>i|7xk+0A8Ao+gM<1^8e!28e!#RkIs5`{Ag?m_pT2_vsuR8Fb zOdO~6=|07)!3oq|u4wNaJuOcOx`5bknkAnai@Lv3i5UsOHzs0n^0acwJLr5vRiIK| zx!69u!amCniVSmUa=gGc>B?QOz$dDlQy@GT5kJ*0E1~XomiRnXJDu*<>M3DZMQ%P; zHf!i2g!yC3y;bS^%oDK=GU!286`jUxd8Tc0IqXQIL7m)nOD>c07WmHN>+G0GkYS+D zq;wv#UKL++{#*++(r#5ZsLekZ{Y1%0&DHuWmngs&tF(OU{##@1hcmQr`IFUaF#~1u zR;C+tx^3*nf^%^*8)TNV!>>!<%SyH#!BVGR&XOuoUX>{+1%4|Z&lv1Sl|6IA=`rAv zd0WQ@KMytRqRN!n@i{VIvt84z^(zOw+78MW$8lrf2CLEp z!Wh9T-g)Fz-aXn#YnA&xfWmWNLUKGYsx+JO;HY$uZ?c+a2hvD19aaA946W7NN_~TO zk4><&m2O>ex5X$yfZWFYb)uk!Q?P>Sj|#elU^4XwL{}=2&t@!KP6AYR=q?nHsCuqa z4pVluR{U_oru~lJh7miTe@AmpHnH&Kcgodn6lWES@>DpO2DOL4G~bJyQ+@(D6{``~ z$|g--#BC6fp`Dm+6SKcKv~Tb*Zh`PCKzEJ5?%Ra(UYNQ;C0p_ouV>gt#2Dx4ePFB0 zuR(C3_3eL&l7Nj5TUh}@C$sAs67eSnUu5EX37a5f4Kgj1x0k;o|0XHn4!=HiH1R>L~gT3)Nn>7&&ebI#&ihS1%BNV#+|1tL#KzVfAn{SW=3vR((f^y>@lg+i$>Nml+aYAnm4b?yMsErEy)IJS_)=IVrgsc&Lf)Izw)_Nf$sCG>u2J06Fx7CaK z#*7A$`_x{+Z86fz!*HHP!ZF47+;vuC`atP7<1JtNuyn@Sh?3h2E-MZ}Qbgr7`}!rR*d>14c=E zUh=cx%f}5e$xh^LQLBE^vRS_YyIZJ--77VrBHk%0B3CrdcS%voE`+EOANb1d=qxy{FxMdzxvEYR;%L*KeR5HC zEvd^byWlY=P~vWm7k6rf{<0Z>kJ3d*X__Xm9CFO26wKM@uwO_$XC~*yH0R>4;#gLx znl?;zYjIGDWwEQ8$~k)TY-W4YrtLPrbL69etC__g5GCW(tIs~Wb>xtHs^wRCxwA01 zW4K##afXR?Tg1UEw%9@z`Kr_T{jmY0#_L@fOW~Ia^G;SM(YurB3Azoi(%jqGyZk%@ zoL3R)Hm9=qKqx$OoaVCJ)kVw&t>)VCf#wOtV*^341U=8k1YifTZ%C>yph3%n83$t4 zvcjA$#O=DZv~skh#T}MHB|fF5ZgK3>apjz&Q#&C!{uq=pon%M9qO$kG;xx{i)av!W zJxhKoe5b;|G3H^vlr=u3qyW%)MtiT>zx@(%1>tB!>$b~LzNGi z6uXg~nGf&dQmf;Sby6pyDWygR7c);hUyd#P9`P?dr55$(Y`u~Xm&>=gYIdUak2BX& z7igUlY<^>5s2j!2p0Sp;HO`1*o%B#T^Fs0Eo=OwJ5}o)Uwk~m!N@xqr(Hr*Wie-&O zn7I~sArbF?(UElTTP>2vsGP!7&&dm@A5+GeZ=Nux5zU@kDhS?+mmEzPO198odt}J1 z6d`LQH6fSG3~|a3g@qRG49MEMO!7GTG{BJUD{u3t8)l8Y!-Ua1>!N| z)5x#hhAhq*94ZSp#e8W;Od9qRrC;8Bq1aAF8f_6a%EbM16zFU1xD_Q-3$!UBjh=>^ zBx>b>;!J2^cjf5Pibj1D?|7r_@i9-Jj%-Fw3}?-IVJk8`DnEqzj?DWp_JSRx9oM0b zbDEWBP|KW(Cz3~_Xnc^;%LpU4Kvn`4o}VH-7&bla@npgb$a~x@UsX-LaqxIg_#|2~ z6b0Ox@EisF!hAnM{K$tR&qxcusXNhCZ-gDkJoQ5zN6SL!e42>$x;3lE#YaCBQXaPI ze(~eY_Wl_MhU811LuYv00+8WeL^?k2U+V1MHt6_b|3DZKdIJxaER3*5V(`M3?OXo!Z#5ag>hh zojCHN

U_!g(1Qblmjmt|qk23zAJ(;Zq?znl$Wj?Llty*k9jeq<3Z(pn32_jt*+s z;wL;iSxnt%AOHUD$1rDWr^Z!9kM7Q|yK3w#Qa#&p{!>VNTG^H*uxHQxIJ|z0#jk+G zG<}`T8t3ZBaoAz(d@+IM3Cvv@&W-D+ck5&p6Gs~lOwdYuQv&p*qmKcr-lzRt>Icaf zw@>f#=EqFdSm;|_jH`#?0+)q;xPc$6P)M_cSjBWZjf#GT-UOoz6U^v2(d&Kr1$Vy= z2HSw*4$Tz+@uA`YWr<=(F~3Mxv)peJmBX?P5`rkzgL>IbF-S(yfV!xfwtK19#^-7j zOM4rs_-QSjyv@vU+$`DCuv|20Sl(P5Y*0l-a2rBU)|K2Zi`W}$_G@H&306d zHrsd}gyG81PaG!Jznmp$xM`QObAic&~E_A$;OJGTmRU(+ASoTQf^eh2tc<;nQXMg3Mud zZVIpG!)H~T6Pc|9ua{fe*C#yNMb0A}oOIi78HfhMu*;3ug*^*u?t}35G4*uecq&4) z$QblUuQnE8r}Y6Ejj2wCH|ki}PtX|<_ZSy9H*tlFwBiPm+?YGV>vNw}rcTr`8zdYS z58TD5JL!d|4miFDjVvwaCg$3DUfm_0wHoD-ovd1}J`Qt{J-?_V zTtz%KPfl)DzNlo_KN<-e3AYk1voW;kl(hE0nLJEE&TWp$`-wN%G<8MpoP@b{TRm@X zE}m~s(~-+?S$Dl4i*#~}ZO4}z?%jprerv_d6%JF}GL504C_VeTOq0`f&+-VRNnkEG?2pf*a|C5_qdHGdY9XW6 z_r_Si5N2kVQCLcin*o;l>r@kWYSF`bQXOt1y(LjX`LHB&VRA{g+uz=MYp& zKYlH3E*mt3p>c6*q@ov(&2+b6-`S8#=6>p@W7fP;EX<(D)Znk$ncWbRWxQEsFe zk0;gYR-012G+C15_YTCa#mbd8{uA_Kbtxbj*c$E=UhOZJuI8SG`5zXMcEBD_m`WAx z4=c8t#p+>zL-)Barq!_B7P4Gc}irKV}tBp^YzmQ|i#0 zQ*tXSVZHY}eXLN#*mirbL-V zal;eT;At$5Xma|TU++LXH=k2cf;pZ}nX)SOTl#w}r7PP|V^cy{9N|y{osA&d%2=9@ zG2u}i!0L%uTs6N_bJ%n}wkIU`gDa65^S}~C_we3c&v6I|6JVTBJ-Dnt&q|iYSe&Wi zDT8XXe*7>)smG>pZNg_YLm)Buy7PRf1XVvSAu;&4d3K!Q-?W$8v;CY@t^Unp9573| z{|~()1)c1IQ%!)o`JgD={6EdjCfP~1wT#r3^Lg@24HKjK|D9W;P@R_D<=^h+*Bm|0 zeUFxf%G0zvJ(m;8GWo%ly1fbXW%yb^dHnq!c9B;2wc}Fx4>p31G(tqCDo^{xCdOrZ z)YIwsCuq9t*z^naTWU11kmnj*Pi9LS&OW z1-%=_ZmQz9#qfX~W&W-cOiUcqj$zc1*!*Pi6nx>YdIOz4=#qkkcED59=zqPFCgG4C zsS|Hw|q|GR&rYS(GN9dTj) z^?%JkGRXX24J5q(Um8e$`U(i50MCZD)42MZh%zqNDQcG3Gkdaz+osMfe{OeZ{-5@x z`L2svkkcXfIMLD{UX9$NH`9+#FQ3zc;XkjG2N31+BRg}6phJU zf4$((HXx_l+F}zjq)L0z_+}$&i{=mG6gvkj%N$NgMJ2pS_AwbwwCBy7qGE*v_2@7r z?u~IG>9N9*lTb2A80BR9qf{lWp5-Rk!)ksbr+r=8{9iZr+H(BBr z+c1jgPZmNS1JCk(hINj=zqQy?gcyQZINflff0CWutW9qvMAcE1V3z zr&ZKLFtDcGPis`6ejh$!(iyk?1W|(>_pUquDuNVNSa^Iu-hV&=Bpq+ig!*)FY3;uq zpZ*?LVp>9xTkrFMyr+@F|JioG1p*D|Id8Gr8up)U-k^Y-^EQB{U)&qi>NCPyr0546 zxi!-S$otaTn|COmq}LjwN1mJTbFcnJVAx&f5NU10C#hTao8Zj=eqpX zhRiifRby~aryVfIe3)e#X&4-iXLRDP+KMukvTkdlxj%_zeM_q39u$r-j)j35UzoDs2MiTN?F8_tnVB^< z^t^s!*mSPpoX^lyE8-~JSqWlsR7ow-N?xySCi5?!?e=Jwyech%I+{corlP(}e*kk&~~xOrl@6 zh$TvERoD#DN|!@&LApFOff77rq<;vDYV#aWBJ;u*mBhc^$ zZZEk*k(S7s9|tv&yw%DX4Ju^8f@4&PouvaeI3GS{1^dwKpHjcZx9XZIJ zL=45K@+*x%WvPDg>knd&JRu96Ws&A>pM5e4#RuH@Y?jX5jxQ|Vc%eMFZA5+w-@9E! zJpq+^`Yw6K$!jPepIxRf=L~%ac)lgYbAls8Mkc#m;F~iB_$@6I28X$i8)ioRqB9a- z|9t)&Y(v`WTUAKxgCdb1ec4}d;wZ8 z-6QsLNUUan&`NU6MDSq}+T|D;Vl)Qv>=ftBYK1BoZ#`}$yktLW6;l|E+jC*v(~VJv zJ%)6>vbecQ8>3)3scYtf3IjvQqvu%iUNt6PSL%F5ICV8R0ql?sq&~xa_JWVVD?Zeg zzx2By`%|jNp)5iQYxtdY5d5t*_xsJ(`JTBx=zFxsH#^FSQzO~=oz?T?iVEKO>cJgK z$ZJnYA>`EOSByv}-djfC#YV@yUA=L#1KK3q@VL-&8pUf)t|UG`9oIic79K#au0DD zhjAY3&`ef@Y%`xg;=z>RxZJKj_q_(Ux@y`*ioZyec{w_|#;(1lUPm^py#lN8U9V6j z@Q`CIyxvXi#Ouf)={0OP2JLLsN>q{TmP(mlt`?#V?ycS*qZ>u5?`0+F^oZ~hNRkg5 zwV{B@L5dU51pxa{^O-nI@FrrOVzu$Tg8`wE&t>%v7)Xr)El2p<0si-Z3AXQ@a=!hq zcQA3E5ww4~U%W#@!UlPZsV(AY6L<#zOZIOA;`B+q18Ptp-y#Yk5X$+O`|n@?|Ij-s z@N#JlSrD}7+{F*&(tv&F9U6rOaT}lDHjp%$$2))`8v37{^2$KqZ8lZm`rZMBG0^2> ziaV1<&j+NewMRff1(*?@FM!5zL%ys0x!kZ-)XVx*gP`y zQDhaB<~F!^#m%X)!fiaq3NlP}7jIbqv0jiw8Ce$-198FCnuV)7EMQ z(Lk5KS2rxuUaCxsE$3uUzZ_a1`$I@NQPZ>`P1BBK(rjeLFLkw=g0SdxJa%{by0Kul z^w#h#nnP+*}gIbx|G3CI0y*LG46(8h)NeD>XYs zjWc=p&m?x8;%<@%E5?&y7;-n=;-&B!U-cY0oNG9ur(Jt7AcSc~>tW%<3=KL zEznzVMBjVV@Q1`Ad!BNS{ROyg%B@S89JV?G`VK5t8TTRPd}a4=DYsBa1dK3^HQcqHnnA8qA?pclVs#VPKd)>X^_S%-b0Mw zVk*hN-h>HtAS@8;{&Y^#Up!oYX2sVegX=OXN_|*?6cd3x1GYPyxUNakz2ITLcw zcW-<~R>xI`sXuu2jB)Nr?vi5+_T&nXYpb+Frd&gRJHw!X$#$qZf8a1z&e`>W+}@@2 z{XwnP^%&@T3l<)27kzc19VU3&vLPl#~1$Zhv72r^nLN0D=A({!nGA*}d==D+O`9S$JASiX(HAB0%1LX; zA$(?ZmQ>VXzx+;vnN%HGS?l&a)^S`^E#p`z3F3ygvPzQ^p5^jh zpO^tQYm^nuDxt~OtaL;+WceMnq{FGf#NY?j3<|XjqAD)l91lW$PV+@jC|Y$3%Gjiz z9NM96n#SQZ*u>`q66|3R{e^W;QsXo4#LkQ*CT6I!ntlZoRRpkGv>rInf3bpck$gu{ zW3{B4P~_O)9CCNv6y64B+)`uGa;HYf{mD*0kT2>3RlrYQL$L)zN|}Z+WraEA>jtvo zYBoMI)CipshB48_8g-0>Qb+9?Qki>WS)b*xhHa~5p}{4ID*GjqlVDS|cKQ?hrb9O_ z2`M?DcJ&Kw*c^HS(xT^r?p@I{oF09?Yn$@q5O@9SZlB6ejiXr4F&8XpX1w~wLL?SK zUqbDnBo2D0q#3I;`Q3)F7UY`TU@rFaQzUeX^GizfJZ3+98G%8O zS_e*|RowMWMZwCC9S4%@I0327ucA3j2uzj_43k8!!K+ zHVPlEUbG-Y{@G39ED!&5{L1`sg~3?j04_XDcm zw{V#50d8?~K77xHKRcH!QL-yPJQYhJzF9{iC-pR^Ka)PTGQ-B=@*>K5aB&w*=a|gI z4xMIftrZkZ4*{RvK2v;ix_Y<)5=gS^MXvq8mX4)=g1C^u95hX5na9Lw!*tS5mqBCJ z@0t+;rP~T&DYa=PZ6npeLCm$kV>0_@yyiIqnn2k_8}Zpa=|xCKN^F%;onj47QCLJ) z>yXvQr&uG^Zpx9+i=B(L7^QQ(*zN0Vo$6L9N90qke^bpQK`)4MEzWDK?>l<+^FEk=R)xLI_RboGj_G@9KXzf-qlm^;F3sKBP0pc;5d z`rI!g!ThmxJUkK;N9takGV@Hh$MSNcy{PQ-X}!zb0ij&15)r!I7PSeCqUWW8;wO7X z7tI)_DXZ3l44qO1d!1Z-Q#Th0?GohVFUYZE0v_75RZ%1(MWSXSvJI5`m3b93jpwP8 zzA**<>3*ax!pU2vJ8V{aBa2e`9aRVJ63;TH#m@(O$`#*F!@0z_=aID@H9)o748ius`9Ot6#Nx>pFLd=g@;A}Z2)xos6` zT|5;^_T8hLYGdW5p>i0pnEdy8!f*&8`&jnEBwDjx!Zhj(-UC1}k>3sZx-&0|?IA94 z@v!~aDH5gQ^vt$ZqOn?5e;uOrl>c;Hc5CKPCmi+fjiW7Y%bo0<2S_}6gz1x5>`!g; zG0m*bskz4_NGa2}E5bBM8Fp}X)6DeTM^`^JI_g}b6nz6~Lqj|jpYN^B!>CN{df>J2 z2V8D&Z59u}&r3=oLhtcDFHHAh91fO)a%U+03TM?A#x4x4 zpQ0DHntVY&4WptY|8!KOvA;sM z_1{1fB8=Ta&pV>Vw#2+J_?o3G01;RrD4ds``L!YG5SODHx_0;%EnNm{D8-I3DQoaF zYRmX&Gh0{Dh06OK%u5r>1eiM_kW-|mj$%u=$C)RkY@MJ}<4dKx!Ls9I@0 z1Ad@l=n^9hz?lTP?ieF>m$dk;4srCecK#_4ZLEbf0vSvC_1lfp0(SY5FX?5?ym(HO z-9FJcW#m6r4Pvfw%Jkdx9k?XarEt#W>w#Bq$K1-!04@uMja?6Elk7&+!#VOlRiW<6 zOX<>VhEPsl)?%_kr5O@|`G8I81Cdn}fY=!1B7nw358{Hcp7-w2I?? z2_@sR+%#1)*i&$3a(cOr;TApZ=d`Pq!D*^FJb-tYkP$OCE$;nyIdtbvI#P z;a&UpY#H90K8kq?%=tgGW*6>zNTey9OumX4Fv4hl6sln~c;&&in)+VMsgye&T=x>6 z+fDtLd=M>;xJ;U%=2?O<8*=ll^^uoe;bn*AOxg+pibZU@5Oi9%sg%2Cx8*{#`Y1G% z#$){1x^c~lNY`zva?EZy2|@_i6Xq6|hsLjtkR6?f`Q-PVoaW@1=D1qndyd3790^nf zDdVH?0lP`Yj+c#r2*Uu|TKD~ca{104nwH-#K3=+;$3cuQl`b+(bi&kFi!;R>wZ5*N zwR9>;+LmbjEwP-#qR$BLet$0>OD@C-D^aQuQ?^=}m#T#uVRgx8SwGm3@h@AVwVBp&s! zzxK~~0{*sa^i=)cH2>}oiQS}4WH5Ub z5g_tqZ54`K{V74m{B|=(3}!PtTdEq9iC06x4-%n6VR`YClA6a8Eb3`v#p0STb;;A3 zZUgB(+i2jlOex*Lc~26p{(a!QjI`ti5syNYn8dbS8yt(tmu|?ouAWaV*uitDMbt|F zn*b%6mkx@9EFaai%L`nBi%ODFs8tKwM#Ma@hoW#UT!f>rB~GHn>e!1SF*plZmu8x# z@Re2E8S#DYGgd!e3K|=|{x4EWF8?c~#NdAerNma~dD+Y$Dm4K8W}P{6?B6O|x9T(n-NvttZKuJH4~v-ajg%yhrv|J_{oQCcYCPA5kMjE@F zmBk4I_&|vgr@;SJ^GU)IQ4+jTX}6xS)$nj%eCirK;y%Vay&rqg&uVc13nllo1ABRV zyYAD4$8JlzUs<$GTo$%d!n^BKYSyUM=d@)tSdlH0vJ{oK)wOta*?!8#rLc`3q0sNP zC}?(;a3(sAV^__zSK<>_l0H7_(Iaz!>o@?PLq_NH(ATs7NMO-8zG2-yeOwHkdWkE} zW`AN;z<#wjv&Nz^{*`;T=~-ZU>4q}FcZSDlXMZYVhG%;6HcS<4MimOmjk~i?7Nefj zjs82JEym*f5I7NE+Qx05rW?(wI#x6rYuKC{i-}*W>dl0PG!az&GBIEv^-(W;53GzV zm3+&|w{pTKt4WegWwtzbW!H1qL($TXVxX#*v$0h=ps?ZCi6 z^{ti(?WwGjfZ8BRCF*C`hPfPE7zQ#$1ZFA%PY9Q+5gQX6y>D*$Q~I3~S}&J)s7_kj zWil}s=hlm8TV1&UU=r3Vq|O=!=VZay~4HeqJ#fP7!{t#^ny z#8OM;gs_LQko}S}0TCCZ^&!LjJTAJ_K>)#5fh&GGf3@A8%YcA)+}u)tJ-oHEkVuehHujU9 zW^H7DFUE8*XV$F%{pVlYUqgE2FR4#dh`KZVxpxKv?1q(N;$t?GMfEk{Z6&fwNm)zZ z%56mlhHanUYMcANp`}xj6-X1%#iU*KBxyB@_1S70-?_A#m%10DDuUVIp+-r6OhaP_ z-YmAjqeNn&X!!%h?(09T8dQCd3Q+#FQiGAPsrjr?tY-ewtDj1 z+G^2m%x=i&h!hrY$%x2N5*C<)$gy3Dsmt#qIo6}7o~BV=8eJ_3EvgaTLn9rbV+ch# zyAy`wh6#dC;O&1Wa{jr`EAbwM) zpWgNbCwSRZJ@f;u-$m);zd>z8Ml!0TGi13w%Ci)(lXAz6n9#BzfGRA0$xVh!und z|IQfz1pdrsQRD++1sf2sB!L&`BLp&UDV+uXX!k9xY5iG*L$hZ}>6mh`sqjwv>>(9g zzr7rXI7A}-G7laE=OV2i-OpwztLHH~)?cZ%Pk1{0J%>;z&V>wpFBhtXpH0U17_;giJHSx;NLcIALh+7>QQ2t;C~o8F zXufK+rHmfJR4_$f!e0kcJ`c%(GC@mM{(lj$>lyRtT}CcU>2%`$x}suY@yxC)<#!x9V3h zEY^{|o|+`&`5{4@r#iX|^QZ~VeIILZfPTVFXf5$#ZU)-~O5RqIeW_RxjgS<1NFY^{ zE%DoI{xCV47GJC0O%X_V6O&C9EMujX%#!6vC4DE_cgC@@s+PcxrGydxB`Kc} z&E52apx9AJ!j8ja&~2==8I7ClbZr*!ja#wwxi%qCC_Q==_qhf@!-gA%9KB<52@%sc z7PG_EY{8jvZ5awQE-x*}6d1bqE4T>hJT)`sSYrq5w~}zH-!u;go9YcQ>`X_yI7WmG z!aXsK&A@9nzQLgt$&a-!G`lYZRM?Dpe-_}X!djl?%W6i#;l825)7JEMNqIuqdR>t{ zi3@SOw#i+Ht-lY_#DE#VyVlZ3IZ8lX2Q|9%l6oW?64rZK&DzXbp}%W=t9$dBRl`$X z9F0h(Oc2bl?DAJogqBTgTeJ9g#*3o3+D$h8INm)8CE{e-Bc2 zbbN`_8>FrM2T>p+fcl0tNSFv<^Dpdm07MZ%$JzmaDBcE$F(9*c03eFD2mqoWQV+Mc z_6Ld^fL+Ig>i`f1q!<9A5Pqv|Sc6QULBd`KKop2H-|$&G01(ALIf2TCzsXmG7+5<1 z5QVTa0HT0IM}&-^13(mraEkWT36u>B1O91CH?t1a%?=tx#WnCRNn5L(UxM98T@KT} zwb+iTGX!N|JmlqG$LP81AS>+hC}Eb86AeDb2*+M3KxLGl&$VXL2HuHnT+)4?EmJ89 z5Pb4j@Ia!|9mK*L3?uNItp5SQ%aL6BA#JtZ^VpJLHL8^wCR)hCRyaKx*=lkWqV*6G zA;86IQLpy+N9z?A(K8<0?tt%8_*1T!rzU8ngCU3lS#ig&tzBD7*G}dyPDzsTWAxv`OY$KsJ^q(uKnsaD(PjvkNJmkoMf(2r@Vo;oexP@Tp9wDRt|!&QQsp46bz7Fl4PMiOFC3_XjdP(_RM3|wa zr{hC+qDu(r>bmQf5ESDu?K+@wGP`83O`4bak+NT9R$tjQDy#y6rHq{Apr80wMLuPV zdP8qIxhOvWmEuT~vVmQXuv#i(9wv=^kY;3uQ;REIABUcP#@^yCyy_xOa*e9Y`^u1TVB4W!f-UotxNGnFFgR9NZfgv44{^BEk zDeba<|yj{r7$hW3nj*KT#XZ;bccD6Iew@Bw+4|&hXU2o)i@|VcDhoHyG zT^lcE2F{IV{1y1OCURQ3DI=T$cz1SLVd=W(O~vcF2kG@Zak-MpY zKO(iyhq#+3?h|wwBZa&11R3$?y!nNbpi4hiZs3z|6Q9 zL1nH%y{AK!u4Ie|X3{U)@knpx7UhV3ao~q%ALmI2y#g8Z_`Wbpi&Uuy*T%GQwZPdo zcC%a1J9l~U<+OQXF@y{zMnuxSJ_r=VZiKbA_$1xrTS84SwwaKOo(jov;3XhM#%`n{ zBV^=>AkM9VR9Kn5axW(aH~Ob^src|?zdtP*lOSI=WBul&<%_uuDRMZ?Td3^2%5!gskk4XTkfjnDZbiq0;~JBhV2JudK?*8+y9Kf!tzWH* z(YzSCngs}ozI0B2wDuSUjP3)q*ypggcGYdF@M$J*_&O9WZzOWBeYJjMf>j4S7S;MK zA!3vDB(va&jxUkW87}H~Lk?8y(_bWERu8Feo4J6Wrg;7VWSz&!P*Kve<)1E_;Fj4Nga{HvGwx6f>ld=Fuk7Y-ge#WNgfP$rRLJp`#y9U zRqeWQ!to_Yf|BPQ7&u*Qv;igI`vap87yy?p z!*zf9?t9~8znLZ3t5nN%aB7-Obyv|6yN7qU;f0-not93r>4km$5cDeZ#xa49x<-7~ z8_n`E*LLoD;W>i;(-i%h!^4u7fza7#0g2fR%RNCJ=pwju#? zz(p@W4!F+>;t_aRQ#vE^x;v~}XlDa{H$<4lNjw;x_E}p})n7%Z3q3m0*>0n$%msdQJ{g79(D`B)y~wuIe#gu@e{@hz`|$S5Gs{$(PZ_r%?A_$T0Lol$A{7mlz`m&ZwL0@ zgIUI5NR+yX0AEn0TpsDQi+-^8lGfmFF$)VP=`|i707mmRKq)$j$7fL%|1F|GfP+$J zn(YUwWOWPz4P40K+xz#D$(C5;*03Xa@7|Z%NBwL=jRTT?1LgH85~27fr@9Uhc$>`< zb2Jc;1OjS6!qOlh^Bt-?bZTpK5l-orDFkJ`;y3DqmEXkXw|(rdb0knStfWopg2hSe z#(K6A_Y=HsLc!fP){>ap=B#?WU&F)HQwD-|2-}0ve{JixdyL}6D}ed|8@JFJTep;1 zb|@gy%f3}~4+e;=8(qyxOX@C$&#Xy%8zo)VR1#YwH4dK!__~>?P^j6O=?|@bWAuwj zaFtj3z`e4GO|#Kn;&U=ow(lA}&zp|S@@1r*-}ZGPyz^x0#op8_%JOSGJ?+CEJKRo(n?Z+zjh0M>{31Dh40G)-c8$9Q=qQS4FLUHd7QZQR zd@34D#Os764;j(}3a{N;*2LT=a=3>Tps{YUoK+Q@@{6$zZkVfGHkce*Or_FXcRg}2 zvQnDJ(DwxBo6G#%EZ0^}E|cywV-_NkJS}I!cY_-(cTkT6%owxmNZjXYgSSxUm&jyg zTU4$qgxmssnClEm^+R15iyT9Kiv+M27EA8f7gJ#WjBA9r-A#y^WG?%Tc}iM`T^Nqd zC>*8Qk6>d^qiYn!E*t=@A^M@CI;><+X!^v|XQ%^xci*ab%6!r3YhfY2cJoDG0-YPO zA-V$;!?MmUu0~re=0(X8P7Kq>r=>JBM$yJiUIz!WafhfWF=jWTy3HMASniunPYKQy ze>ssO6jB^^q9_wNPT$oQN>+mAyt;5&oyVd?MhT$_cO75QY&QaFO%nho?=7zB6nIh%m0+e#uc!^ zouh&mm2tyyF^QQ)w1ce6Mex?Bz;?T<%5mcOLtVBIEFfoc5-i98#HZr|acRi6fBy9R z(=g#wgO8^J#3y4ZfcR9E2N0i*zgdI7oi_;(pQ^|N+@c9Uf^Phcr2tyOcsf9QGL{Ou zkq@vJa074&nVfILr?*Q2#HaD}H{#QR+#B)fxWGONI87cmlM?_YjHd&{r?+vyWq@8~ z;(yHpKqic*1H>m|DS-G?l?M=?j)S$@BX3ZO*G(hCWfrwMs|P4O4)MBYZKB0a^9}s- zU|Oi6!C~6s+tU&uxm;X_h!F$AJ~tL}rw=1feYS{8Vq8y6^vVh1Wz74?)t^6$Y0rjp z@sKVqQ8~s|zZN*zgTKhV*`V_j4*g!LcCYfpWBi`MZ;

46sl3N#S$%|9JN{fTCXx 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

e6HO-OTB35KR6b* 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 kJCG5#{?hI8PIM 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.47.0https://realm.github.io/SwiftLint/docsets/SwiftLintFramework.tgz diff --git a/duplicate_enum_cases.html b/duplicate_enum_cases.html deleted file mode 100644 index 4f40e334e..000000000 --- a/duplicate_enum_cases.html +++ /dev/null @@ -1,363 +0,0 @@ - - - - duplicate_enum_cases Reference - - - - - - - - - - - - - - - -

-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Duplicate Enum Cases

- -

Enum can’t contain multiple cases with the same name.

- -
    -
  • Identifier: duplicate_enum_cases
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: error
  • -
-

Non Triggering Examples

-
enum PictureImport {
-    case addImage(image: UIImage)
-    case addData(data: Data)
-}
-
-
enum A {
-    case add(image: UIImage)
-}
-enum B {
-    case add(image: UIImage)
-}
-
-

Triggering Examples

-
enum PictureImport {
-    case ↓add(image: UIImage)
-    case addURL(url: URL)
-    case ↓add(data: Data)
-}
-
- -
-
- - -
-
- - - - diff --git a/duplicate_imports.html b/duplicate_imports.html deleted file mode 100644 index fc27a0705..000000000 --- a/duplicate_imports.html +++ /dev/null @@ -1,473 +0,0 @@ - - - - duplicate_imports Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Duplicate Imports

- -

Imports should be unique.

- -
    -
  • Identifier: duplicate_imports
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
import A
-import B
-import C
-
-
import A.B
-import A.C
-
-
@_implementationOnly import A
-@_implementationOnly import B
-
-
@testable import A
-@testable import B
-
-
#if DEBUG
-    @testable import KsApi
-#else
-    import KsApi
-#endif
-
-
import A // module
-import B // module
-
-
#if TEST
-func test() {
-}
-
-

Triggering Examples

-
import Foundation
-import Dispatch
-↓import Foundation
-
-
import Foundation
-↓import Foundation.NSString
-
-
@_implementationOnly import A
-@_implementationOnly import A
-
-
@testable import A
-@testable import A
-
-
↓import Foundation.NSString
-import Foundation
-
-
↓import A.B.C
-import A.B
-
-
import A.B
-↓import A.B.C
-
-
import A
-#if DEBUG
-    @testable import KsApi
-#else
-    import KsApi
-#endif
-↓import A
-
-
import A
-↓import typealias A.Foo
-
-
import A
-↓import struct A.Foo
-
-
import A
-↓import class A.Foo
-
-
import A
-↓import enum A.Foo
-
-
import A
-↓import protocol A.Foo
-
-
import A
-↓import let A.Foo
-
-
import A
-↓import var A.Foo
-
-
import A
-↓import func A.Foo
-
-
import A
-↓import typealias A.B.Foo
-
-
import A
-↓import struct A.B.Foo
-
-
import A
-↓import class A.B.Foo
-
-
import A
-↓import enum A.B.Foo
-
-
import A
-↓import protocol A.B.Foo
-
-
import A
-↓import let A.B.Foo
-
-
import A
-↓import var A.B.Foo
-
-
import A
-↓import func A.B.Foo
-
-
import A.B
-↓import typealias A.B.Foo
-
-
import A.B
-↓import struct A.B.Foo
-
-
import A.B
-↓import class A.B.Foo
-
-
import A.B
-↓import enum A.B.Foo
-
-
import A.B
-↓import protocol A.B.Foo
-
-
import A.B
-↓import let A.B.Foo
-
-
import A.B
-↓import var A.B.Foo
-
-
import A.B
-↓import func A.B.Foo
-
- -
-
- - -
-
- - - - diff --git a/duplicated_key_in_dictionary_literal.html b/duplicated_key_in_dictionary_literal.html deleted file mode 100644 index 26b57aca6..000000000 --- a/duplicated_key_in_dictionary_literal.html +++ /dev/null @@ -1,389 +0,0 @@ - - - - duplicated_key_in_dictionary_literal Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Duplicated Key in Dictionary Literal

- -

Dictionary literals with duplicated keys will crash in runtime.

- -
    -
  • Identifier: duplicated_key_in_dictionary_literal
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
    [
-        1: "1",
-        2: "2"
-    ]
-
-
    [
-        "1": 1,
-        "2": 2
-    ]
-
-
    [
-        foo: "1",
-        bar: "2"
-    ]
-
-

Triggering Examples

-
    [
-        1: "1",
-        2: "2",
-        ↓1: "one"
-    ]
-
-
    [
-        "1": 1,
-        "2": 2,
-        ↓"2": 2
-    ]
-
-
    [
-        foo: "1",
-        bar: "2",
-        baz: "3",
-        ↓foo: "4",
-        zaz: "5"
-    ]
-
-
    [
-        .one: "1",
-        .two: "2",
-        .three: "3",
-        ↓.one: "1",
-        .four: "4",
-        .five: "5"
-    ]
-
- -
-
- - -
-
- - - - diff --git a/dynamic_inline.html b/dynamic_inline.html deleted file mode 100644 index 255c75f4d..000000000 --- a/dynamic_inline.html +++ /dev/null @@ -1,377 +0,0 @@ - - - - dynamic_inline Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Dynamic Inline

- -

Avoid using ‘dynamic’ and ‘@inline(__always)’ together.

- -
    -
  • Identifier: dynamic_inline
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: error
  • -
-

Non Triggering Examples

-
class C {
-dynamic func f() {}}
-
-
class C {
-@inline(__always) func f() {}}
-
-
class C {
-@inline(never) dynamic func f() {}}
-
-

Triggering Examples

-
class C {
-@inline(__always) dynamic ↓func f() {}
-}
-
-
class C {
-@inline(__always) public dynamic ↓func f() {}
-}
-
-
class C {
-@inline(__always) dynamic internal ↓func f() {}
-}
-
-
class C {
-@inline(__always)
-dynamic ↓func f() {}
-}
-
-
class C {
-@inline(__always)
-dynamic
-↓func f() {}
-}
-
- -
-
- - -
-
- - - - diff --git a/empty_collection_literal.html b/empty_collection_literal.html deleted file mode 100644 index 5d4460ab7..000000000 --- a/empty_collection_literal.html +++ /dev/null @@ -1,369 +0,0 @@ - - - - empty_collection_literal Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Empty Collection Literal

- -

Prefer checking isEmpty over comparing collection to an empty array or dictionary literal.

- -
    -
  • Identifier: empty_collection_literal
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
myArray = []
-
-
myArray.isEmpty
-
-
!myArray.isEmpty
-
-
myDict = [:]
-
-

Triggering Examples

-
myArray↓ == []
-
-
myArray↓ != []
-
-
myArray↓ == [ ]
-
-
myDict↓ == [:]
-
-
myDict↓ != [:]
-
-
myDict↓ == [: ]
-
-
myDict↓ == [ :]
-
-
myDict↓ == [ : ]
-
- -
-
- - -
-
- - - - diff --git a/empty_count.html b/empty_count.html deleted file mode 100644 index a746eb51f..000000000 --- a/empty_count.html +++ /dev/null @@ -1,396 +0,0 @@ - - - - empty_count Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Empty Count

- -

Prefer checking isEmpty over comparing count to zero.

- -
    -
  • Identifier: empty_count
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: error, only_after_dot: false
  • -
-

Non Triggering Examples

-
var count = 0
-
-
-
[Int]().isEmpty
-
-
-
[Int]().count > 1
-
-
-
[Int]().count == 1
-
-
-
[Int]().count == 0xff
-
-
-
[Int]().count == 0b01
-
-
-
[Int]().count == 0o07
-
-
-
discount == 0
-
-
-
order.discount == 0
-
-
-

Triggering Examples

-
[Int]().↓count == 0
-
-
-
[Int]().↓count > 0
-
-
-
[Int]().↓count != 0
-
-
-
[Int]().↓count == 0x0
-
-
-
[Int]().↓count == 0x00_00
-
-
-
[Int]().↓count == 0b00
-
-
-
[Int]().↓count == 0o00
-
-
-
↓count == 0
-
-
- -
-
- - -
-
- - - - diff --git a/empty_enum_arguments.html b/empty_enum_arguments.html deleted file mode 100644 index 9fcd09cd9..000000000 --- a/empty_enum_arguments.html +++ /dev/null @@ -1,434 +0,0 @@ - - - - empty_enum_arguments Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Empty Enum Arguments

- -

Arguments can be omitted when matching enums with associated values if they are not used.

- -
    -
  • Identifier: empty_enum_arguments
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
switch foo {
-case .bar: break
-}
-
-
switch foo {
-case .bar(let x): break
-}
-
-
switch foo {
-case let .bar(x): break
-}
-
-
switch (foo, bar) {
-case (_, _): break
-}
-
-
switch foo {
-case "bar".uppercased(): break
-}
-
-
switch (foo, bar) {
-case (_, _) where !something: break
-}
-
-
switch foo {
-case (let f as () -> String)?: break
-}
-
-
switch foo {
-default: break
-}
-
-
if case .bar = foo {
-}
-
-
guard case .bar = foo else {
-}
-
-
if foo == .bar() {}
-
-
guard foo == .bar() else { return }
-
-
if case .appStore = self.appInstaller, !UIDevice.isSimulator() {
-    viewController.present(self, animated: false)
-} else {
-    UIApplication.shared.open(self.appInstaller.url)
-}
-
-

Triggering Examples

-
switch foo {
-case .bar↓(_): break
-}
-
-
switch foo {
-case .bar↓(): break
-}
-
-
switch foo {
-case .bar↓(_), .bar2↓(_): break
-}
-
-
switch foo {
-case .bar↓() where method() > 2: break
-}
-
-
func example(foo: Foo) {
-    switch foo {
-    case case .bar↓(_):
-        break
-    }
-}
-
-
if case .bar↓(_) = foo {
-}
-
-
guard case .bar↓(_) = foo else {
-}
-
-
if case .bar↓() = foo {
-}
-
-
guard case .bar↓() = foo else {
-}
-
-
if case .appStore↓(_) = self.appInstaller, !UIDevice.isSimulator() {
-    viewController.present(self, animated: false)
-} else {
-    UIApplication.shared.open(self.appInstaller.url)
-}
-
- -
-
- - -
-
- - - - diff --git a/empty_parameters.html b/empty_parameters.html deleted file mode 100644 index e1edb556b..000000000 --- a/empty_parameters.html +++ /dev/null @@ -1,375 +0,0 @@ - - - - empty_parameters Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Empty Parameters

- -

Prefer () -> over Void ->.

- -
    -
  • Identifier: empty_parameters
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let abc: () -> Void = {}
-
-
-
func foo(completion: () -> Void)
-
-
-
func foo(completion: () thows -> Void)
-
-
-
let foo: (ConfigurationTests) -> Void throws -> Void)
-
-
-
let foo: (ConfigurationTests) ->   Void throws -> Void)
-
-
-
let foo: (ConfigurationTests) ->Void throws -> Void)
-
-
-

Triggering Examples

-
let abc: ↓(Void) -> Void = {}
-
-
-
func foo(completion: ↓(Void) -> Void)
-
-
-
func foo(completion: ↓(Void) throws -> Void)
-
-
-
let foo: ↓(Void) -> () throws -> Void)
-
-
- -
-
- - -
-
- - - - diff --git a/empty_parentheses_with_trailing_closure.html b/empty_parentheses_with_trailing_closure.html deleted file mode 100644 index ee4eb4861..000000000 --- a/empty_parentheses_with_trailing_closure.html +++ /dev/null @@ -1,388 +0,0 @@ - - - - empty_parentheses_with_trailing_closure Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Empty Parentheses with Trailing Closure

- -

When using trailing closures, empty parentheses should be avoided after the method call.

- -
    -
  • Identifier: empty_parentheses_with_trailing_closure
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
[1, 2].map { $0 + 1 }
-
-
-
[1, 2].map({ $0 + 1 })
-
-
-
[1, 2].reduce(0) { $0 + $1 }
-
-
[1, 2].map { number in
- number + 1 
-}
-
-
-
let isEmpty = [1, 2].isEmpty()
-
-
-
UIView.animateWithDuration(0.3, animations: {
-   self.disableInteractionRightView.alpha = 0
-}, completion: { _ in
-   ()
-})
-
-

Triggering Examples

-
[1, 2].map↓() { $0 + 1 }
-
-
-
[1, 2].map↓( ) { $0 + 1 }
-
-
-
[1, 2].map↓() { number in
- number + 1 
-}
-
-
-
[1, 2].map↓(  ) { number in
- number + 1 
-}
-
-
-
func foo() -> [Int] {
-    return [1, 2].map↓() { $0 + 1 }
-}
-
-
- -
-
- - -
-
- - - - diff --git a/empty_string.html b/empty_string.html deleted file mode 100644 index 23f3f7d4c..000000000 --- a/empty_string.html +++ /dev/null @@ -1,357 +0,0 @@ - - - - empty_string Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Empty String

- -

Prefer checking isEmpty over comparing string to an empty string literal.

- -
    -
  • Identifier: empty_string
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
myString.isEmpty
-
-
!myString.isEmpty
-
-
"""
-foo==
-"""
-
-

Triggering Examples

-
myString↓ == ""
-
-
myString↓ != ""
-
- -
-
- - -
-
- - - - diff --git a/empty_xctest_method.html b/empty_xctest_method.html deleted file mode 100644 index 91dd10e06..000000000 --- a/empty_xctest_method.html +++ /dev/null @@ -1,468 +0,0 @@ - - - - empty_xctest_method Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Empty XCTest Method

- -

Empty XCTest method should be avoided.

- -
    -
  • Identifier: empty_xctest_method
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class TotoTests: XCTestCase {
-    var foobar: Foobar?
-
-    override func setUp() {
-        super.setUp()
-        foobar = Foobar()
-    }
-
-    override func tearDown() {
-        foobar = nil
-        super.tearDown()
-    }
-
-    func testFoo() {
-        XCTAssertTrue(foobar?.foo)
-    }
-
-    func testBar() {
-        // comment...
-
-        XCTAssertFalse(foobar?.bar)
-
-        // comment...
-    }
-}
-
-
class Foobar {
-    func setUp() {}
-
-    func tearDown() {}
-
-    func testFoo() {}
-}
-
-
class TotoTests: XCTestCase {
-    func setUp(with object: Foobar) {}
-
-    func tearDown(object: Foobar) {}
-
-    func testFoo(_ foo: Foobar) {}
-
-    func testBar(bar: (String) -> Int) {}
-}
-
-
class TotoTests: XCTestCase {
-    func testFoo() { XCTAssertTrue(foobar?.foo) }
-
-    func testBar() { XCTAssertFalse(foobar?.bar) }
-}
-
-

Triggering Examples

-
class TotoTests: XCTestCase {
-    override ↓func setUp() {
-    }
-
-    override ↓func tearDown() {
-
-    }
-
-    ↓func testFoo() {
-
-
-    }
-
-    ↓func testBar() {
-
-
-
-    }
-
-    func helperFunction() {
-    }
-}
-
-
class TotoTests: XCTestCase {
-    override ↓func setUp() {}
-
-    override ↓func tearDown() {}
-
-    ↓func testFoo() {}
-
-    func helperFunction() {}
-}
-
-
class TotoTests: XCTestCase {
-    override ↓func setUp() {
-        // comment...
-    }
-
-    override ↓func tearDown() {
-        // comment...
-        // comment...
-    }
-
-    ↓func testFoo() {
-        // comment...
-
-        // comment...
-
-        // comment...
-    }
-
-    ↓func testBar() {
-        /*
-         * comment...
-         *
-         * comment...
-         *
-         * comment...
-         */
-    }
-
-    func helperFunction() {
-    }
-}
-
-
class FooTests: XCTestCase {
-    override ↓func setUp() {}
-}
-
-class BarTests: XCTestCase {
-    ↓func testFoo() {}
-}
-
- -
-
- - -
-
- - - - diff --git a/enum_case_associated_values_count.html b/enum_case_associated_values_count.html deleted file mode 100644 index 28a0c751b..000000000 --- a/enum_case_associated_values_count.html +++ /dev/null @@ -1,363 +0,0 @@ - - - - enum_case_associated_values_count Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Enum Case Associated Values Count

- -

Number of associated values in an enum case should be low

- -
    -
  • Identifier: enum_case_associated_values_count
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning: 5, error: 6
  • -
-

Non Triggering Examples

-
enum Employee {
-    case fullTime(name: String, retirement: Date, designation: String, contactNumber: Int)
-    case partTime(name: String, age: Int, contractEndDate: Date)
-}
-
-
enum Barcode {
-    case upc(Int, Int, Int, Int)
-}
-
-

Triggering Examples

-
enum Employee {
-    case ↓fullTime(name: String, retirement: Date, age: Int, designation: String, contactNumber: Int)
-    case ↓partTime(name: String, contractEndDate: Date, age: Int, designation: String, contactNumber: Int)
-}
-
-
enum Barcode {
-    case ↓upc(Int, Int, Int, Int, Int, Int)
-}
-
- -
-
- - -
-
- - - - diff --git a/expiring_todo.html b/expiring_todo.html deleted file mode 100644 index ce752b262..000000000 --- a/expiring_todo.html +++ /dev/null @@ -1,384 +0,0 @@ - - - - expiring_todo Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

ExpiringTodo

- -

TODOs and FIXMEs should be resolved prior to their expiry date.

- -
    -
  • Identifier: expiring_todo
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: (approaching_expiry_severity) warning, (reached_or_passed_expiry_severity) error
  • -
-

Non Triggering Examples

-
// notaTODO:
-
-
-
// notaFIXME:
-
-
-
// TODO: [12/31/9999]
-
-
-
// TODO(note)
-
-
-
// FIXME(note)
-
-
-
/* FIXME: */
-
-
-
/* TODO: */
-
-
-
/** FIXME: */
-
-
-
/** TODO: */
-
-
-

Triggering Examples

-
// TODO: [10/14/2019]
-
-
-
// FIXME: [10/14/2019]
-
-
-
// FIXME: [1/14/2019]
-
-
-
// FIXME: [10/4/2019]
-
-
- -
-
- - -
-
- - - - diff --git a/explicit_acl.html b/explicit_acl.html deleted file mode 100644 index ce0eedb9b..000000000 --- a/explicit_acl.html +++ /dev/null @@ -1,437 +0,0 @@ - - - - explicit_acl Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Explicit ACL

- -

All declarations should specify Access Control Level keywords explicitly.

- -
    -
  • Identifier: explicit_acl
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
internal enum A {}
-
-
-
public final class B {}
-
-
-
private struct C {}
-
-
-
internal enum A {
- internal enum B {}
-}
-
-
internal final class Foo {}
-
-
internal
-class Foo {
-  private let bar = 5
-}
-
-
internal func a() { let a =  }
-
-
-
private func a() { func innerFunction() { } }
-
-
private enum Foo { enum Bar { } }
-
-
private struct C { let d = 5 }
-
-
internal protocol A {
-  func b()
-}
-
-
internal protocol A {
-  var b: Int
-}
-
-
internal class A { deinit {} }
-
-
extension A: Equatable {}
-
-
extension A {}
-
-
extension Foo {
-    internal func bar() {}
-}
-
-
internal enum Foo {
-    case bar
-}
-
-
extension Foo {
-    public var isValid: Bool {
-        let result = true
-        return result
-    }
-}
-
-
extension Foo {
-    private var isValid: Bool {
-        get {
-            return true
-        }
-        set(newValue) {
-            print(newValue)
-        }
-    }
-}
-
-

Triggering Examples

-
↓enum A {}
-
-
-
final ↓class B {}
-
-
-
internal struct C { ↓let d = 5 }
-
-
-
public struct C { ↓let d = 5 }
-
-
-
func a() {}
-
-
-
internal let a = 0
-↓func b() {}
-
-
-
extension Foo {
-    ↓func bar() {}
-}
-
- -
-
- - -
-
- - - - diff --git a/explicit_enum_raw_value.html b/explicit_enum_raw_value.html deleted file mode 100644 index 1399a4232..000000000 --- a/explicit_enum_raw_value.html +++ /dev/null @@ -1,391 +0,0 @@ - - - - explicit_enum_raw_value Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Explicit Enum Raw Value

- -

Enums should be explicitly assigned their raw values.

- -
    -
  • Identifier: explicit_enum_raw_value
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
enum Numbers {
-  case int(Int)
-  case short(Int16)
-}
-
-
enum Numbers: Int {
-  case one = 1
-  case two = 2
-}
-
-
enum Numbers: Double {
-  case one = 1.1
-  case two = 2.2
-}
-
-
enum Numbers: String {
-  case one = "one"
-  case two = "two"
-}
-
-
protocol Algebra {}
-enum Numbers: Algebra {
-  case one
-}
-
-

Triggering Examples

-
enum Numbers: Int {
-  case one = 10, ↓two, three = 30
-}
-
-
enum Numbers: NSInteger {
-  case ↓one
-}
-
-
enum Numbers: String {
-  case ↓one
-  case ↓two
-}
-
-
enum Numbers: String {
-   case ↓one, two = "two"
-}
-
-
enum Numbers: Decimal {
-  case ↓one, ↓two
-}
-
- -
-
- - -
-
- - - - diff --git a/explicit_init.html b/explicit_init.html deleted file mode 100644 index b77cf07d7..000000000 --- a/explicit_init.html +++ /dev/null @@ -1,377 +0,0 @@ - - - - explicit_init Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Explicit Init

- -

Explicitly calling .init() should be avoided.

- -
    -
  • Identifier: explicit_init
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
import Foundation; class C: NSObject { override init() { super.init() }}
-
-
struct S { let n: Int }; extension S { init() { self.init(n: 1) } }
-
-
[1].flatMap(String.init)
-
-
[String.self].map { $0.init(1) }
-
-
[String.self].map { type in type.init(1) }
-
-
Observable.zip(obs1, obs2, resultSelector: MyType.init).asMaybe()
-
-
Observable.zip(
-  obs1,
-  obs2,
-  resultSelector: MyType.init
-).asMaybe()
-
-

Triggering Examples

-
[1].flatMap{String↓.init($0)}
-
-
[String.self].map { Type in Type↓.init(1) }
-
-
func foo() -> [String] {
-  return [1].flatMap { String↓.init($0) }
-}
-
-
Observable.zip(
-  obs1,
-  obs2,
-  resultSelector: { MyType.init($0, $1) }
-).asMaybe()
-
- -
-
- - -
-
- - - - diff --git a/explicit_self.html b/explicit_self.html deleted file mode 100644 index c962c20e6..000000000 --- a/explicit_self.html +++ /dev/null @@ -1,416 +0,0 @@ - - - - explicit_self Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Explicit Self

- -

Instance variables and functions should be explicitly accessed with ‘self.’.

- -
    -
  • Identifier: explicit_self
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: Yes
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
struct A {
-    func f1() {}
-    func f2() {
-        self.f1()
-    }
-}
-
-
struct A {
-    let p1: Int
-    func f1() {
-        _ = self.p1
-    }
-}
-
-
@propertyWrapper
-struct Wrapper<Value> {
-    let wrappedValue: Value
-    var projectedValue: [Value] {
-        [self.wrappedValue]
-    }
-}
-struct A {
-    @Wrapper var p1: Int
-    func f1() {
-        self.$p1
-        self._p1
-    }
-}
-func f1() {
-    A(p1: 10).$p1
-}
-
-

Triggering Examples

-
struct A {
-    func f1() {}
-    func f2() {
-        ↓f1()
-    }
-}
-
-
struct A {
-    let p1: Int
-    func f1() {
-        _ = ↓p1
-    }
-}
-
-
struct A {
-    func f1(a b: Int) {}
-    func f2() {
-        ↓f1(a: 0)
-    }
-}
-
-
@propertyWrapper
-struct Wrapper<Value> {
-    let wrappedValue: Value
-    var projectedValue: [Value] {
-        [self.wrappedValue]
-    }
-}
-struct A {
-    @Wrapper var p1: Int
-    func f1() {
-        ↓$p1
-        ↓_p1
-    }
-}
-func f1() {
-    A(p1: 10).$p1
-}
-
- -
-
- - -
-
- - - - diff --git a/explicit_top_level_acl.html b/explicit_top_level_acl.html deleted file mode 100644 index 25a1c0cfb..000000000 --- a/explicit_top_level_acl.html +++ /dev/null @@ -1,386 +0,0 @@ - - - - explicit_top_level_acl Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Explicit Top Level ACL

- -

Top-level declarations should specify Access Control Level keywords explicitly.

- -
    -
  • Identifier: explicit_top_level_acl
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
internal enum A {}
-
-
-
public final class B {}
-
-
-
private struct C {}
-
-
-
internal enum A {
- enum B {}
-}
-
-
internal final class Foo {}
-
-
internal
-class Foo {}
-
-
internal func a() {}
-
-
-
extension A: Equatable {}
-
-
extension A {}
-
-

Triggering Examples

-
enum A {}
-
-
-
final class B {}
-
-
-
struct C {}
-
-
-
func a() {}
-
-
-
internal let a = 0
-func b() {}
-
-
- -
-
- - -
-
- - - - diff --git a/explicit_type_interface.html b/explicit_type_interface.html deleted file mode 100644 index ae54e51b5..000000000 --- a/explicit_type_interface.html +++ /dev/null @@ -1,385 +0,0 @@ - - - - explicit_type_interface Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Explicit Type Interface

- -

Properties should have a type interface

- -
    -
  • Identifier: explicit_type_interface
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, excluded: [], allow_redundancy: false
  • -
-

Non Triggering Examples

-
class Foo {
-  var myVar: Int? = 0
-}
-
-
class Foo {
-  let myVar: Int? = 0
-}
-
-
class Foo {
-  static var myVar: Int? = 0
-}
-
-
class Foo {
-  class var myVar: Int? = 0
-}
-
-

Triggering Examples

-
class Foo {
-  ↓var myVar = 0
-}
-
-
class Foo {
-  ↓let mylet = 0
-}
-
-
class Foo {
-  ↓static var myStaticVar = 0
-}
-
-
class Foo {
-  ↓class var myClassVar = 0
-}
-
-
class Foo {
-  ↓let myVar = Int(0)
-}
-
-
class Foo {
-  ↓let myVar = Set<Int>(0)
-}
-
- -
-
- - -
-
- - - - diff --git a/extension_access_modifier.html b/extension_access_modifier.html deleted file mode 100644 index d8821ec49..000000000 --- a/extension_access_modifier.html +++ /dev/null @@ -1,408 +0,0 @@ - - - - extension_access_modifier Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Extension Access Modifier

- -

Prefer to use extension access modifiers

- -
    -
  • Identifier: extension_access_modifier
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
extension Foo: SomeProtocol {
-  public var bar: Int { return 1 }
-}
-
-
extension Foo {
-  private var bar: Int { return 1 }
-  public var baz: Int { return 1 }
-}
-
-
extension Foo {
-  private var bar: Int { return 1 }
-  public func baz() {}
-}
-
-
extension Foo {
-  var bar: Int { return 1 }
-  var baz: Int { return 1 }
-}
-
-
public extension Foo {
-  var bar: Int { return 1 }
-  var baz: Int { return 1 }
-}
-
-
extension Foo {
-  private bar: Int { return 1 }
-  private baz: Int { return 1 }
-}
-
-
extension Foo {
-  open bar: Int { return 1 }
-  open baz: Int { return 1 }
-}
-
-
extension Foo {
-    func setup() {}
-    public func update() {}
-}
-
-

Triggering Examples

-
↓extension Foo {
-   public var bar: Int { return 1 }
-   public var baz: Int { return 1 }
-}
-
-
↓extension Foo {
-   public var bar: Int { return 1 }
-   public func baz() {}
-}
-
-
public extension Foo {
-   public ↓func bar() {}
-   public ↓func baz() {}
-}
-
-
↓extension Foo {
-   public var bar: Int {
-      let value = 1
-      return value
-   }
-
-   public var baz: Int { return 1 }
-}
-
- -
-
- - -
-
- - - - diff --git a/fallthrough.html b/fallthrough.html deleted file mode 100644 index 7e2b2fff0..000000000 --- a/fallthrough.html +++ /dev/null @@ -1,357 +0,0 @@ - - - - fallthrough Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Fallthrough

- -

Fallthrough should be avoided.

- -
    -
  • Identifier: fallthrough
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
switch foo {
-case .bar, .bar2, .bar3:
-  something()
-}
-
-

Triggering Examples

-
switch foo {
-case .bar:
-  ↓fallthrough
-case .bar2:
-  something()
-}
-
- -
-
- - -
-
- - - - diff --git a/fatal_error_message.html b/fatal_error_message.html deleted file mode 100644 index 42547427a..000000000 --- a/fatal_error_message.html +++ /dev/null @@ -1,361 +0,0 @@ - - - - fatal_error_message Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Fatal Error Message

- -

A fatalError call should have a message.

- -
    -
  • Identifier: fatal_error_message
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
func foo() {
-  fatalError("Foo")
-}
-
-
func foo() {
-  fatalError(x)
-}
-
-

Triggering Examples

-
func foo() {
-  ↓fatalError("")
-}
-
-
func foo() {
-  ↓fatalError()
-}
-
- -
-
- - -
-
- - - - diff --git a/file_header.html b/file_header.html deleted file mode 100644 index 9b74c4193..000000000 --- a/file_header.html +++ /dev/null @@ -1,366 +0,0 @@ - - - - file_header Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

File Header

- -

Header comments should be consistent with project patterns. The SWIFTLINT_CURRENT_FILENAME placeholder can optionally be used in the required and forbidden patterns. It will be replaced by the real file name.

- -
    -
  • Identifier: file_header
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, required_string: None, required_pattern: None, forbidden_string: None, forbidden_pattern: None
  • -
-

Non Triggering Examples

-
let foo = "Copyright"
-
-
let foo = 2 // Copyright
-
-
let foo = 2
- // Copyright
-
-

Triggering Examples

-
// ↓Copyright
-
-
-
//
-// ↓Copyright
-
-
//
-//  FileHeaderRule.swift
-//  SwiftLint
-//
-//  Created by Marcelo Fabri on 27/11/16.
-//  ↓Copyright © 2016 Realm. All rights reserved.
-//
-
- -
-
- - -
-
- - - - diff --git a/file_length.html b/file_length.html deleted file mode 100644 index 150df2141..000000000 --- a/file_length.html +++ /dev/null @@ -1,1957 +0,0 @@ - - - - file_length Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

File Length

- -

Files should not span too many lines.

- -
    -
  • Identifier: file_length
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning: 400, error: 1000, ignore_comment_only_lines: false
  • -
-

Non Triggering Examples

-
print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-
-
-

Triggering Examples

-
print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-
-
-
print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-//
-
-
-
print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-
-
- -
-
- - -
-
- - - - diff --git a/file_name.html b/file_name.html deleted file mode 100644 index cbb21e76d..000000000 --- a/file_name.html +++ /dev/null @@ -1,343 +0,0 @@ - - - - file_name Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

File Name

- -

File name should match a type or extension declared in the file (if any).

- -
    -
  • Identifier: file_name
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: (severity) warning, excluded: [“LinuxMain.swift”, “main.swift”], prefix_pattern: , suffix_pattern: +.*, nested_type_separator: .
  • -
- -
-
- - -
-
- - - - diff --git a/file_name_no_space.html b/file_name_no_space.html deleted file mode 100644 index cb9c7d799..000000000 --- a/file_name_no_space.html +++ /dev/null @@ -1,343 +0,0 @@ - - - - file_name_no_space Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

File Name No Space

- -

File name should not contain any whitespace.

- -
    -
  • Identifier: file_name_no_space
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: (severity) warning, excluded: []
  • -
- -
-
- - -
-
- - - - diff --git a/file_types_order.html b/file_types_order.html deleted file mode 100644 index 0add043a2..000000000 --- a/file_types_order.html +++ /dev/null @@ -1,521 +0,0 @@ - - - - file_types_order Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

File Types Order

- -

Specifies how the types within a file should be ordered.

- -
    -
  • Identifier: file_types_order
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, order: [[SwiftLintFramework.FileType.supportingType], [SwiftLintFramework.FileType.mainType], [SwiftLintFramework.FileType.extension], [SwiftLintFramework.FileType.previewProvider]]
  • -
-

Non Triggering Examples

-
// Supporting Types
-protocol TestViewControllerDelegate {
-    func didPressTrackedButton()
-}
-
-// Main Type
-class TestViewController: UIViewController {
-    // Type Aliases
-    typealias CompletionHandler = ((TestEnum) -> Void)
-
-    // Subtypes
-    class TestClass {
-        // 10 lines
-    }
-
-    struct TestStruct {
-        // 3 lines
-    }
-
-    enum TestEnum {
-        // 5 lines
-    }
-
-    // Stored Type Properties
-    static let cellIdentifier: String = "AmazingCell"
-
-    // Stored Instance Properties
-    var shouldLayoutView1: Bool!
-    weak var delegate: TestViewControllerDelegate?
-    private var hasLayoutedView1: Bool = false
-    private var hasLayoutedView2: Bool = false
-
-    // Computed Instance Properties
-    private var hasAnyLayoutedView: Bool {
-         return hasLayoutedView1 || hasLayoutedView2
-    }
-
-    // IBOutlets
-    @IBOutlet private var view1: UIView!
-    @IBOutlet private var view2: UIView!
-
-    // Initializers
-    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
-        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
-    }
-
-    required init?(coder aDecoder: NSCoder) {
-        fatalError("init(coder:) has not been implemented")
-    }
-
-    // Type Methods
-    static func makeViewController() -> TestViewController {
-        // some code
-    }
-
-    // Life-Cycle Methods
-    override func viewDidLoad() {
-        super.viewDidLoad()
-    }
-
-    override func viewDidLayoutSubviews() {
-        super.viewDidLayoutSubviews()
-    }
-
-    // IBActions
-    @IBAction func goNextButtonPressed() {
-        goToNextVc()
-        delegate?.didPressTrackedButton()
-    }
-
-    @objc
-    func goToRandomVcButtonPressed() {
-        goToRandomVc()
-    }
-
-    // MARK: Other Methods
-    func goToNextVc() { /* TODO */ }
-
-    func goToInfoVc() { /* TODO */ }
-
-    func goToRandomVc() {
-        let viewCtrl = getRandomVc()
-        present(viewCtrl, animated: true)
-    }
-
-    private func getRandomVc() -> UIViewController { return UIViewController() }
-
-    // Subscripts
-    subscript(_ someIndexThatIsNotEvenUsed: Int) -> String {
-        get {
-            return "This is just a test"
-        }
-
-        set {
-            log.warning("Just a test", newValue)
-        }
-    }
-}
-
-// Extensions
-extension TestViewController: UITableViewDataSource {
-    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
-        return 1
-    }
-}
-
-
// Only extensions
-extension Foo {}
-extension Bar {
-}
-
-
struct ContentView: View {
-    var body: some View {
-        Text("Hello, World!")
-    }
-}
-
-struct ContentView_Previews: PreviewProvider {
-    static var previews: some View { ContentView() }
-}
-
-

Triggering Examples

-
↓class TestViewController: UIViewController {}
-
-// Supporting Types
-protocol TestViewControllerDelegate {
-    func didPressTrackedButton()
-}
-
-
// Extensions
-↓extension TestViewController: UITableViewDataSource {
-    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
-        return 1
-    }
-}
-
-class TestViewController: UIViewController {}
-
-
// Supporting Types
-protocol TestViewControllerDelegate {
-    func didPressTrackedButton()
-}
-
-↓class TestViewController: UIViewController {}
-
-// Supporting Types
-protocol TestViewControllerDelegate {
-    func didPressTrackedButton()
-}
-
-
// Supporting Types
-protocol TestViewControllerDelegate {
-    func didPressTrackedButton()
-}
-
-// Extensions
-↓extension TestViewController: UITableViewDataSource {
-    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
-        return 1
-    }
-}
-
-class TestViewController: UIViewController {}
-
-// Extensions
-extension TestViewController: UITableViewDataSource {
-    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
-        return 1
-    }
-}
-
-
// Preview Provider
-↓struct ContentView_Previews: PreviewProvider {}
-
-// Main Type
-struct ContentView: View {}
-
- -
-
- - -
-
- - - - diff --git a/first_where.html b/first_where.html deleted file mode 100644 index 8a2764345..000000000 --- a/first_where.html +++ /dev/null @@ -1,385 +0,0 @@ - - - - first_where Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

First Where

- -

Prefer using .first(where:) over .filter { }.first in collections.

- -
    -
  • Identifier: first_where
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
kinds.filter(excludingKinds.contains).isEmpty && kinds.first == .identifier
-
-
-
myList.first(where: { $0 % 2 == 0 })
-
-
-
match(pattern: pattern).filter { $0.first == .identifier }
-
-
-
(myList.filter { $0 == 1 }.suffix(2)).first
-
-
-
collection.filter("stringCol = '3'").first
-
-
realm?.objects(User.self).filter(NSPredicate(format: "email ==[c] %@", email)).first
-
-
if let pause = timeTracker.pauses.filter("beginDate < %@", beginDate).first { print(pause) }
-
-

Triggering Examples

-
↓myList.filter { $0 % 2 == 0 }.first
-
-
-
↓myList.filter({ $0 % 2 == 0 }).first
-
-
-
↓myList.map { $0 + 1 }.filter({ $0 % 2 == 0 }).first
-
-
-
↓myList.map { $0 + 1 }.filter({ $0 % 2 == 0 }).first?.something()
-
-
-
↓myList.filter(someFunction).first
-
-
-
↓myList.filter({ $0 % 2 == 0 })
-.first
-
-
-
(↓myList.filter { $0 == 1 }).first
-
-
- -
-
- - -
-
- - - - diff --git a/flatmap_over_map_reduce.html b/flatmap_over_map_reduce.html deleted file mode 100644 index e7a1de0df..000000000 --- a/flatmap_over_map_reduce.html +++ /dev/null @@ -1,351 +0,0 @@ - - - - flatmap_over_map_reduce Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

FlatMap over map and reduce

- -

Prefer flatMap over map followed by reduce([], +).

- -
    -
  • Identifier: flatmap_over_map_reduce
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let foo = bar.map { $0.count }.reduce(0, +)
-
-
let foo = bar.flatMap { $0.array }
-
-

Triggering Examples

-
let foo = ↓bar.map { $0.array }.reduce([], +)
-
- -
-
- - -
-
- - - - diff --git a/for_where.html b/for_where.html deleted file mode 100644 index 99795e8f0..000000000 --- a/for_where.html +++ /dev/null @@ -1,393 +0,0 @@ - - - - for_where Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

For Where

- -

where clauses are preferred over a single if inside a for.

- -
    -
  • Identifier: for_where
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
for user in users where user.id == 1 { }
-
-
for user in users {
-  if let id = user.id { }
-}
-
-
for user in users {
-  if var id = user.id { }
-}
-
-
for user in users {
-  if user.id == 1 { } else { }
-}
-
-
for user in users {
-  if user.id == 1 {
-  } else if user.id == 2 { }
-}
-
-
for user in users {
-  if user.id == 1 { }
-  print(user)
-}
-
-
for user in users {
-  let id = user.id
-  if id == 1 { }
-}
-
-
for user in users {
-  if user.id == 1 { }
-  return true
-}
-
-
for user in users {
-  if user.id == 1 && user.age > 18 { }
-}
-
-
for (index, value) in array.enumerated() {
-  if case .valueB(_) = value {
-    return index
-  }
-}
-
-

Triggering Examples

-
for user in users {
-  ↓if user.id == 1 { return true }
-}
-
- -
-
- - -
-
- - - - diff --git a/force_cast.html b/force_cast.html deleted file mode 100644 index d3f7f45e5..000000000 --- a/force_cast.html +++ /dev/null @@ -1,351 +0,0 @@ - - - - force_cast Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Force Cast

- -

Force casts should be avoided.

- -
    -
  • Identifier: force_cast
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: error
  • -
-

Non Triggering Examples

-
NSNumber() as? Int
-
-
-

Triggering Examples

-
NSNumber() ↓as! Int
-
-
- -
-
- - -
-
- - - - diff --git a/force_try.html b/force_try.html deleted file mode 100644 index 41050fa07..000000000 --- a/force_try.html +++ /dev/null @@ -1,353 +0,0 @@ - - - - force_try Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Force Try

- -

Force tries should be avoided.

- -
    -
  • Identifier: force_try
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: error
  • -
-

Non Triggering Examples

-
func a() throws {}
-do {
-  try a()
-} catch {}
-
-

Triggering Examples

-
func a() throws {}
-↓try! a()
-
- -
-
- - -
-
- - - - diff --git a/force_unwrapping.html b/force_unwrapping.html deleted file mode 100644 index 83d509b4f..000000000 --- a/force_unwrapping.html +++ /dev/null @@ -1,411 +0,0 @@ - - - - force_unwrapping Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Force Unwrapping

- -

Force unwrapping should be avoided.

- -
    -
  • Identifier: force_unwrapping
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
if let url = NSURL(string: query)
-
-
navigationController?.pushViewController(viewController, animated: true)
-
-
let s as! Test
-
-
try! canThrowErrors()
-
-
let object: Any!
-
-
@IBOutlet var constraints: [NSLayoutConstraint]!
-
-
setEditing(!editing, animated: true)
-
-
navigationController.setNavigationBarHidden(!navigationController.navigationBarHidden, animated: true)
-
-
if addedToPlaylist && (!self.selectedFilters.isEmpty || self.searchBar?.text?.isEmpty == false) {}
-
-
print("\(xVar)!")
-
-
var test = (!bar)
-
-
var a: [Int]!
-
-
private var myProperty: (Void -> Void)!
-
-
func foo(_ options: [AnyHashable: Any]!) {
-
-
func foo() -> [Int]!
-
-
func foo() -> [AnyHashable: Any]!
-
-
func foo() -> [Int]! { return [] }
-
-
return self
-
-

Triggering Examples

-
let url = NSURL(string: query)↓!
-
-
navigationController↓!.pushViewController(viewController, animated: true)
-
-
let unwrapped = optional↓!
-
-
return cell↓!
-
-
let url = NSURL(string: "http://www.google.com")↓!
-
-
let dict = ["Boooo": "👻"]func bla() -> String { return dict["Boooo"]↓! }
-
-
let dict = ["Boooo": "👻"]func bla() -> String { return dict["Boooo"]↓!.contains("B") }
-
-
let a = dict["abc"]↓!.contains("B")
-
-
dict["abc"]↓!.bar("B")
-
-
if dict["a"]↓!!!! {
-
-
var foo: [Bool]! = dict["abc"]↓!
-
-
context("abc") {
-  var foo: [Bool]! = dict["abc"]↓!
-}
-
-
open var computed: String { return foo.bar↓! }
-
-
return self↓!
-
- -
-
- - -
-
- - - - diff --git a/function_body_length.html b/function_body_length.html deleted file mode 100644 index 7cc226786..000000000 --- a/function_body_length.html +++ /dev/null @@ -1,343 +0,0 @@ - - - - function_body_length Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Function Body Length

- -

Functions bodies should not span too many lines.

- -
    -
  • Identifier: function_body_length
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning: 40, error: 100
  • -
- -
-
- - -
-
- - - - diff --git a/function_default_parameter_at_end.html b/function_default_parameter_at_end.html deleted file mode 100644 index 62a90a71b..000000000 --- a/function_default_parameter_at_end.html +++ /dev/null @@ -1,371 +0,0 @@ - - - - function_default_parameter_at_end Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Function Default Parameter at End

- -

Prefer to locate parameters with defaults toward the end of the parameter list.

- -
    -
  • Identifier: function_default_parameter_at_end
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
func foo(baz: String, bar: Int = 0) {}
-
-
func foo(x: String, y: Int = 0, z: CGFloat = 0) {}
-
-
func foo(bar: String, baz: Int = 0, z: () -> Void) {}
-
-
func foo(bar: String, z: () -> Void, baz: Int = 0) {}
-
-
func foo(bar: Int = 0) {}
-
-
func foo() {}
-
-
class A: B {
-  override func foo(bar: Int = 0, baz: String) {}
-
-
func foo(bar: Int = 0, completion: @escaping CompletionHandler) {}
-
-
func foo(a: Int, b: CGFloat = 0) {
-  let block = { (error: Error?) in }
-}
-
-
func foo(a: String, b: String? = nil,
-         c: String? = nil, d: @escaping AlertActionHandler = { _ in }) {}
-
-

Triggering Examples

-
↓func foo(bar: Int = 0, baz: String) {}
-
- -
-
- - -
-
- - - - diff --git a/function_parameter_count.html b/function_parameter_count.html deleted file mode 100644 index 9d4908d68..000000000 --- a/function_parameter_count.html +++ /dev/null @@ -1,376 +0,0 @@ - - - - function_parameter_count Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Function Parameter Count

- -

Number of function parameters should be low.

- -
    -
  • Identifier: function_parameter_count
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning: 5, error: 8ignores_default_parameters: true
  • -
-

Non Triggering Examples

-
init(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-
-
init (a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-
-
`init`(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-
-
init?(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-
-
init?<T>(a: T, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-
-
init?<T: String>(a: T, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-
-
func f2(p1: Int, p2: Int) { }
-
-
func f(a: Int, b: Int, c: Int, d: Int, x: Int = 42) {}
-
-
func f(a: [Int], b: Int, c: Int, d: Int, f: Int) -> [Int] {
-    let s = a.flatMap { $0 as? [String: Int] } ?? []}}
-
-
override func f(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-
-

Triggering Examples

-
↓func f(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-
-
↓func initialValue(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-
-
↓func f(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int = 2, g: Int) {}
-
-
struct Foo {
-    init(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-    ↓func bar(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}}
-
- -
-
- - -
-
- - - - diff --git a/generic_type_name.html b/generic_type_name.html deleted file mode 100644 index 52f8d1f46..000000000 --- a/generic_type_name.html +++ /dev/null @@ -1,453 +0,0 @@ - - - - generic_type_name Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Generic Type Name

- -

Generic type name should only contain alphanumeric characters, start with an uppercase character and span between 1 and 20 characters in length.

- -
    -
  • Identifier: generic_type_name
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: (min_length) w/e: 1/0, (max_length) w/e: 20/1000, excluded: [], allowed_symbols: [], validates_start_with_lowercase: true
  • -
-

Non Triggering Examples

-
func foo<T>() {}
-
-
-
func foo<T>() -> T {}
-
-
-
func foo<T, U>(param: U) -> T {}
-
-
-
func foo<T: Hashable, U: Rule>(param: U) -> T {}
-
-
-
struct Foo<T> {}
-
-
-
class Foo<T> {}
-
-
-
enum Foo<T> {}
-
-
-
func run(_ options: NoOptions<CommandantError<()>>) {}
-
-
-
func foo(_ options: Set<type>) {}
-
-
-
func < <T: Comparable>(lhs: T?, rhs: T?) -> Bool
-
-
-
func configureWith(data: Either<MessageThread, (project: Project, backing: Backing)>)
-
-
-
typealias StringDictionary<T> = Dictionary<String, T>
-
-
-
typealias BackwardTriple<T1, T2, T3> = (T3, T2, T1)
-
-
-
typealias DictionaryOfStrings<T : Hashable> = Dictionary<T, String>
-
-
-

Triggering Examples

-
func foo<↓T_Foo>() {}
-
-
-
func foo<T, ↓U_Foo>(param: U_Foo) -> T {}
-
-
-
func foo<↓TTTTTTTTTTTTTTTTTTTTT>() {}
-
-
-
func foo<↓type>() {}
-
-
-
typealias StringDictionary<↓T_Foo> = Dictionary<String, T_Foo>
-
-
-
typealias BackwardTriple<T1, ↓T2_Bar, T3> = (T3, T2_Bar, T1)
-
-
-
typealias DictionaryOfStrings<↓T_Foo: Hashable> = Dictionary<T_Foo, String>
-
-
-
class Foo<↓T_Foo> {}
-
-
-
class Foo<T, ↓U_Foo> {}
-
-
-
class Foo<↓T_Foo, ↓U_Foo> {}
-
-
-
class Foo<↓TTTTTTTTTTTTTTTTTTTTT> {}
-
-
-
class Foo<↓type> {}
-
-
-
struct Foo<↓T_Foo> {}
-
-
-
struct Foo<T, ↓U_Foo> {}
-
-
-
struct Foo<↓T_Foo, ↓U_Foo> {}
-
-
-
struct Foo<↓TTTTTTTTTTTTTTTTTTTTT> {}
-
-
-
struct Foo<↓type> {}
-
-
-
enum Foo<↓T_Foo> {}
-
-
-
enum Foo<T, ↓U_Foo> {}
-
-
-
enum Foo<↓T_Foo, ↓U_Foo> {}
-
-
-
enum Foo<↓TTTTTTTTTTTTTTTTTTTTT> {}
-
-
-
enum Foo<↓type> {}
-
-
- -
-
- - -
-
- - - - diff --git a/ibinspectable_in_extension.html b/ibinspectable_in_extension.html deleted file mode 100644 index 47571e6b1..000000000 --- a/ibinspectable_in_extension.html +++ /dev/null @@ -1,353 +0,0 @@ - - - - ibinspectable_in_extension Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

IBInspectable in Extension

- -

Extensions shouldn’t add @IBInspectable properties.

- -
    -
  • Identifier: ibinspectable_in_extension
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class Foo {
-  @IBInspectable private var x: Int
-}
-
-

Triggering Examples

-
extension Foo {
-  @IBInspectable private var x: Int
-}
-
- -
-
- - -
-
- - - - diff --git a/identical_operands.html b/identical_operands.html deleted file mode 100644 index 9682defd3..000000000 --- a/identical_operands.html +++ /dev/null @@ -1,749 +0,0 @@ - - - - identical_operands Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Identical Operands

- -

Comparing two identical operands is likely a mistake.

- -
    -
  • Identifier: identical_operands
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
1 == 2
-
-
foo == bar
-
-
prefixedFoo == foo
-
-
foo.aProperty == foo.anotherProperty
-
-
self.aProperty == self.anotherProperty
-
-
"1 == 1"
-
-
self.aProperty == aProperty
-
-
lhs.aProperty == rhs.aProperty
-
-
lhs.identifier == rhs.identifier
-
-
i == index
-
-
$0 == 0
-
-
keyValues?.count ?? 0 == 0
-
-
string == string.lowercased()
-
-
let num: Int? = 0
-_ = num != nil && num == num?.byteSwapped
-
-
num == num!.byteSwapped
-
-
1 != 2
-
-
foo != bar
-
-
prefixedFoo != foo
-
-
foo.aProperty != foo.anotherProperty
-
-
self.aProperty != self.anotherProperty
-
-
"1 != 1"
-
-
self.aProperty != aProperty
-
-
lhs.aProperty != rhs.aProperty
-
-
lhs.identifier != rhs.identifier
-
-
i != index
-
-
$0 != 0
-
-
keyValues?.count ?? 0 != 0
-
-
string != string.lowercased()
-
-
let num: Int? = 0
-_ = num != nil && num != num?.byteSwapped
-
-
num != num!.byteSwapped
-
-
1 === 2
-
-
foo === bar
-
-
prefixedFoo === foo
-
-
foo.aProperty === foo.anotherProperty
-
-
self.aProperty === self.anotherProperty
-
-
"1 === 1"
-
-
self.aProperty === aProperty
-
-
lhs.aProperty === rhs.aProperty
-
-
lhs.identifier === rhs.identifier
-
-
i === index
-
-
$0 === 0
-
-
keyValues?.count ?? 0 === 0
-
-
string === string.lowercased()
-
-
let num: Int? = 0
-_ = num != nil && num === num?.byteSwapped
-
-
num === num!.byteSwapped
-
-
1 !== 2
-
-
foo !== bar
-
-
prefixedFoo !== foo
-
-
foo.aProperty !== foo.anotherProperty
-
-
self.aProperty !== self.anotherProperty
-
-
"1 !== 1"
-
-
self.aProperty !== aProperty
-
-
lhs.aProperty !== rhs.aProperty
-
-
lhs.identifier !== rhs.identifier
-
-
i !== index
-
-
$0 !== 0
-
-
keyValues?.count ?? 0 !== 0
-
-
string !== string.lowercased()
-
-
let num: Int? = 0
-_ = num != nil && num !== num?.byteSwapped
-
-
num !== num!.byteSwapped
-
-
1 > 2
-
-
foo > bar
-
-
prefixedFoo > foo
-
-
foo.aProperty > foo.anotherProperty
-
-
self.aProperty > self.anotherProperty
-
-
"1 > 1"
-
-
self.aProperty > aProperty
-
-
lhs.aProperty > rhs.aProperty
-
-
lhs.identifier > rhs.identifier
-
-
i > index
-
-
$0 > 0
-
-
keyValues?.count ?? 0 > 0
-
-
string > string.lowercased()
-
-
let num: Int? = 0
-_ = num != nil && num > num?.byteSwapped
-
-
num > num!.byteSwapped
-
-
1 >= 2
-
-
foo >= bar
-
-
prefixedFoo >= foo
-
-
foo.aProperty >= foo.anotherProperty
-
-
self.aProperty >= self.anotherProperty
-
-
"1 >= 1"
-
-
self.aProperty >= aProperty
-
-
lhs.aProperty >= rhs.aProperty
-
-
lhs.identifier >= rhs.identifier
-
-
i >= index
-
-
$0 >= 0
-
-
keyValues?.count ?? 0 >= 0
-
-
string >= string.lowercased()
-
-
let num: Int? = 0
-_ = num != nil && num >= num?.byteSwapped
-
-
num >= num!.byteSwapped
-
-
1 < 2
-
-
foo < bar
-
-
prefixedFoo < foo
-
-
foo.aProperty < foo.anotherProperty
-
-
self.aProperty < self.anotherProperty
-
-
"1 < 1"
-
-
self.aProperty < aProperty
-
-
lhs.aProperty < rhs.aProperty
-
-
lhs.identifier < rhs.identifier
-
-
i < index
-
-
$0 < 0
-
-
keyValues?.count ?? 0 < 0
-
-
string < string.lowercased()
-
-
let num: Int? = 0
-_ = num != nil && num < num?.byteSwapped
-
-
num < num!.byteSwapped
-
-
1 <= 2
-
-
foo <= bar
-
-
prefixedFoo <= foo
-
-
foo.aProperty <= foo.anotherProperty
-
-
self.aProperty <= self.anotherProperty
-
-
"1 <= 1"
-
-
self.aProperty <= aProperty
-
-
lhs.aProperty <= rhs.aProperty
-
-
lhs.identifier <= rhs.identifier
-
-
i <= index
-
-
$0 <= 0
-
-
keyValues?.count ?? 0 <= 0
-
-
string <= string.lowercased()
-
-
let num: Int? = 0
-_ = num != nil && num <= num?.byteSwapped
-
-
num <= num!.byteSwapped
-
-
func evaluate(_ mode: CommandMode) -> Result<AutoCorrectOptions, CommandantError<CommandantError<()>>>
-
-
let array = Array<Array<Int>>()
-
-
guard Set(identifiers).count != identifiers.count else { return }
-
-
expect("foo") == "foo"
-
-
type(of: model).cachePrefix == cachePrefix
-
-
histogram[156].0 == 0x003B8D96 && histogram[156].1 == 1
-
-

Triggering Examples

-
↓1 == 1
-
-
↓foo == foo
-
-
↓foo.aProperty == foo.aProperty
-
-
↓self.aProperty == self.aProperty
-
-
↓$0 == $0
-
-
↓a?.b == a?.b
-
-
if (↓elem == elem) {}
-
-
XCTAssertTrue(↓s3 == s3)
-
-
if let tab = tabManager.selectedTab, ↓tab.webView == tab.webView
-
-
↓1 != 1
-
-
↓foo != foo
-
-
↓foo.aProperty != foo.aProperty
-
-
↓self.aProperty != self.aProperty
-
-
↓$0 != $0
-
-
↓a?.b != a?.b
-
-
if (↓elem != elem) {}
-
-
XCTAssertTrue(↓s3 != s3)
-
-
if let tab = tabManager.selectedTab, ↓tab.webView != tab.webView
-
-
↓1 === 1
-
-
↓foo === foo
-
-
↓foo.aProperty === foo.aProperty
-
-
↓self.aProperty === self.aProperty
-
-
↓$0 === $0
-
-
↓a?.b === a?.b
-
-
if (↓elem === elem) {}
-
-
XCTAssertTrue(↓s3 === s3)
-
-
if let tab = tabManager.selectedTab, ↓tab.webView === tab.webView
-
-
↓1 !== 1
-
-
↓foo !== foo
-
-
↓foo.aProperty !== foo.aProperty
-
-
↓self.aProperty !== self.aProperty
-
-
↓$0 !== $0
-
-
↓a?.b !== a?.b
-
-
if (↓elem !== elem) {}
-
-
XCTAssertTrue(↓s3 !== s3)
-
-
if let tab = tabManager.selectedTab, ↓tab.webView !== tab.webView
-
-
↓1 > 1
-
-
↓foo > foo
-
-
↓foo.aProperty > foo.aProperty
-
-
↓self.aProperty > self.aProperty
-
-
↓$0 > $0
-
-
↓a?.b > a?.b
-
-
if (↓elem > elem) {}
-
-
XCTAssertTrue(↓s3 > s3)
-
-
if let tab = tabManager.selectedTab, ↓tab.webView > tab.webView
-
-
↓1 >= 1
-
-
↓foo >= foo
-
-
↓foo.aProperty >= foo.aProperty
-
-
↓self.aProperty >= self.aProperty
-
-
↓$0 >= $0
-
-
↓a?.b >= a?.b
-
-
if (↓elem >= elem) {}
-
-
XCTAssertTrue(↓s3 >= s3)
-
-
if let tab = tabManager.selectedTab, ↓tab.webView >= tab.webView
-
-
↓1 < 1
-
-
↓foo < foo
-
-
↓foo.aProperty < foo.aProperty
-
-
↓self.aProperty < self.aProperty
-
-
↓$0 < $0
-
-
↓a?.b < a?.b
-
-
if (↓elem < elem) {}
-
-
XCTAssertTrue(↓s3 < s3)
-
-
if let tab = tabManager.selectedTab, ↓tab.webView < tab.webView
-
-
↓1 <= 1
-
-
↓foo <= foo
-
-
↓foo.aProperty <= foo.aProperty
-
-
↓self.aProperty <= self.aProperty
-
-
↓$0 <= $0
-
-
↓a?.b <= a?.b
-
-
if (↓elem <= elem) {}
-
-
XCTAssertTrue(↓s3 <= s3)
-
-
if let tab = tabManager.selectedTab, ↓tab.webView <= tab.webView
-
- -
-
- - -
-
- - - - diff --git a/identifier_name.html b/identifier_name.html deleted file mode 100644 index c9e6e8de1..000000000 --- a/identifier_name.html +++ /dev/null @@ -1,395 +0,0 @@ - - - - identifier_name Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Identifier Name

- -

Identifier names should only contain alphanumeric characters and start with a lowercase character or should only contain capital letters. In an exception to the above, variable names may start with a capital letter when they are declared static and immutable. Variable names should not be too long or too short.

- -
    -
  • Identifier: identifier_name
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: (min_length) w/e: 3/2, (max_length) w/e: 40/60, excluded: [“id”], allowed_symbols: [], validates_start_with_lowercase: true
  • -
-

Non Triggering Examples

-
let myLet = 0
-
-
var myVar = 0
-
-
private let _myLet = 0
-
-
class Abc { static let MyLet = 0 }
-
-
let URL: NSURL? = nil
-
-
let XMLString: String? = nil
-
-
override var i = 0
-
-
enum Foo { case myEnum }
-
-
func isOperator(name: String) -> Bool
-
-
func typeForKind(_ kind: SwiftDeclarationKind) -> String
-
-
func == (lhs: SyntaxToken, rhs: SyntaxToken) -> Bool
-
-
override func IsOperator(name: String) -> Bool
-
-
enum Foo { case `private` }
-
-
enum Foo { case value(String) }
-
-

Triggering Examples

-
↓let MyLet = 0
-
-
↓let _myLet = 0
-
-
private ↓let myLet_ = 0
-
-
↓let myExtremelyVeryVeryVeryVeryVeryVeryLongLet = 0
-
-
↓var myExtremelyVeryVeryVeryVeryVeryVeryLongVar = 0
-
-
private ↓let _myExtremelyVeryVeryVeryVeryVeryVeryLongLet = 0
-
-
↓let i = 0
-
-
↓var aa = 0
-
-
private ↓let _i = 0
-
-
↓func IsOperator(name: String) -> Bool
-
-
enum Foo { case ↓MyEnum }
-
- -
-
- - -
-
- - - - diff --git a/img/carat.png b/img/carat.png deleted file mode 100755 index 29d2f7fd4955fca6bc6fb740e0373a2c358c398e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 274 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRo!3HEV4DF?Wlw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6JlqAi{-jv*Ddl5#RKJQ5NTUZgiPI4RUKGIKU?u8L&ndhX1t za+0CMVUnT(Gnb}ei=c~x==tMH^F1_tBocXwcoSWoO-SZY-o>!8%^=Bms)(~h;m_U( zXNixk28L}0LS5-jKyq@#2gyS|J&f#pGCLkTc<@2s1dqeyqJ*Rc0tSIETAgmODY;(s z2y|Mcp&2}7rpBprBBB~1qM1`N+}4SoxYVPqsXi&l`rxZp{(w0iSy$Nv5*Vy!RapG^ S^0y4=eg;ohKbLh*2~7a!Pg}VF diff --git a/img/dash.png b/img/dash.png deleted file mode 100755 index 6f694c7a012b417908da3687a0a39aa182e91c74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1338 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 diff --git a/implicit_getter.html b/implicit_getter.html deleted file mode 100644 index 4352c9f30..000000000 --- a/implicit_getter.html +++ /dev/null @@ -1,555 +0,0 @@ - - - - implicit_getter Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Implicit Getter

- -

Computed read-only properties and subscripts should avoid using the get keyword.

- -
    -
  • Identifier: implicit_getter
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class Foo {
-    var foo: Int {
-        get { return 3 }
-        set { _abc = newValue }
-    }
-}
-
-
class Foo {
-    var foo: Int {
-        return 20
-    }
-}
-
-
class Foo {
-    static var foo: Int {
-        return 20
-    }
-}
-
-
class Foo {
-    static var foo: Int {
-        get { return 3 }
-        set { _abc = newValue }
-    }
-}
-
-
class Foo {
-    var foo: Int
-}
-
-
class Foo {
-    var foo: Int {
-        return getValueFromDisk()
-    }
-}
-
-
class Foo {
-    var foo: String {
-        return "get"
-    }
-}
-
-
protocol Foo {
-    var foo: Int { get }
-
-
protocol Foo {
-    var foo: Int { get set }
-}
-
-
class Foo {
-    var foo: Int {
-        struct Bar {
-            var bar: Int {
-                get { return 1 }
-                set { _ = newValue }
-            }
-        }
-
-        return Bar().bar
-    }
-}
-
-
var _objCTaggedPointerBits: UInt {
-    @inline(__always) get { return 0 }
-}
-
-
var next: Int? {
-    mutating get {
-        defer { self.count += 1 }
-        return self.count
-    }
-}
-
-
extension Foo {
-    var bar: Bool {
-        get { _bar }
-        set { self._bar = newValue }
-    }
-}
-
-
extension Foo {
-    var bar: Bool {
-        get { _bar }
-        set(newValue) { self._bar = newValue }
-    }
-}
-
-
extension Float {
-    var clamped: Float {
-        set {
-            self = min(1, max(0, newValue))
-        }
-        get {
-            min(1, max(0, self))
-        }
-    }
-}
-
-
extension Reactive where Base: UITapGestureRecognizer {
-    var tapped: CocoaAction<Base>? {
-        get {
-            return associatedAction.withValue { $0.flatMap { $0.action } }
-        }
-        nonmutating set {
-            setAction(newValue)
-        }
-    }
-}
-
-
extension Test {
-    var foo: Bool {
-        get {
-            bar?.boolValue ?? true // Comment mentioning word set which triggers violation
-        }
-        set {
-            bar = NSNumber(value: newValue as Bool)
-        }
-    }
-}
-
-
class Foo {
-    subscript(i: Int) -> Int {
-        return 20
-    }
-}
-
-
class Foo {
-    subscript(i: Int) -> Int {
-        get { return 3 }
-        set { _abc = newValue }
-    }
-}
-
-
protocol Foo {
-    subscript(i: Int) -> Int { get }
-}
-
-
protocol Foo {
-    subscript(i: Int) -> Int { get set }
-}
-
-
class DatabaseEntity {
-    var isSynced: Bool {
-        get async {
-            await database.isEntitySynced(self)
-        }
-    }
-}
-
-
struct Test {
-    subscript(value: Int) -> Int {
-        get throws {
-            if value == 0 {
-                throw NSError()
-            } else {
-                return value
-            }
-        }
-    }
-}
-
-

Triggering Examples

-
class Foo {
-    var foo: Int {
-        ↓get {
-            return 20
-        }
-    }
-}
-
-
class Foo {
-    var foo: Int {
-        ↓get{ return 20 }
-    }
-}
-
-
class Foo {
-    static var foo: Int {
-        ↓get {
-            return 20
-        }
-    }
-}
-
-
var foo: Int {
-    ↓get { return 20 }
-}
-
-
class Foo {
-    @objc func bar() {}
-    var foo: Int {
-        ↓get {
-            return 20
-        }
-    }
-}
-
-
extension Foo {
-    var bar: Bool {
-        ↓get { _bar }
-    }
-}
-
-
class Foo {
-    subscript(i: Int) -> Int {
-        ↓get {
-            return 20
-        }
-    }
-}
-
- -
-
- - -
-
- - - - diff --git a/implicit_return.html b/implicit_return.html deleted file mode 100644 index f75535cee..000000000 --- a/implicit_return.html +++ /dev/null @@ -1,429 +0,0 @@ - - - - implicit_return Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Implicit Return

- -

Prefer implicit returns in closures, functions and getters.

- -
    -
  • Identifier: implicit_return
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, included: [closure, function, getter]
  • -
-

Non Triggering Examples

-
if foo {
-  return 0
-}
-
-
foo.map { $0 + 1 }
-
-
foo.map({ $0 + 1 })
-
-
foo.map { value in value + 1 }
-
-
[1, 2].first(where: {
-    true
-})
-
-
func foo() -> Int {
-    0
-}
-
-
class Foo {
-    func foo() -> Int { 0 }
-}
-
-
func fetch() -> Data? {
-    do {
-        return try loadData()
-    } catch {
-        return nil
-    }
-}
-
-
var foo: Bool { true }
-
-
class Foo {
-    var bar: Int {
-        get {
-            0
-        }
-    }
-}
-
-
class Foo {
-    static var bar: Int {
-        0
-    }
-}
-
-

Triggering Examples

-
foo.map { value in
-    return value + 1
-}
-
-
foo.map {
-    return $0 + 1
-}
-
-
foo.map({ return $0 + 1})
-
-
[1, 2].first(where: {
-    return true
-})
-
-
func foo() -> Int {
-    return 0
-}
-
-
class Foo {
-    func foo() -> Int { return 0 }
-}
-
-
var foo: Bool { return true }
-
-
class Foo {
-    var bar: Int {
-        get {
-            return 0
-        }
-    }
-}
-
-
class Foo {
-    static var bar: Int {
-        return 0
-    }
-}
-
- -
-
- - -
-
- - - - diff --git a/implicitly_unwrapped_optional.html b/implicitly_unwrapped_optional.html deleted file mode 100644 index 25f428208..000000000 --- a/implicitly_unwrapped_optional.html +++ /dev/null @@ -1,379 +0,0 @@ - - - - implicitly_unwrapped_optional Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Implicitly Unwrapped Optional

- -

Implicitly unwrapped optionals should be avoided when possible.

- -
    -
  • Identifier: implicitly_unwrapped_optional
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, mode: allExceptIBOutlets
  • -
-

Non Triggering Examples

-
@IBOutlet private var label: UILabel!
-
-
@IBOutlet var label: UILabel!
-
-
@IBOutlet var label: [UILabel!]
-
-
if !boolean {}
-
-
let int: Int? = 42
-
-
let int: Int? = nil
-
-

Triggering Examples

-
let label: UILabel!
-
-
let IBOutlet: UILabel!
-
-
let labels: [UILabel!]
-
-
var ints: [Int!] = [42, nil, 42]
-
-
let label: IBOutlet!
-
-
let int: Int! = 42
-
-
let int: Int! = nil
-
-
var int: Int! = 42
-
-
let int: ImplicitlyUnwrappedOptional<Int>
-
-
let collection: AnyCollection<Int!>
-
-
func foo(int: Int!) {}
-
- -
-
- - -
-
- - - - diff --git a/inclusive_language.html b/inclusive_language.html deleted file mode 100644 index d8e2e6168..000000000 --- a/inclusive_language.html +++ /dev/null @@ -1,379 +0,0 @@ - - - - inclusive_language Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Inclusive Language

- -

Identifiers should use inclusive language that avoids discrimination against groups of people based on race, gender, or socioeconomic status

- -
    -
  • Identifier: inclusive_language
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, additional_terms: [], override_terms: [], override_allowed_terms: []
  • -
-

Non Triggering Examples

-
let foo = "abc"
-
-
enum AllowList {
-    case foo, bar
-}
-
-
func updateAllowList(add: String) {}
-
-
enum WalletItemType {
-    case visa
-    case mastercard
-}
-
-
func chargeMasterCard(_ card: Card) {}
-
-

Triggering Examples

-
let ↓slave = "abc"
-
-
enum ↓BlackList {
-    case foo, bar
-}
-
-
func ↓updateWhiteList(add: String) {}
-
-
enum ListType {
-    case ↓whitelist
-    case ↓blacklist
-}
-
-
↓init(master: String, slave: String) {}
-
-
final class FooBar {
-    func register<↓Master, ↓Slave>(one: Master, two: Slave) {}
-}
-
- -
-
- - -
-
- - - - diff --git a/indentation_width.html b/indentation_width.html deleted file mode 100644 index f7766dc2b..000000000 --- a/indentation_width.html +++ /dev/null @@ -1,383 +0,0 @@ - - - - indentation_width Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Indentation Width

- -

Indent code using either one tab or the configured amount of spaces, unindent to match previous indentations. Don’t indent the first line.

- -
    -
  • Identifier: indentation_width
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: severity: warning, indentation_width: 4, include_comments: true
  • -
-

Non Triggering Examples

-
firstLine
-secondLine
-
-
firstLine
-    secondLine
-
-
firstLine
-    secondLine
-        thirdLine
-
-        fourthLine
-
-
firstLine
-    secondLine
-        thirdLine
-//test
-        fourthLine
-
-
firstLine
-    secondLine
-        thirdLine
-fourthLine
-
-

Triggering Examples

-
    firstLine
-
-
firstLine
-        secondLine
-
-
firstLine
-    secondLine
-
-            fourthLine
-
-
firstLine
-    secondLine
-        thirdLine
- fourthLine
-
- -
-
- - -
-
- - - - diff --git a/index.html b/index.html deleted file mode 100644 index f6e7a2054..000000000 --- a/index.html +++ /dev/null @@ -1,929 +0,0 @@ - - - - SwiftLintFramework Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

SwiftLint

- -

A tool to enforce Swift style and conventions, loosely based on the now archived GitHub Swift Style Guide. SwiftLint enforces the style guide rules that are generally accepted by the Swift community. These rules are well described in popular style guides like Ray Wenderlich’s Swift Style Guide.

- -

SwiftLint hooks into Clang and -SourceKit to use the -AST representation -of your source files for more accurate results.

- -

Build Status -codecov.io

- -

- -

This project adheres to the Contributor Covenant Code of Conduct. -By participating, you are expected to uphold this code. Please report -unacceptable behavior to info@realm.io.

- -
-

Language Switch: 中文, 한국어.

-
-

Installation

-

Using Homebrew:

-
brew install swiftlint
-
-

Using CocoaPods:

- -

Simply add the following line to your Podfile:

-
pod 'SwiftLint'
-
- -

This will download the SwiftLint binaries and dependencies in Pods/ during your next -pod install execution and will allow you to invoke it via ${PODS_ROOT}/SwiftLint/swiftlint -in your Script Build Phases.

- -

This is the recommended way to install a specific version of SwiftLint since it supports -installing a pinned version rather than simply the latest (which is the case with Homebrew).

- -

Note that this will add the SwiftLint binaries, its dependencies’ binaries and the Swift binary -library distribution to the Pods/ directory, so checking in this directory to SCM such as -git is discouraged.

-

Using Mint:

-
$ mint install realm/SwiftLint
-
-

Using a pre-built package:

- -

You can also install SwiftLint by downloading SwiftLint.pkg from the -latest GitHub release and -running it.

-

Installing from source:

- -

You can also build and install from source by cloning this project and running -make install (Xcode 13 or later).

-

Usage

-

Presentation

- -

To get a high-level overview of recommended ways to integrate SwiftLint into your project, -we encourage you to watch this presentation or read the transcript:

- -

Presentation

-

Xcode

- -

Integrate SwiftLint into your Xcode project to get warnings and errors displayed -in the issue navigator.

- -

To do this select the project in the file navigator, then select the primary app -target, and go to Build Phases. Click the + and select “New Run Script Phase”. -Insert the following as the script:

- -

- -

If you installed SwiftLint via Homebrew on Apple Silicon, you might experience this warning:

- -
-

warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint

-
- -

That is because Homebrew on Apple Silicon installs the binaries into the /opt/homebrew/bin -folder by default. To instruct Xcode where to find SwiftLint, you can either add -/opt/homebrew/bin to the PATH environment variable in your build phase

-
export PATH="$PATH:/opt/homebrew/bin"
-if which swiftlint > /dev/null; then
-  swiftlint
-else
-  echo "warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint"
-fi
-
- -

or you can create a symbolic link in /usr/local/bin pointing to the actual binary:

-
ln -s /opt/homebrew/bin/swiftlint /usr/local/bin
-
- -

You might want to move your SwiftLint phase directly before the ‘Compile Sources’ -step to detect errors quickly before compiling. However, SwiftLint is designed -to run on valid Swift code that cleanly completes the compiler’s parsing stage. -So running SwiftLint before ‘Compile Sources’ might yield some incorrect -results.

- -

If you wish to fix violations as well, your script could run -swiftlint --fix && swiftlint instead of just swiftlint. This will mean -that all correctable violations are fixed, while ensuring warnings show up in -your project for remaining violations.

- -

If you’ve installed SwiftLint via CocoaPods the script should look like this:

-
"${PODS_ROOT}/SwiftLint/swiftlint"
-
-

Format on Save Xcode Plugin

- -

To run swiftlint --fix on save in Xcode, install the -SwiftLintXcode plugin from Alcatraz.

- -

⚠️This plugin will not work with Xcode 8 or later without disabling SIP. -This is not recommended.

-

AppCode

- -

To integrate SwiftLint with AppCode, install -this plugin and configure -SwiftLint’s installed path in the plugin’s preferences. -The fix action is available via ⌥⏎.

-

Atom

- -

To integrate SwiftLint with Atom, install the -linter-swiftlint package from -APM.

-

Visual Studio Code

- -

To integrate SwiftLint with vscode, install the -vscode-swiftlint extension from the marketplace.

-

fastlane

- -

You can use the official swiftlint fastlane action to run SwiftLint as part of your fastlane process.

-
swiftlint(
-    mode: :lint,                            # SwiftLint mode: :lint (default) or :autocorrect
-    executable: "Pods/SwiftLint/swiftlint", # The SwiftLint binary path (optional). Important if you've installed it via CocoaPods
-    path: "/path/to/lint",                  # Specify path to lint (optional)
-    output_file: "swiftlint.result.json",   # The path of the output file (optional)
-    reporter: "json",                       # The custom reporter to use (optional)
-    config_file: ".swiftlint-ci.yml",       # The path of the configuration file (optional)
-    files: [                                # List of files to process (optional)
-        "AppDelegate.swift",
-        "path/to/project/Model.swift"
-    ],
-    ignore_exit_status: true,               # Allow fastlane to continue even if SwiftLint returns a non-zero exit status (Default: false)
-    quiet: true,                            # Don't print status logs like 'Linting ' & 'Done linting' (Default: false)
-    strict: true                            # Fail on warnings? (Default: false)
-)
-
-

Docker

- -

swiftlint is also available as a Docker image using Ubuntu. -So just the first time you need to pull the docker image using the next command:

-
docker pull ghcr.io/realm/swiftlint:latest
-
- -

Then following times, you just run swiftlint inside of the docker like:

-
docker run -it -v `pwd`:`pwd` -w `pwd` ghcr.io/realm/swiftlint:latest
-
- -

This will execute swiftlint in the folder where you are right now (pwd), showing an output like:

-
$ docker run -it -v `pwd`:`pwd` -w `pwd` ghcr.io/realm/swiftlint:latest
-Linting Swift files in current working directory
-Linting 'RuleDocumentation.swift' (1/490)
-...
-Linting 'YamlSwiftLintTests.swift' (490/490)
-Done linting! Found 0 violations, 0 serious in 490 files.
-
- -

Here you have more documentation about the usage of Docker Images.

-

Command Line

-
$ swiftlint help
-OVERVIEW: A tool to enforce Swift style and conventions.
-
-USAGE: swiftlint <subcommand>
-
-OPTIONS:
-  --version               Show the version.
-  -h, --help              Show help information.
-
-SUBCOMMANDS:
-  analyze                 Run analysis rules
-  docs                    Open SwiftLint documentation website in the default web browser
-  generate-docs           Generates markdown documentation for all rules
-  lint (default)          Print lint warnings and errors
-  rules                   Display the list of rules and their identifiers
-  version                 Display the current version of SwiftLint
-
-  See 'swiftlint help <subcommand>' for detailed help.
-
- -

Run swiftlint in the directory containing the Swift files to lint. Directories -will be searched recursively.

- -

To specify a list of files when using lint or analyze -(like the list of files modified by Xcode specified by the -ExtraBuildPhase Xcode -plugin, or modified files in the working tree based on git ls-files -m), you -can do so by passing the option --use-script-input-files and setting the -following instance variables: SCRIPT_INPUT_FILE_COUNT and -SCRIPT_INPUT_FILE_0, SCRIPT_INPUT_FILE_1…SCRIPT_INPUT_FILE_{SCRIPT_INPUT_FILE_COUNT - 1}.

- -

These are same environment variables set for input files to -custom Xcode script phases.

-

Working With Multiple Swift Versions

- -

SwiftLint hooks into SourceKit so it continues working even as Swift evolves!

- -

This also keeps SwiftLint lean, as it doesn’t need to ship with a full Swift -compiler, it just communicates with the official one you already have installed -on your machine.

- -

You should always run SwiftLint with the same toolchain you use to compile your -code.

- -

You may want to override SwiftLint’s default Swift toolchain if you have -multiple toolchains or Xcodes installed.

- -

Here’s the order in which SwiftLint determines which Swift toolchain to use:

- -
    -
  • $XCODE_DEFAULT_TOOLCHAIN_OVERRIDE
  • -
  • $TOOLCHAIN_DIR or $TOOLCHAINS
  • -
  • xcrun -find swift
  • -
  • /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain
  • -
  • /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain
  • -
  • ~/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain
  • -
  • ~/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain
  • -
- -

sourcekitd.framework is expected to be found in the usr/lib/ subdirectory of -the value passed in the paths above.

- -

You may also set the TOOLCHAINS environment variable to the reverse-DNS -notation that identifies a Swift toolchain version:

-
$ TOOLCHAINS=com.apple.dt.toolchain.Swift_2_3 swiftlint --fix
-
- -

On Linux, SourceKit is expected to be located in -/usr/lib/libsourcekitdInProc.so or specified by the LINUX_SOURCEKIT_LIB_PATH -environment variable.

-

pre-commit

- -

SwiftLint can be run as a pre-commit hook. -Once installed, add this to the -.pre-commit-config.yaml in the root of your repository:

-
repos:
-  - repo: https://github.com/realm/SwiftLint
-    rev: 0.44.0
-    hooks:
-      - id: swiftlint
-
- -

Adjust rev to the SwiftLint version of your choice.

-

Rules

- -

Over 200 rules are included in SwiftLint and the Swift community (that’s you!) -continues to contribute more over time. -Pull requests are encouraged.

- -

You can find an updated list of rules and more information about them -here.

- -

You can also check Source/SwiftLintFramework/Rules -directory to see their implementation.

-

Opt-In Rules

- -

opt_in_rules are disabled by default (i.e., you have to explicitly enable them -in your configuration file).

- -

Guidelines on when to mark a rule as opt-in:

- -
    -
  • A rule that can have many false positives (e.g. empty_count)
  • -
  • A rule that is too slow
  • -
  • A rule that is not general consensus or is only useful in some cases -(e.g. force_unwrapping)
  • -
-

Disable rules in code

- -

Rules can be disabled with a comment inside a source file with the following -format:

- -

// swiftlint:disable <rule1> [<rule2> <rule3>...]

- -

The rules will be disabled until the end of the file or until the linter sees a -matching enable comment:

- -

// swiftlint:enable <rule1> [<rule2> <rule3>...]

- -

For example:

-
// swiftlint:disable colon
-let noWarning :String = "" // No warning about colons immediately after variable names!
-// swiftlint:enable colon
-let hasWarning :String = "" // Warning generated about colons immediately after variable names
-
- -

Including the all keyword will disable all rules until the linter sees a matching enable comment:

- -

// swiftlint:disable all -// swiftlint:enable all

- -

For example:

-
// swiftlint:disable all
-let noWarning :String = "" // No warning about colons immediately after variable names!
-let i = "" // Also no warning about short identifier names
-// swiftlint:enable all
-let hasWarning :String = "" // Warning generated about colons immediately after variable names
-let y = "" // Warning generated about short identifier names
-
- -

It’s also possible to modify a disable or enable command by appending -:previous, :this or :next for only applying the command to the previous, -this (current) or next line respectively.

- -

For example:

-
// swiftlint:disable:next force_cast
-let noWarning = NSNumber() as! Int
-let hasWarning = NSNumber() as! Int
-let noWarning2 = NSNumber() as! Int // swiftlint:disable:this force_cast
-let noWarning3 = NSNumber() as! Int
-// swiftlint:disable:previous force_cast
-
- -

Run swiftlint rules to print a list of all available rules and their -identifiers.

-

Configuration

- -

Configure SwiftLint by adding a .swiftlint.yml file from the directory you’ll -run SwiftLint from. The following parameters can be configured:

- -

Rule inclusion:

- -
    -
  • disabled_rules: Disable rules from the default enabled set.
  • -
  • opt_in_rules: Enable rules not from the default set.
  • -
  • only_rules: Only the rules specified in this list will be enabled. -Cannot be specified alongside disabled_rules or opt_in_rules.
  • -
  • analyzer_rules: This is an entirely separate list of rules that are only -run by the analyze command. All analyzer rules are opt-in, so this is the -only configurable rule list, there are no equivalents for disabled_rules -only_rules.
  • -
-
# By default, SwiftLint uses a set of sensible default rules you can adjust:
-disabled_rules: # rule identifiers turned on by default to exclude from running
-  - colon
-  - comma
-  - control_statement
-opt_in_rules: # some rules are turned off by default, so you need to opt-in
-  - empty_count # Find all the available rules by running: `swiftlint rules`
-
-# Alternatively, specify all rules explicitly by uncommenting this option:
-# only_rules: # delete `disabled_rules` & `opt_in_rules` if using this
-#   - empty_parameters
-#   - vertical_whitespace
-
-included: # paths to include during linting. `--path` is ignored if present.
-  - Source
-excluded: # paths to ignore during linting. Takes precedence over `included`.
-  - Carthage
-  - Pods
-  - Source/ExcludedFolder
-  - Source/ExcludedFile.swift
-  - Source/*/ExcludedFile.swift # Exclude files with a wildcard
-analyzer_rules: # Rules run by `swiftlint analyze`
-  - explicit_self
-
-# configurable rules can be customized from this configuration file
-# binary rules can set their severity level
-force_cast: warning # implicitly
-force_try:
-  severity: warning # explicitly
-# rules that have both warning and error levels, can set just the warning level
-# implicitly
-line_length: 110
-# they can set both implicitly with an array
-type_body_length:
-  - 300 # warning
-  - 400 # error
-# or they can set both explicitly
-file_length:
-  warning: 500
-  error: 1200
-# naming rules can set warnings/errors for min_length and max_length
-# additionally they can set excluded names
-type_name:
-  min_length: 4 # only warning
-  max_length: # warning and error
-    warning: 40
-    error: 50
-  excluded: iPhone # excluded via string
-  allowed_symbols: ["_"] # these are allowed in type names
-identifier_name:
-  min_length: # only min_length
-    error: 4 # only error
-  excluded: # excluded via string array
-    - id
-    - URL
-    - GlobalAPIKey
-reporter: "xcode" # reporter type (xcode, json, csv, checkstyle, codeclimate, junit, html, emoji, sonarqube, markdown, github-actions-logging)
-
- -

You can also use environment variables in your configuration file, -by using ${SOME_VARIABLE} in a string.

-

Defining Custom Rules

- -

You can define custom regex-based rules in your configuration file using the -following syntax:

-
custom_rules:
-  pirates_beat_ninjas: # rule identifier
-    included: ".*\\.swift" # regex that defines paths to include during linting. optional.
-    excluded: ".*Test\\.swift" # regex that defines paths to exclude during linting. optional
-    name: "Pirates Beat Ninjas" # rule name. optional.
-    regex: "([nN]inja)" # matching pattern
-    capture_group: 0 # number of regex capture group to highlight the rule violation at. optional.
-    match_kinds: # SyntaxKinds to match. optional.
-      - comment
-      - identifier
-    message: "Pirates are better than ninjas." # violation message. optional.
-    severity: error # violation severity. optional.
-  no_hiding_in_strings:
-    regex: "([nN]inja)"
-    match_kinds: string
-
- -

This is what the output would look like:

- -

- -

You can filter the matches by providing one or more match_kinds, which will -reject matches that include syntax kinds that are not present in this list. Here -are all the possible syntax kinds:

- -
    -
  • argument
  • -
  • attribute.builtin
  • -
  • attribute.id
  • -
  • buildconfig.id
  • -
  • buildconfig.keyword
  • -
  • comment
  • -
  • comment.mark
  • -
  • comment.url
  • -
  • doccomment
  • -
  • doccomment.field
  • -
  • identifier
  • -
-

Keyword

- keyword - -
    -
  • number
  • -
  • objectliteral
  • -
  • placeholder
  • -
  • string
  • -
  • string_interpolation_anchor
  • -
  • typeidentifier
  • -
- -

If using custom rules in combination with only_rules, make sure to add -custom_rules as an item under only_rules.

-

Auto-correct

- -

SwiftLint can automatically correct certain violations. Files on disk are -overwritten with a corrected version.

- -

Please make sure to have backups of these files before running -swiftlint --fix, otherwise important data may be lost.

- -

Standard linting is disabled while correcting because of the high likelihood of -violations (or their offsets) being incorrect after modifying a file while -applying corrections.

-

Analyze

- -

The swiftlint analyze command can lint Swift files using the -full type-checked AST. The compiler log path containing the clean swiftc build -command invocation (incremental builds will fail) must be passed to analyze -via the --compiler-log-path flag. -e.g. --compiler-log-path /path/to/xcodebuild.log

- -

This can be obtained by

- -
    -
  1. Cleaning DerivedData (incremental builds won’t work with analyze)
  2. -
  3. Running xcodebuild -workspace {WORKSPACE}.xcworkspace -scheme {SCHEME} > xcodebuild.log
  4. -
  5. Running swiftlint analyze --compiler-log-path xcodebuild.log
  6. -
- -

Analyzer rules tend to be considerably slower than lint rules.

-

Using Multiple Configuration Files

- -

SwiftLint offers a variety of ways to include multiple configuration files. -Multiple configuration files get merged into one single configuration that is then applied -just as a single configuration file would get applied.

- -

There are quite a lot of use cases where using multiple configuration files could be helpful:

- -

For instance, one could use a team-wide shared SwiftLint configuration while allowing overrrides -in each project via a child configuration file.

- -

Team-Wide Configuration:

-
disabled_rules:
-- force_cast
-
- -

Project-Specific Configuration:

-
opt_in_rules:
-- force_cast
-
-

Child / Parent Configs (Locally)

- -

You can specify a child_config and / or a parent_config reference within a configuration file. -These references should be local paths relative to the folder of the configuration file they are specified in. -This even works recursively, as long as there are no cycles and no ambiguities.

- -

A child config is treated as a refinement and therefore has a higher priority, -while a parent config is considered a base with lower priority in case of conflicts.

- -

Here’s an example, assuming you have the following file structure:

-
ProjectRoot
-    |_ .swiftlint.yml
-    |_ .swiftlint_refinement.yml
-    |_ Base
-        |_ .swiftlint_base.yml
-
- -

To include both the refinement and the base file, your .swiftlint.yml should look like this:

-
child_config: .swiftlint_refinement.yml
-parent_config: Base/.swiftlint_base.yml
-
- -

When merging parent and child configs, included and excluded configurations -are processed carefully to account for differences in the directory location -of the containing configuration files.

-

Child / Parent Configs (Remote)

- -

Just as you can provide local child_config / parent_config references, instead of -referencing local paths, you can just put urls that lead to configuration files. -In order for SwiftLint to detect these remote references, they must start with http:// or https://.

- -

The referenced remote configuration files may even recursively reference other -remote configuration files, but aren’t allowed to include local references.

- -

Using a remote reference, your .swiftlint.yml could look like this:

-
parent_config: https://myteamserver.com/our-base-swiftlint-config.yml
-
- -

Every time you run SwiftLint and have an Internet connection, SwiftLint tries to get a new version of -every remote configuration that is referenced. If this request times out, a cached version is -used if available. If there is no cached version available, SwiftLint fails – but no worries, a cached version -should be there once SwiftLint has run successfully at least once.

- -

If needed, the timeouts for the remote configuration fetching can be specified manually via the -configuration file(s) using the remote_timeout / remote_timeout_if_cached specifiers. -These values default to 2 / 1 second(s).

-

Command Line

- -

Instead of just providing one configuration file when running SwiftLint via the command line, -you can also pass a hierarchy, where the first configuration is treated as a parent, -while the last one is treated as the highest-priority child.

- -

A simple example including just two configuration files looks like this:

- -

swiftlint --config .swiftlint.yml --config .swiftlint_child.yml

-

Nested Configurations

- -

In addition to a main configuration (the .swiftlint.yml file in the root folder), -you can put other configuration files named .swiftlint.yml into the directory structure -that then get merged as a child config, but only with an effect for those files -that are within the same directory as the config or in a deeper directory where -there isn’t another configuration file. In other words: Nested configurations don’t work -recursively – there’s a maximum number of one nested configuration per file -that may be applied in addition to the main configuration.

- -

.swiftlint.yml files are only considered as a nested configuration if they have not been -used to build the main configuration already (e. g. by having been referenced via something -like child_config: Folder/.swiftlint.yml). Also, parent_config / child_config -specifications of nested configurations are getting ignored because there’s no sense to that.

- -

If one (or more) SwiftLint file(s) are explicitly specified via the --config parameter, -that configuration will be treated as an override, no matter whether there exist -other .swiftlint.yml files somewhere within the directory. So if you want to use -use nested configurations, you can’t use the -- config parameter.

-

License

- -

MIT licensed.

-

About

- -

- -

SwiftLint is maintained and funded by Realm Inc. The names and logos for -Realm are trademarks of Realm Inc.

- -

We :heart: open source software! -See our other open source projects, -read our blog, or say hi on twitter -(@realm).

- -

- -

Our thanks to MacStadium for providing a Mac Mini to run our performance -tests.

- -
-
- - -
-
- - - - diff --git a/inert_defer.html b/inert_defer.html deleted file mode 100644 index 80c993306..000000000 --- a/inert_defer.html +++ /dev/null @@ -1,374 +0,0 @@ - - - - inert_defer Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Inert Defer

- -

If defer is at the end of its parent scope, it will be executed right where it is anyway.

- -
    -
  • Identifier: inert_defer
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
func example3() {
-    defer { /* deferred code */ }
-
-    print("other code")
-}
-
-
func example4() {
-    if condition {
-        defer { /* deferred code */ }
-        print("other code")
-    }
-}
-
-

Triggering Examples

-
func example0() {
-    ↓defer { /* deferred code */ }
-}
-
-
func example1() {
-    ↓defer { /* deferred code */ }
-    // comment
-}
-
-
func example2() {
-    if condition {
-        ↓defer { /* deferred code */ }
-        // comment
-    }
-}
-
- -
-
- - -
-
- - - - diff --git a/is_disjoint.html b/is_disjoint.html deleted file mode 100644 index 4e4a7530a..000000000 --- a/is_disjoint.html +++ /dev/null @@ -1,357 +0,0 @@ - - - - is_disjoint Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Is Disjoint

- -

Prefer using Set.isDisjoint(with:) over Set.intersection(_:).isEmpty.

- -
    -
  • Identifier: is_disjoint
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
_ = Set(syntaxKinds).isDisjoint(with: commentAndStringKindsSet)
-
-
let isObjc = !objcAttributes.isDisjoint(with: dictionary.enclosedSwiftAttributes)
-
-
_ = Set(syntaxKinds).intersection(commentAndStringKindsSet)
-
-
_ = !objcAttributes.intersection(dictionary.enclosedSwiftAttributes)
-
-

Triggering Examples

-
_ = Set(syntaxKinds).↓intersection(commentAndStringKindsSet).isEmpty
-
-
let isObjc = !objcAttributes.↓intersection(dictionary.enclosedSwiftAttributes).isEmpty
-
- -
-
- - -
-
- - - - diff --git a/joined_default_parameter.html b/joined_default_parameter.html deleted file mode 100644 index 4b3a2ee9e..000000000 --- a/joined_default_parameter.html +++ /dev/null @@ -1,360 +0,0 @@ - - - - joined_default_parameter Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Joined Default Parameter

- -

Discouraged explicit usage of the default separator.

- -
    -
  • Identifier: joined_default_parameter
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let foo = bar.joined()
-
-
let foo = bar.joined(separator: ",")
-
-
let foo = bar.joined(separator: toto)
-
-

Triggering Examples

-
let foo = bar.joined(↓separator: "")
-
-
let foo = bar.filter(toto)
-             .joined(↓separator: ""),
-
-
func foo() -> String {
-  return ["1", "2"].joined(↓separator: "")
-}
-
- -
-
- - -
-
- - - - diff --git a/js/jazzy.js b/js/jazzy.js deleted file mode 100755 index 1e55d6ef0..000000000 --- a/js/jazzy.js +++ /dev/null @@ -1,70 +0,0 @@ -window.jazzy = {'docset': false} -if (typeof window.dash != 'undefined') { - document.documentElement.className += ' dash' - window.jazzy.docset = true -} -if (navigator.userAgent.match(/xcode/i)) { - document.documentElement.className += ' xcode' - window.jazzy.docset = true -} - -function toggleItem($link, $content) { - var animationDuration = 300; - $link.toggleClass('token-open'); - $content.slideToggle(animationDuration); -} - -function itemLinkToContent($link) { - return $link.parent().parent().next(); -} - -// On doc load + hash-change, open any targetted item -function openCurrentItemIfClosed() { - if (window.jazzy.docset) { - return; - } - var $link = $(`a[name="${location.hash.substring(1)}"]`).nextAll('.token'); - $content = itemLinkToContent($link); - if ($content.is(':hidden')) { - toggleItem($link, $content); - } -} - -$(openCurrentItemIfClosed); -$(window).on('hashchange', openCurrentItemIfClosed); - -// On item link ('token') click, toggle its discussion -$('.token').on('click', function(event) { - if (window.jazzy.docset) { - return; - } - var $link = $(this); - toggleItem($link, itemLinkToContent($link)); - - // Keeps the document from jumping to the hash. - var href = $link.attr('href'); - if (history.pushState) { - history.pushState({}, '', href); - } else { - location.hash = href; - } - event.preventDefault(); -}); - -// Clicks on links to the current, closed, item need to open the item -$("a:not('.token')").on('click', function() { - if (location == this.href) { - openCurrentItemIfClosed(); - } -}); - -// KaTeX rendering -if ("katex" in window) { - $($('.math').each( (_, element) => { - katex.render(element.textContent, element, { - displayMode: $(element).hasClass('m-block'), - throwOnError: false, - trust: true - }); - })) -} diff --git a/js/jazzy.search.js b/js/jazzy.search.js deleted file mode 100644 index e3d1ab905..000000000 --- a/js/jazzy.search.js +++ /dev/null @@ -1,70 +0,0 @@ -$(function(){ - var $typeahead = $('[data-typeahead]'); - var $form = $typeahead.parents('form'); - var searchURL = $form.attr('action'); - - function displayTemplate(result) { - return result.name; - } - - function suggestionTemplate(result) { - var t = '
'; - t += '' + result.name + ''; - if (result.parent_name) { - t += '' + result.parent_name + ''; - } - t += '
'; - return t; - } - - $typeahead.one('focus', function() { - $form.addClass('loading'); - - $.getJSON(searchURL).then(function(searchData) { - const searchIndex = lunr(function() { - this.ref('url'); - this.field('name'); - this.field('abstract'); - for (const [url, doc] of Object.entries(searchData)) { - this.add({url: url, name: doc.name, abstract: doc.abstract}); - } - }); - - $typeahead.typeahead( - { - highlight: true, - minLength: 3, - autoselect: true - }, - { - limit: 10, - display: displayTemplate, - templates: { suggestion: suggestionTemplate }, - source: function(query, sync) { - const lcSearch = query.toLowerCase(); - const results = searchIndex.query(function(q) { - q.term(lcSearch, { boost: 100 }); - q.term(lcSearch, { - boost: 10, - wildcard: lunr.Query.wildcard.TRAILING - }); - }).map(function(result) { - var doc = searchData[result.ref]; - doc.url = result.ref; - return doc; - }); - sync(results); - } - } - ); - $form.removeClass('loading'); - $typeahead.trigger('focus'); - }); - }); - - var baseURL = searchURL.slice(0, -"search.json".length); - - $typeahead.on('typeahead:select', function(e, result) { - window.location = baseURL + result.url; - }); -}); diff --git a/js/jquery.min.js b/js/jquery.min.js deleted file mode 100644 index b0614034a..000000000 --- a/js/jquery.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 00){var c=e.utils.clone(r)||{};c.position=[a,l],c.index=s.length,s.push(new e.Token(i.slice(a,o),c))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);t!=-1&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:sa?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length&&(o["final"]=!0),n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(0!=s.editsRemaining){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(0==s.str.length&&(u["final"]=!0),n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&n.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),1==s.str.length&&(s.node["final"]=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length&&(l["final"]=!0),n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c,h=s.str.charAt(0),d=s.str.charAt(1);d in s.node.edges?c=s.node.edges[d]:(c=new e.TokenSet,s.node.edges[d]=c),1==s.str.length&&(c["final"]=!0),n.push({node:c,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=0,s=t.length;n=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){for(var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t,r){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&r<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}(); diff --git a/js/typeahead.jquery.js b/js/typeahead.jquery.js deleted file mode 100644 index 3a2d2ab03..000000000 --- a/js/typeahead.jquery.js +++ /dev/null @@ -1,1694 +0,0 @@ -/*! - * typeahead.js 1.3.1 - * https://github.com/corejavascript/typeahead.js - * Copyright 2013-2020 Twitter, Inc. and other contributors; Licensed MIT - */ - - -(function(root, factory) { - if (typeof define === "function" && define.amd) { - define([ "jquery" ], function(a0) { - return factory(a0); - }); - } else if (typeof module === "object" && module.exports) { - module.exports = factory(require("jquery")); - } else { - factory(root["jQuery"]); - } -})(this, function($) { - var _ = function() { - "use strict"; - return { - isMsie: function() { - return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2] : false; - }, - isBlankString: function(str) { - return !str || /^\s*$/.test(str); - }, - escapeRegExChars: function(str) { - return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); - }, - isString: function(obj) { - return typeof obj === "string"; - }, - isNumber: function(obj) { - return typeof obj === "number"; - }, - isArray: $.isArray, - isFunction: $.isFunction, - isObject: $.isPlainObject, - isUndefined: function(obj) { - return typeof obj === "undefined"; - }, - isElement: function(obj) { - return !!(obj && obj.nodeType === 1); - }, - isJQuery: function(obj) { - return obj instanceof $; - }, - toStr: function toStr(s) { - return _.isUndefined(s) || s === null ? "" : s + ""; - }, - bind: $.proxy, - each: function(collection, cb) { - $.each(collection, reverseArgs); - function reverseArgs(index, value) { - return cb(value, index); - } - }, - map: $.map, - filter: $.grep, - every: function(obj, test) { - var result = true; - if (!obj) { - return result; - } - $.each(obj, function(key, val) { - if (!(result = test.call(null, val, key, obj))) { - return false; - } - }); - return !!result; - }, - some: function(obj, test) { - var result = false; - if (!obj) { - return result; - } - $.each(obj, function(key, val) { - if (result = test.call(null, val, key, obj)) { - return false; - } - }); - return !!result; - }, - mixin: $.extend, - identity: function(x) { - return x; - }, - clone: function(obj) { - return $.extend(true, {}, obj); - }, - getIdGenerator: function() { - var counter = 0; - return function() { - return counter++; - }; - }, - templatify: function templatify(obj) { - return $.isFunction(obj) ? obj : template; - function template() { - return String(obj); - } - }, - defer: function(fn) { - setTimeout(fn, 0); - }, - debounce: function(func, wait, immediate) { - var timeout, result; - return function() { - var context = this, args = arguments, later, callNow; - later = function() { - timeout = null; - if (!immediate) { - result = func.apply(context, args); - } - }; - callNow = immediate && !timeout; - clearTimeout(timeout); - timeout = setTimeout(later, wait); - if (callNow) { - result = func.apply(context, args); - } - return result; - }; - }, - throttle: function(func, wait) { - var context, args, timeout, result, previous, later; - previous = 0; - later = function() { - previous = new Date(); - timeout = null; - result = func.apply(context, args); - }; - return function() { - var now = new Date(), remaining = wait - (now - previous); - context = this; - args = arguments; - if (remaining <= 0) { - clearTimeout(timeout); - timeout = null; - previous = now; - result = func.apply(context, args); - } else if (!timeout) { - timeout = setTimeout(later, remaining); - } - return result; - }; - }, - stringify: function(val) { - return _.isString(val) ? val : JSON.stringify(val); - }, - guid: function() { - function _p8(s) { - var p = (Math.random().toString(16) + "000000000").substr(2, 8); - return s ? "-" + p.substr(0, 4) + "-" + p.substr(4, 4) : p; - } - return "tt-" + _p8() + _p8(true) + _p8(true) + _p8(); - }, - noop: function() {} - }; - }(); - var WWW = function() { - "use strict"; - var defaultClassNames = { - wrapper: "twitter-typeahead", - input: "tt-input", - hint: "tt-hint", - menu: "tt-menu", - dataset: "tt-dataset", - suggestion: "tt-suggestion", - selectable: "tt-selectable", - empty: "tt-empty", - open: "tt-open", - cursor: "tt-cursor", - highlight: "tt-highlight" - }; - return build; - function build(o) { - var www, classes; - classes = _.mixin({}, defaultClassNames, o); - www = { - css: buildCss(), - classes: classes, - html: buildHtml(classes), - selectors: buildSelectors(classes) - }; - return { - css: www.css, - html: www.html, - classes: www.classes, - selectors: www.selectors, - mixin: function(o) { - _.mixin(o, www); - } - }; - } - function buildHtml(c) { - return { - wrapper: '', - menu: '
' - }; - } - function buildSelectors(classes) { - var selectors = {}; - _.each(classes, function(v, k) { - selectors[k] = "." + v; - }); - return selectors; - } - function buildCss() { - var css = { - wrapper: { - position: "relative", - display: "inline-block" - }, - hint: { - position: "absolute", - top: "0", - left: "0", - borderColor: "transparent", - boxShadow: "none", - opacity: "1" - }, - input: { - position: "relative", - verticalAlign: "top", - backgroundColor: "transparent" - }, - inputWithNoHint: { - position: "relative", - verticalAlign: "top" - }, - menu: { - position: "absolute", - top: "100%", - left: "0", - zIndex: "100", - display: "none" - }, - ltr: { - left: "0", - right: "auto" - }, - rtl: { - left: "auto", - right: " 0" - } - }; - if (_.isMsie()) { - _.mixin(css.input, { - backgroundImage: "url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)" - }); - } - return css; - } - }(); - var EventBus = function() { - "use strict"; - var namespace, deprecationMap; - namespace = "typeahead:"; - deprecationMap = { - render: "rendered", - cursorchange: "cursorchanged", - select: "selected", - autocomplete: "autocompleted" - }; - function EventBus(o) { - if (!o || !o.el) { - $.error("EventBus initialized without el"); - } - this.$el = $(o.el); - } - _.mixin(EventBus.prototype, { - _trigger: function(type, args) { - var $e = $.Event(namespace + type); - this.$el.trigger.call(this.$el, $e, args || []); - return $e; - }, - before: function(type) { - var args, $e; - args = [].slice.call(arguments, 1); - $e = this._trigger("before" + type, args); - return $e.isDefaultPrevented(); - }, - trigger: function(type) { - var deprecatedType; - this._trigger(type, [].slice.call(arguments, 1)); - if (deprecatedType = deprecationMap[type]) { - this._trigger(deprecatedType, [].slice.call(arguments, 1)); - } - } - }); - return EventBus; - }(); - var EventEmitter = function() { - "use strict"; - var splitter = /\s+/, nextTick = getNextTick(); - return { - onSync: onSync, - onAsync: onAsync, - off: off, - trigger: trigger - }; - function on(method, types, cb, context) { - var type; - if (!cb) { - return this; - } - types = types.split(splitter); - cb = context ? bindContext(cb, context) : cb; - this._callbacks = this._callbacks || {}; - while (type = types.shift()) { - this._callbacks[type] = this._callbacks[type] || { - sync: [], - async: [] - }; - this._callbacks[type][method].push(cb); - } - return this; - } - function onAsync(types, cb, context) { - return on.call(this, "async", types, cb, context); - } - function onSync(types, cb, context) { - return on.call(this, "sync", types, cb, context); - } - function off(types) { - var type; - if (!this._callbacks) { - return this; - } - types = types.split(splitter); - while (type = types.shift()) { - delete this._callbacks[type]; - } - return this; - } - function trigger(types) { - var type, callbacks, args, syncFlush, asyncFlush; - if (!this._callbacks) { - return this; - } - types = types.split(splitter); - args = [].slice.call(arguments, 1); - while ((type = types.shift()) && (callbacks = this._callbacks[type])) { - syncFlush = getFlush(callbacks.sync, this, [ type ].concat(args)); - asyncFlush = getFlush(callbacks.async, this, [ type ].concat(args)); - syncFlush() && nextTick(asyncFlush); - } - return this; - } - function getFlush(callbacks, context, args) { - return flush; - function flush() { - var cancelled; - for (var i = 0, len = callbacks.length; !cancelled && i < len; i += 1) { - cancelled = callbacks[i].apply(context, args) === false; - } - return !cancelled; - } - } - function getNextTick() { - var nextTickFn; - if (window.setImmediate) { - nextTickFn = function nextTickSetImmediate(fn) { - setImmediate(function() { - fn(); - }); - }; - } else { - nextTickFn = function nextTickSetTimeout(fn) { - setTimeout(function() { - fn(); - }, 0); - }; - } - return nextTickFn; - } - function bindContext(fn, context) { - return fn.bind ? fn.bind(context) : function() { - fn.apply(context, [].slice.call(arguments, 0)); - }; - } - }(); - var highlight = function(doc) { - "use strict"; - var defaults = { - node: null, - pattern: null, - tagName: "strong", - className: null, - wordsOnly: false, - caseSensitive: false, - diacriticInsensitive: false - }; - var accented = { - A: "[AaªÀ-Åà-åĀ-ąǍǎȀ-ȃȦȧᴬᵃḀḁẚẠ-ảₐ℀℁℻⒜Ⓐⓐ㍱-㍴㎀-㎄㎈㎉㎩-㎯㏂㏊㏟㏿Aa]", - B: "[BbᴮᵇḂ-ḇℬ⒝Ⓑⓑ㍴㎅-㎇㏃㏈㏔㏝Bb]", - C: "[CcÇçĆ-čᶜ℀ℂ℃℅℆ℭⅭⅽ⒞Ⓒⓒ㍶㎈㎉㎝㎠㎤㏄-㏇Cc]", - D: "[DdĎďDŽ-džDZ-dzᴰᵈḊ-ḓⅅⅆⅮⅾ⒟Ⓓⓓ㋏㍲㍷-㍹㎗㎭-㎯㏅㏈Dd]", - E: "[EeÈ-Ëè-ëĒ-ěȄ-ȇȨȩᴱᵉḘ-ḛẸ-ẽₑ℡ℯℰⅇ⒠Ⓔⓔ㉐㋍㋎Ee]", - F: "[FfᶠḞḟ℉ℱ℻⒡Ⓕⓕ㎊-㎌㎙ff-fflFf]", - G: "[GgĜ-ģǦǧǴǵᴳᵍḠḡℊ⒢Ⓖⓖ㋌㋍㎇㎍-㎏㎓㎬㏆㏉㏒㏿Gg]", - H: "[HhĤĥȞȟʰᴴḢ-ḫẖℋ-ℎ⒣Ⓗⓗ㋌㍱㎐-㎔㏊㏋㏗Hh]", - I: "[IiÌ-Ïì-ïĨ-İIJijǏǐȈ-ȋᴵᵢḬḭỈ-ịⁱℐℑℹⅈⅠ-ⅣⅥ-ⅨⅪⅫⅰ-ⅳⅵ-ⅸⅺⅻ⒤Ⓘⓘ㍺㏌㏕fiffiIi]", - J: "[JjIJ-ĵLJ-njǰʲᴶⅉ⒥ⒿⓙⱼJj]", - K: "[KkĶķǨǩᴷᵏḰ-ḵK⒦Ⓚⓚ㎄㎅㎉㎏㎑㎘㎞㎢㎦㎪㎸㎾㏀㏆㏍-㏏Kk]", - L: "[LlĹ-ŀLJ-ljˡᴸḶḷḺ-ḽℒℓ℡Ⅼⅼ⒧Ⓛⓛ㋏㎈㎉㏐-㏓㏕㏖㏿flfflLl]", - M: "[MmᴹᵐḾ-ṃ℠™ℳⅯⅿ⒨Ⓜⓜ㍷-㍹㎃㎆㎎㎒㎖㎙-㎨㎫㎳㎷㎹㎽㎿㏁㏂㏎㏐㏔-㏖㏘㏙㏞㏟Mm]", - N: "[NnÑñŃ-ʼnNJ-njǸǹᴺṄ-ṋⁿℕ№⒩Ⓝⓝ㎁㎋㎚㎱㎵㎻㏌㏑Nn]", - O: "[OoºÒ-Öò-öŌ-őƠơǑǒǪǫȌ-ȏȮȯᴼᵒỌ-ỏₒ℅№ℴ⒪Ⓞⓞ㍵㏇㏒㏖Oo]", - P: "[PpᴾᵖṔ-ṗℙ⒫Ⓟⓟ㉐㍱㍶㎀㎊㎩-㎬㎰㎴㎺㏋㏗-㏚Pp]", - Q: "[Qqℚ⒬Ⓠⓠ㏃Qq]", - R: "[RrŔ-řȐ-ȓʳᴿᵣṘ-ṛṞṟ₨ℛ-ℝ⒭Ⓡⓡ㋍㍴㎭-㎯㏚㏛Rr]", - S: "[SsŚ-šſȘșˢṠ-ṣ₨℁℠⒮Ⓢⓢ㎧㎨㎮-㎳㏛㏜stSs]", - T: "[TtŢ-ťȚțᵀᵗṪ-ṱẗ℡™⒯Ⓣⓣ㉐㋏㎔㏏ſtstTt]", - U: "[UuÙ-Üù-üŨ-ųƯưǓǔȔ-ȗᵁᵘᵤṲ-ṷỤ-ủ℆⒰Ⓤⓤ㍳㍺Uu]", - V: "[VvᵛᵥṼ-ṿⅣ-Ⅷⅳ-ⅷ⒱Ⓥⓥⱽ㋎㍵㎴-㎹㏜㏞Vv]", - W: "[WwŴŵʷᵂẀ-ẉẘ⒲Ⓦⓦ㎺-㎿㏝Ww]", - X: "[XxˣẊ-ẍₓ℻Ⅸ-Ⅻⅸ-ⅻ⒳Ⓧⓧ㏓Xx]", - Y: "[YyÝýÿŶ-ŸȲȳʸẎẏẙỲ-ỹ⒴Ⓨⓨ㏉Yy]", - Z: "[ZzŹ-žDZ-dzᶻẐ-ẕℤℨ⒵Ⓩⓩ㎐-㎔Zz]" - }; - return function hightlight(o) { - var regex; - o = _.mixin({}, defaults, o); - if (!o.node || !o.pattern) { - return; - } - o.pattern = _.isArray(o.pattern) ? o.pattern : [ o.pattern ]; - regex = getRegex(o.pattern, o.caseSensitive, o.wordsOnly, o.diacriticInsensitive); - traverse(o.node, hightlightTextNode); - function hightlightTextNode(textNode) { - var match, patternNode, wrapperNode; - if (match = regex.exec(textNode.data)) { - wrapperNode = doc.createElement(o.tagName); - o.className && (wrapperNode.className = o.className); - patternNode = textNode.splitText(match.index); - patternNode.splitText(match[0].length); - wrapperNode.appendChild(patternNode.cloneNode(true)); - textNode.parentNode.replaceChild(wrapperNode, patternNode); - } - return !!match; - } - function traverse(el, hightlightTextNode) { - var childNode, TEXT_NODE_TYPE = 3; - for (var i = 0; i < el.childNodes.length; i++) { - childNode = el.childNodes[i]; - if (childNode.nodeType === TEXT_NODE_TYPE) { - i += hightlightTextNode(childNode) ? 1 : 0; - } else { - traverse(childNode, hightlightTextNode); - } - } - } - }; - function accent_replacer(chr) { - return accented[chr.toUpperCase()] || chr; - } - function getRegex(patterns, caseSensitive, wordsOnly, diacriticInsensitive) { - var escapedPatterns = [], regexStr; - for (var i = 0, len = patterns.length; i < len; i++) { - var escapedWord = _.escapeRegExChars(patterns[i]); - if (diacriticInsensitive) { - escapedWord = escapedWord.replace(/\S/g, accent_replacer); - } - escapedPatterns.push(escapedWord); - } - regexStr = wordsOnly ? "\\b(" + escapedPatterns.join("|") + ")\\b" : "(" + escapedPatterns.join("|") + ")"; - return caseSensitive ? new RegExp(regexStr) : new RegExp(regexStr, "i"); - } - }(window.document); - var Input = function() { - "use strict"; - var specialKeyCodeMap; - specialKeyCodeMap = { - 9: "tab", - 27: "esc", - 37: "left", - 39: "right", - 13: "enter", - 38: "up", - 40: "down" - }; - function Input(o, www) { - var id; - o = o || {}; - if (!o.input) { - $.error("input is missing"); - } - www.mixin(this); - this.$hint = $(o.hint); - this.$input = $(o.input); - this.$menu = $(o.menu); - id = this.$input.attr("id") || _.guid(); - this.$menu.attr("id", id + "_listbox"); - this.$hint.attr({ - "aria-hidden": true - }); - this.$input.attr({ - "aria-owns": id + "_listbox", - role: "combobox", - "aria-autocomplete": "list", - "aria-expanded": false - }); - this.query = this.$input.val(); - this.queryWhenFocused = this.hasFocus() ? this.query : null; - this.$overflowHelper = buildOverflowHelper(this.$input); - this._checkLanguageDirection(); - if (this.$hint.length === 0) { - this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = _.noop; - } - this.onSync("cursorchange", this._updateDescendent); - } - Input.normalizeQuery = function(str) { - return _.toStr(str).replace(/^\s*/g, "").replace(/\s{2,}/g, " "); - }; - _.mixin(Input.prototype, EventEmitter, { - _onBlur: function onBlur() { - this.resetInputValue(); - this.trigger("blurred"); - }, - _onFocus: function onFocus() { - this.queryWhenFocused = this.query; - this.trigger("focused"); - }, - _onKeydown: function onKeydown($e) { - var keyName = specialKeyCodeMap[$e.which || $e.keyCode]; - this._managePreventDefault(keyName, $e); - if (keyName && this._shouldTrigger(keyName, $e)) { - this.trigger(keyName + "Keyed", $e); - } - }, - _onInput: function onInput() { - this._setQuery(this.getInputValue()); - this.clearHintIfInvalid(); - this._checkLanguageDirection(); - }, - _managePreventDefault: function managePreventDefault(keyName, $e) { - var preventDefault; - switch (keyName) { - case "up": - case "down": - preventDefault = !withModifier($e); - break; - - default: - preventDefault = false; - } - preventDefault && $e.preventDefault(); - }, - _shouldTrigger: function shouldTrigger(keyName, $e) { - var trigger; - switch (keyName) { - case "tab": - trigger = !withModifier($e); - break; - - default: - trigger = true; - } - return trigger; - }, - _checkLanguageDirection: function checkLanguageDirection() { - var dir = (this.$input.css("direction") || "ltr").toLowerCase(); - if (this.dir !== dir) { - this.dir = dir; - this.$hint.attr("dir", dir); - this.trigger("langDirChanged", dir); - } - }, - _setQuery: function setQuery(val, silent) { - var areEquivalent, hasDifferentWhitespace; - areEquivalent = areQueriesEquivalent(val, this.query); - hasDifferentWhitespace = areEquivalent ? this.query.length !== val.length : false; - this.query = val; - if (!silent && !areEquivalent) { - this.trigger("queryChanged", this.query); - } else if (!silent && hasDifferentWhitespace) { - this.trigger("whitespaceChanged", this.query); - } - }, - _updateDescendent: function updateDescendent(event, id) { - this.$input.attr("aria-activedescendant", id); - }, - bind: function() { - var that = this, onBlur, onFocus, onKeydown, onInput; - onBlur = _.bind(this._onBlur, this); - onFocus = _.bind(this._onFocus, this); - onKeydown = _.bind(this._onKeydown, this); - onInput = _.bind(this._onInput, this); - this.$input.on("blur.tt", onBlur).on("focus.tt", onFocus).on("keydown.tt", onKeydown); - if (!_.isMsie() || _.isMsie() > 9) { - this.$input.on("input.tt", onInput); - } else { - this.$input.on("keydown.tt keypress.tt cut.tt paste.tt", function($e) { - if (specialKeyCodeMap[$e.which || $e.keyCode]) { - return; - } - _.defer(_.bind(that._onInput, that, $e)); - }); - } - return this; - }, - focus: function focus() { - this.$input.focus(); - }, - blur: function blur() { - this.$input.blur(); - }, - getLangDir: function getLangDir() { - return this.dir; - }, - getQuery: function getQuery() { - return this.query || ""; - }, - setQuery: function setQuery(val, silent) { - this.setInputValue(val); - this._setQuery(val, silent); - }, - hasQueryChangedSinceLastFocus: function hasQueryChangedSinceLastFocus() { - return this.query !== this.queryWhenFocused; - }, - getInputValue: function getInputValue() { - return this.$input.val(); - }, - setInputValue: function setInputValue(value) { - this.$input.val(value); - this.clearHintIfInvalid(); - this._checkLanguageDirection(); - }, - resetInputValue: function resetInputValue() { - this.setInputValue(this.query); - }, - getHint: function getHint() { - return this.$hint.val(); - }, - setHint: function setHint(value) { - this.$hint.val(value); - }, - clearHint: function clearHint() { - this.setHint(""); - }, - clearHintIfInvalid: function clearHintIfInvalid() { - var val, hint, valIsPrefixOfHint, isValid; - val = this.getInputValue(); - hint = this.getHint(); - valIsPrefixOfHint = val !== hint && hint.indexOf(val) === 0; - isValid = val !== "" && valIsPrefixOfHint && !this.hasOverflow(); - !isValid && this.clearHint(); - }, - hasFocus: function hasFocus() { - return this.$input.is(":focus"); - }, - hasOverflow: function hasOverflow() { - var constraint = this.$input.width() - 2; - this.$overflowHelper.text(this.getInputValue()); - return this.$overflowHelper.width() >= constraint; - }, - isCursorAtEnd: function() { - var valueLength, selectionStart, range; - valueLength = this.$input.val().length; - selectionStart = this.$input[0].selectionStart; - if (_.isNumber(selectionStart)) { - return selectionStart === valueLength; - } else if (document.selection) { - range = document.selection.createRange(); - range.moveStart("character", -valueLength); - return valueLength === range.text.length; - } - return true; - }, - destroy: function destroy() { - this.$hint.off(".tt"); - this.$input.off(".tt"); - this.$overflowHelper.remove(); - this.$hint = this.$input = this.$overflowHelper = $("
"); - }, - setAriaExpanded: function setAriaExpanded(value) { - this.$input.attr("aria-expanded", value); - } - }); - return Input; - function buildOverflowHelper($input) { - return $('').css({ - position: "absolute", - visibility: "hidden", - whiteSpace: "pre", - fontFamily: $input.css("font-family"), - fontSize: $input.css("font-size"), - fontStyle: $input.css("font-style"), - fontVariant: $input.css("font-variant"), - fontWeight: $input.css("font-weight"), - wordSpacing: $input.css("word-spacing"), - letterSpacing: $input.css("letter-spacing"), - textIndent: $input.css("text-indent"), - textRendering: $input.css("text-rendering"), - textTransform: $input.css("text-transform") - }).insertAfter($input); - } - function areQueriesEquivalent(a, b) { - return Input.normalizeQuery(a) === Input.normalizeQuery(b); - } - function withModifier($e) { - return $e.altKey || $e.ctrlKey || $e.metaKey || $e.shiftKey; - } - }(); - var Dataset = function() { - "use strict"; - var keys, nameGenerator; - keys = { - dataset: "tt-selectable-dataset", - val: "tt-selectable-display", - obj: "tt-selectable-object" - }; - nameGenerator = _.getIdGenerator(); - function Dataset(o, www) { - o = o || {}; - o.templates = o.templates || {}; - o.templates.notFound = o.templates.notFound || o.templates.empty; - if (!o.source) { - $.error("missing source"); - } - if (!o.node) { - $.error("missing node"); - } - if (o.name && !isValidName(o.name)) { - $.error("invalid dataset name: " + o.name); - } - www.mixin(this); - this.highlight = !!o.highlight; - this.name = _.toStr(o.name || nameGenerator()); - this.limit = o.limit || 5; - this.displayFn = getDisplayFn(o.display || o.displayKey); - this.templates = getTemplates(o.templates, this.displayFn); - this.source = o.source.__ttAdapter ? o.source.__ttAdapter() : o.source; - this.async = _.isUndefined(o.async) ? this.source.length > 2 : !!o.async; - this._resetLastSuggestion(); - this.$el = $(o.node).attr("role", "presentation").addClass(this.classes.dataset).addClass(this.classes.dataset + "-" + this.name); - } - Dataset.extractData = function extractData(el) { - var $el = $(el); - if ($el.data(keys.obj)) { - return { - dataset: $el.data(keys.dataset) || "", - val: $el.data(keys.val) || "", - obj: $el.data(keys.obj) || null - }; - } - return null; - }; - _.mixin(Dataset.prototype, EventEmitter, { - _overwrite: function overwrite(query, suggestions) { - suggestions = suggestions || []; - if (suggestions.length) { - this._renderSuggestions(query, suggestions); - } else if (this.async && this.templates.pending) { - this._renderPending(query); - } else if (!this.async && this.templates.notFound) { - this._renderNotFound(query); - } else { - this._empty(); - } - this.trigger("rendered", suggestions, false, this.name); - }, - _append: function append(query, suggestions) { - suggestions = suggestions || []; - if (suggestions.length && this.$lastSuggestion.length) { - this._appendSuggestions(query, suggestions); - } else if (suggestions.length) { - this._renderSuggestions(query, suggestions); - } else if (!this.$lastSuggestion.length && this.templates.notFound) { - this._renderNotFound(query); - } - this.trigger("rendered", suggestions, true, this.name); - }, - _renderSuggestions: function renderSuggestions(query, suggestions) { - var $fragment; - $fragment = this._getSuggestionsFragment(query, suggestions); - this.$lastSuggestion = $fragment.children().last(); - this.$el.html($fragment).prepend(this._getHeader(query, suggestions)).append(this._getFooter(query, suggestions)); - }, - _appendSuggestions: function appendSuggestions(query, suggestions) { - var $fragment, $lastSuggestion; - $fragment = this._getSuggestionsFragment(query, suggestions); - $lastSuggestion = $fragment.children().last(); - this.$lastSuggestion.after($fragment); - this.$lastSuggestion = $lastSuggestion; - }, - _renderPending: function renderPending(query) { - var template = this.templates.pending; - this._resetLastSuggestion(); - template && this.$el.html(template({ - query: query, - dataset: this.name - })); - }, - _renderNotFound: function renderNotFound(query) { - var template = this.templates.notFound; - this._resetLastSuggestion(); - template && this.$el.html(template({ - query: query, - dataset: this.name - })); - }, - _empty: function empty() { - this.$el.empty(); - this._resetLastSuggestion(); - }, - _getSuggestionsFragment: function getSuggestionsFragment(query, suggestions) { - var that = this, fragment; - fragment = document.createDocumentFragment(); - _.each(suggestions, function getSuggestionNode(suggestion) { - var $el, context; - context = that._injectQuery(query, suggestion); - $el = $(that.templates.suggestion(context)).data(keys.dataset, that.name).data(keys.obj, suggestion).data(keys.val, that.displayFn(suggestion)).addClass(that.classes.suggestion + " " + that.classes.selectable); - fragment.appendChild($el[0]); - }); - this.highlight && highlight({ - className: this.classes.highlight, - node: fragment, - pattern: query - }); - return $(fragment); - }, - _getFooter: function getFooter(query, suggestions) { - return this.templates.footer ? this.templates.footer({ - query: query, - suggestions: suggestions, - dataset: this.name - }) : null; - }, - _getHeader: function getHeader(query, suggestions) { - return this.templates.header ? this.templates.header({ - query: query, - suggestions: suggestions, - dataset: this.name - }) : null; - }, - _resetLastSuggestion: function resetLastSuggestion() { - this.$lastSuggestion = $(); - }, - _injectQuery: function injectQuery(query, obj) { - return _.isObject(obj) ? _.mixin({ - _query: query - }, obj) : obj; - }, - update: function update(query) { - var that = this, canceled = false, syncCalled = false, rendered = 0; - this.cancel(); - this.cancel = function cancel() { - canceled = true; - that.cancel = $.noop; - that.async && that.trigger("asyncCanceled", query, that.name); - }; - this.source(query, sync, async); - !syncCalled && sync([]); - function sync(suggestions) { - if (syncCalled) { - return; - } - syncCalled = true; - suggestions = (suggestions || []).slice(0, that.limit); - rendered = suggestions.length; - that._overwrite(query, suggestions); - if (rendered < that.limit && that.async) { - that.trigger("asyncRequested", query, that.name); - } - } - function async(suggestions) { - suggestions = suggestions || []; - if (!canceled && rendered < that.limit) { - that.cancel = $.noop; - var idx = Math.abs(rendered - that.limit); - rendered += idx; - that._append(query, suggestions.slice(0, idx)); - that.async && that.trigger("asyncReceived", query, that.name); - } - } - }, - cancel: $.noop, - clear: function clear() { - this._empty(); - this.cancel(); - this.trigger("cleared"); - }, - isEmpty: function isEmpty() { - return this.$el.is(":empty"); - }, - destroy: function destroy() { - this.$el = $("
"); - } - }); - return Dataset; - function getDisplayFn(display) { - display = display || _.stringify; - return _.isFunction(display) ? display : displayFn; - function displayFn(obj) { - return obj[display]; - } - } - function getTemplates(templates, displayFn) { - return { - notFound: templates.notFound && _.templatify(templates.notFound), - pending: templates.pending && _.templatify(templates.pending), - header: templates.header && _.templatify(templates.header), - footer: templates.footer && _.templatify(templates.footer), - suggestion: templates.suggestion ? userSuggestionTemplate : suggestionTemplate - }; - function userSuggestionTemplate(context) { - var template = templates.suggestion; - return $(template(context)).attr("id", _.guid()); - } - function suggestionTemplate(context) { - return $('
').attr("id", _.guid()).text(displayFn(context)); - } - } - function isValidName(str) { - return /^[_a-zA-Z0-9-]+$/.test(str); - } - }(); - var Menu = function() { - "use strict"; - function Menu(o, www) { - var that = this; - o = o || {}; - if (!o.node) { - $.error("node is required"); - } - www.mixin(this); - this.$node = $(o.node); - this.query = null; - this.datasets = _.map(o.datasets, initializeDataset); - function initializeDataset(oDataset) { - var node = that.$node.find(oDataset.node).first(); - oDataset.node = node.length ? node : $("
").appendTo(that.$node); - return new Dataset(oDataset, www); - } - } - _.mixin(Menu.prototype, EventEmitter, { - _onSelectableClick: function onSelectableClick($e) { - this.trigger("selectableClicked", $($e.currentTarget)); - }, - _onRendered: function onRendered(type, dataset, suggestions, async) { - this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()); - this.trigger("datasetRendered", dataset, suggestions, async); - }, - _onCleared: function onCleared() { - this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()); - this.trigger("datasetCleared"); - }, - _propagate: function propagate() { - this.trigger.apply(this, arguments); - }, - _allDatasetsEmpty: function allDatasetsEmpty() { - return _.every(this.datasets, _.bind(function isDatasetEmpty(dataset) { - var isEmpty = dataset.isEmpty(); - this.$node.attr("aria-expanded", !isEmpty); - return isEmpty; - }, this)); - }, - _getSelectables: function getSelectables() { - return this.$node.find(this.selectors.selectable); - }, - _removeCursor: function _removeCursor() { - var $selectable = this.getActiveSelectable(); - $selectable && $selectable.removeClass(this.classes.cursor); - }, - _ensureVisible: function ensureVisible($el) { - var elTop, elBottom, nodeScrollTop, nodeHeight; - elTop = $el.position().top; - elBottom = elTop + $el.outerHeight(true); - nodeScrollTop = this.$node.scrollTop(); - nodeHeight = this.$node.height() + parseInt(this.$node.css("paddingTop"), 10) + parseInt(this.$node.css("paddingBottom"), 10); - if (elTop < 0) { - this.$node.scrollTop(nodeScrollTop + elTop); - } else if (nodeHeight < elBottom) { - this.$node.scrollTop(nodeScrollTop + (elBottom - nodeHeight)); - } - }, - bind: function() { - var that = this, onSelectableClick; - onSelectableClick = _.bind(this._onSelectableClick, this); - this.$node.on("click.tt", this.selectors.selectable, onSelectableClick); - this.$node.on("mouseover", this.selectors.selectable, function() { - that.setCursor($(this)); - }); - this.$node.on("mouseleave", function() { - that._removeCursor(); - }); - _.each(this.datasets, function(dataset) { - dataset.onSync("asyncRequested", that._propagate, that).onSync("asyncCanceled", that._propagate, that).onSync("asyncReceived", that._propagate, that).onSync("rendered", that._onRendered, that).onSync("cleared", that._onCleared, that); - }); - return this; - }, - isOpen: function isOpen() { - return this.$node.hasClass(this.classes.open); - }, - open: function open() { - this.$node.scrollTop(0); - this.$node.addClass(this.classes.open); - }, - close: function close() { - this.$node.attr("aria-expanded", false); - this.$node.removeClass(this.classes.open); - this._removeCursor(); - }, - setLanguageDirection: function setLanguageDirection(dir) { - this.$node.attr("dir", dir); - }, - selectableRelativeToCursor: function selectableRelativeToCursor(delta) { - var $selectables, $oldCursor, oldIndex, newIndex; - $oldCursor = this.getActiveSelectable(); - $selectables = this._getSelectables(); - oldIndex = $oldCursor ? $selectables.index($oldCursor) : -1; - newIndex = oldIndex + delta; - newIndex = (newIndex + 1) % ($selectables.length + 1) - 1; - newIndex = newIndex < -1 ? $selectables.length - 1 : newIndex; - return newIndex === -1 ? null : $selectables.eq(newIndex); - }, - setCursor: function setCursor($selectable) { - this._removeCursor(); - if ($selectable = $selectable && $selectable.first()) { - $selectable.addClass(this.classes.cursor); - this._ensureVisible($selectable); - } - }, - getSelectableData: function getSelectableData($el) { - return $el && $el.length ? Dataset.extractData($el) : null; - }, - getActiveSelectable: function getActiveSelectable() { - var $selectable = this._getSelectables().filter(this.selectors.cursor).first(); - return $selectable.length ? $selectable : null; - }, - getTopSelectable: function getTopSelectable() { - var $selectable = this._getSelectables().first(); - return $selectable.length ? $selectable : null; - }, - update: function update(query) { - var isValidUpdate = query !== this.query; - if (isValidUpdate) { - this.query = query; - _.each(this.datasets, updateDataset); - } - return isValidUpdate; - function updateDataset(dataset) { - dataset.update(query); - } - }, - empty: function empty() { - _.each(this.datasets, clearDataset); - this.query = null; - this.$node.addClass(this.classes.empty); - function clearDataset(dataset) { - dataset.clear(); - } - }, - destroy: function destroy() { - this.$node.off(".tt"); - this.$node = $("
"); - _.each(this.datasets, destroyDataset); - function destroyDataset(dataset) { - dataset.destroy(); - } - } - }); - return Menu; - }(); - var Status = function() { - "use strict"; - function Status(options) { - this.$el = $("", { - role: "status", - "aria-live": "polite" - }).css({ - position: "absolute", - padding: "0", - border: "0", - height: "1px", - width: "1px", - "margin-bottom": "-1px", - "margin-right": "-1px", - overflow: "hidden", - clip: "rect(0 0 0 0)", - "white-space": "nowrap" - }); - options.$input.after(this.$el); - _.each(options.menu.datasets, _.bind(function(dataset) { - if (dataset.onSync) { - dataset.onSync("rendered", _.bind(this.update, this)); - dataset.onSync("cleared", _.bind(this.cleared, this)); - } - }, this)); - } - _.mixin(Status.prototype, { - update: function update(event, suggestions) { - var length = suggestions.length; - var words; - if (length === 1) { - words = { - result: "result", - is: "is" - }; - } else { - words = { - result: "results", - is: "are" - }; - } - this.$el.text(length + " " + words.result + " " + words.is + " available, use up and down arrow keys to navigate."); - }, - cleared: function() { - this.$el.text(""); - } - }); - return Status; - }(); - var DefaultMenu = function() { - "use strict"; - var s = Menu.prototype; - function DefaultMenu() { - Menu.apply(this, [].slice.call(arguments, 0)); - } - _.mixin(DefaultMenu.prototype, Menu.prototype, { - open: function open() { - !this._allDatasetsEmpty() && this._show(); - return s.open.apply(this, [].slice.call(arguments, 0)); - }, - close: function close() { - this._hide(); - return s.close.apply(this, [].slice.call(arguments, 0)); - }, - _onRendered: function onRendered() { - if (this._allDatasetsEmpty()) { - this._hide(); - } else { - this.isOpen() && this._show(); - } - return s._onRendered.apply(this, [].slice.call(arguments, 0)); - }, - _onCleared: function onCleared() { - if (this._allDatasetsEmpty()) { - this._hide(); - } else { - this.isOpen() && this._show(); - } - return s._onCleared.apply(this, [].slice.call(arguments, 0)); - }, - setLanguageDirection: function setLanguageDirection(dir) { - this.$node.css(dir === "ltr" ? this.css.ltr : this.css.rtl); - return s.setLanguageDirection.apply(this, [].slice.call(arguments, 0)); - }, - _hide: function hide() { - this.$node.hide(); - }, - _show: function show() { - this.$node.css("display", "block"); - } - }); - return DefaultMenu; - }(); - var Typeahead = function() { - "use strict"; - function Typeahead(o, www) { - var onFocused, onBlurred, onEnterKeyed, onTabKeyed, onEscKeyed, onUpKeyed, onDownKeyed, onLeftKeyed, onRightKeyed, onQueryChanged, onWhitespaceChanged; - o = o || {}; - if (!o.input) { - $.error("missing input"); - } - if (!o.menu) { - $.error("missing menu"); - } - if (!o.eventBus) { - $.error("missing event bus"); - } - www.mixin(this); - this.eventBus = o.eventBus; - this.minLength = _.isNumber(o.minLength) ? o.minLength : 1; - this.input = o.input; - this.menu = o.menu; - this.enabled = true; - this.autoselect = !!o.autoselect; - this.active = false; - this.input.hasFocus() && this.activate(); - this.dir = this.input.getLangDir(); - this._hacks(); - this.menu.bind().onSync("selectableClicked", this._onSelectableClicked, this).onSync("asyncRequested", this._onAsyncRequested, this).onSync("asyncCanceled", this._onAsyncCanceled, this).onSync("asyncReceived", this._onAsyncReceived, this).onSync("datasetRendered", this._onDatasetRendered, this).onSync("datasetCleared", this._onDatasetCleared, this); - onFocused = c(this, "activate", "open", "_onFocused"); - onBlurred = c(this, "deactivate", "_onBlurred"); - onEnterKeyed = c(this, "isActive", "isOpen", "_onEnterKeyed"); - onTabKeyed = c(this, "isActive", "isOpen", "_onTabKeyed"); - onEscKeyed = c(this, "isActive", "_onEscKeyed"); - onUpKeyed = c(this, "isActive", "open", "_onUpKeyed"); - onDownKeyed = c(this, "isActive", "open", "_onDownKeyed"); - onLeftKeyed = c(this, "isActive", "isOpen", "_onLeftKeyed"); - onRightKeyed = c(this, "isActive", "isOpen", "_onRightKeyed"); - onQueryChanged = c(this, "_openIfActive", "_onQueryChanged"); - onWhitespaceChanged = c(this, "_openIfActive", "_onWhitespaceChanged"); - this.input.bind().onSync("focused", onFocused, this).onSync("blurred", onBlurred, this).onSync("enterKeyed", onEnterKeyed, this).onSync("tabKeyed", onTabKeyed, this).onSync("escKeyed", onEscKeyed, this).onSync("upKeyed", onUpKeyed, this).onSync("downKeyed", onDownKeyed, this).onSync("leftKeyed", onLeftKeyed, this).onSync("rightKeyed", onRightKeyed, this).onSync("queryChanged", onQueryChanged, this).onSync("whitespaceChanged", onWhitespaceChanged, this).onSync("langDirChanged", this._onLangDirChanged, this); - } - _.mixin(Typeahead.prototype, { - _hacks: function hacks() { - var $input, $menu; - $input = this.input.$input || $("
"); - $menu = this.menu.$node || $("
"); - $input.on("blur.tt", function($e) { - var active, isActive, hasActive; - active = document.activeElement; - isActive = $menu.is(active); - hasActive = $menu.has(active).length > 0; - if (_.isMsie() && (isActive || hasActive)) { - $e.preventDefault(); - $e.stopImmediatePropagation(); - _.defer(function() { - $input.focus(); - }); - } - }); - $menu.on("mousedown.tt", function($e) { - $e.preventDefault(); - }); - }, - _onSelectableClicked: function onSelectableClicked(type, $el) { - this.select($el); - }, - _onDatasetCleared: function onDatasetCleared() { - this._updateHint(); - }, - _onDatasetRendered: function onDatasetRendered(type, suggestions, async, dataset) { - this._updateHint(); - if (this.autoselect) { - var cursorClass = this.selectors.cursor.substr(1); - this.menu.$node.find(this.selectors.suggestion).first().addClass(cursorClass); - } - this.eventBus.trigger("render", suggestions, async, dataset); - }, - _onAsyncRequested: function onAsyncRequested(type, dataset, query) { - this.eventBus.trigger("asyncrequest", query, dataset); - }, - _onAsyncCanceled: function onAsyncCanceled(type, dataset, query) { - this.eventBus.trigger("asynccancel", query, dataset); - }, - _onAsyncReceived: function onAsyncReceived(type, dataset, query) { - this.eventBus.trigger("asyncreceive", query, dataset); - }, - _onFocused: function onFocused() { - this._minLengthMet() && this.menu.update(this.input.getQuery()); - }, - _onBlurred: function onBlurred() { - if (this.input.hasQueryChangedSinceLastFocus()) { - this.eventBus.trigger("change", this.input.getQuery()); - } - }, - _onEnterKeyed: function onEnterKeyed(type, $e) { - var $selectable; - if ($selectable = this.menu.getActiveSelectable()) { - if (this.select($selectable)) { - $e.preventDefault(); - $e.stopPropagation(); - } - } else if (this.autoselect) { - if (this.select(this.menu.getTopSelectable())) { - $e.preventDefault(); - $e.stopPropagation(); - } - } - }, - _onTabKeyed: function onTabKeyed(type, $e) { - var $selectable; - if ($selectable = this.menu.getActiveSelectable()) { - this.select($selectable) && $e.preventDefault(); - } else if (this.autoselect) { - if ($selectable = this.menu.getTopSelectable()) { - this.autocomplete($selectable) && $e.preventDefault(); - } - } - }, - _onEscKeyed: function onEscKeyed() { - this.close(); - }, - _onUpKeyed: function onUpKeyed() { - this.moveCursor(-1); - }, - _onDownKeyed: function onDownKeyed() { - this.moveCursor(+1); - }, - _onLeftKeyed: function onLeftKeyed() { - if (this.dir === "rtl" && this.input.isCursorAtEnd()) { - this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable()); - } - }, - _onRightKeyed: function onRightKeyed() { - if (this.dir === "ltr" && this.input.isCursorAtEnd()) { - this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable()); - } - }, - _onQueryChanged: function onQueryChanged(e, query) { - this._minLengthMet(query) ? this.menu.update(query) : this.menu.empty(); - }, - _onWhitespaceChanged: function onWhitespaceChanged() { - this._updateHint(); - }, - _onLangDirChanged: function onLangDirChanged(e, dir) { - if (this.dir !== dir) { - this.dir = dir; - this.menu.setLanguageDirection(dir); - } - }, - _openIfActive: function openIfActive() { - this.isActive() && this.open(); - }, - _minLengthMet: function minLengthMet(query) { - query = _.isString(query) ? query : this.input.getQuery() || ""; - return query.length >= this.minLength; - }, - _updateHint: function updateHint() { - var $selectable, data, val, query, escapedQuery, frontMatchRegEx, match; - $selectable = this.menu.getTopSelectable(); - data = this.menu.getSelectableData($selectable); - val = this.input.getInputValue(); - if (data && !_.isBlankString(val) && !this.input.hasOverflow()) { - query = Input.normalizeQuery(val); - escapedQuery = _.escapeRegExChars(query); - frontMatchRegEx = new RegExp("^(?:" + escapedQuery + ")(.+$)", "i"); - match = frontMatchRegEx.exec(data.val); - match && this.input.setHint(val + match[1]); - } else { - this.input.clearHint(); - } - }, - isEnabled: function isEnabled() { - return this.enabled; - }, - enable: function enable() { - this.enabled = true; - }, - disable: function disable() { - this.enabled = false; - }, - isActive: function isActive() { - return this.active; - }, - activate: function activate() { - if (this.isActive()) { - return true; - } else if (!this.isEnabled() || this.eventBus.before("active")) { - return false; - } else { - this.active = true; - this.eventBus.trigger("active"); - return true; - } - }, - deactivate: function deactivate() { - if (!this.isActive()) { - return true; - } else if (this.eventBus.before("idle")) { - return false; - } else { - this.active = false; - this.close(); - this.eventBus.trigger("idle"); - return true; - } - }, - isOpen: function isOpen() { - return this.menu.isOpen(); - }, - open: function open() { - if (!this.isOpen() && !this.eventBus.before("open")) { - this.input.setAriaExpanded(true); - this.menu.open(); - this._updateHint(); - this.eventBus.trigger("open"); - } - return this.isOpen(); - }, - close: function close() { - if (this.isOpen() && !this.eventBus.before("close")) { - this.input.setAriaExpanded(false); - this.menu.close(); - this.input.clearHint(); - this.input.resetInputValue(); - this.eventBus.trigger("close"); - } - return !this.isOpen(); - }, - setVal: function setVal(val) { - this.input.setQuery(_.toStr(val)); - }, - getVal: function getVal() { - return this.input.getQuery(); - }, - select: function select($selectable) { - var data = this.menu.getSelectableData($selectable); - if (data && !this.eventBus.before("select", data.obj, data.dataset)) { - this.input.setQuery(data.val, true); - this.eventBus.trigger("select", data.obj, data.dataset); - this.close(); - return true; - } - return false; - }, - autocomplete: function autocomplete($selectable) { - var query, data, isValid; - query = this.input.getQuery(); - data = this.menu.getSelectableData($selectable); - isValid = data && query !== data.val; - if (isValid && !this.eventBus.before("autocomplete", data.obj, data.dataset)) { - this.input.setQuery(data.val); - this.eventBus.trigger("autocomplete", data.obj, data.dataset); - return true; - } - return false; - }, - moveCursor: function moveCursor(delta) { - var query, $candidate, data, suggestion, datasetName, cancelMove, id; - query = this.input.getQuery(); - $candidate = this.menu.selectableRelativeToCursor(delta); - data = this.menu.getSelectableData($candidate); - suggestion = data ? data.obj : null; - datasetName = data ? data.dataset : null; - id = $candidate ? $candidate.attr("id") : null; - this.input.trigger("cursorchange", id); - cancelMove = this._minLengthMet() && this.menu.update(query); - if (!cancelMove && !this.eventBus.before("cursorchange", suggestion, datasetName)) { - this.menu.setCursor($candidate); - if (data) { - if (typeof data.val === "string") { - this.input.setInputValue(data.val); - } - } else { - this.input.resetInputValue(); - this._updateHint(); - } - this.eventBus.trigger("cursorchange", suggestion, datasetName); - return true; - } - return false; - }, - destroy: function destroy() { - this.input.destroy(); - this.menu.destroy(); - } - }); - return Typeahead; - function c(ctx) { - var methods = [].slice.call(arguments, 1); - return function() { - var args = [].slice.call(arguments); - _.each(methods, function(method) { - return ctx[method].apply(ctx, args); - }); - }; - } - }(); - (function() { - "use strict"; - var old, keys, methods; - old = $.fn.typeahead; - keys = { - www: "tt-www", - attrs: "tt-attrs", - typeahead: "tt-typeahead" - }; - methods = { - initialize: function initialize(o, datasets) { - var www; - datasets = _.isArray(datasets) ? datasets : [].slice.call(arguments, 1); - o = o || {}; - www = WWW(o.classNames); - return this.each(attach); - function attach() { - var $input, $wrapper, $hint, $menu, defaultHint, defaultMenu, eventBus, input, menu, status, typeahead, MenuConstructor; - _.each(datasets, function(d) { - d.highlight = !!o.highlight; - }); - $input = $(this); - $wrapper = $(www.html.wrapper); - $hint = $elOrNull(o.hint); - $menu = $elOrNull(o.menu); - defaultHint = o.hint !== false && !$hint; - defaultMenu = o.menu !== false && !$menu; - defaultHint && ($hint = buildHintFromInput($input, www)); - defaultMenu && ($menu = $(www.html.menu).css(www.css.menu)); - $hint && $hint.val(""); - $input = prepInput($input, www); - if (defaultHint || defaultMenu) { - $wrapper.css(www.css.wrapper); - $input.css(defaultHint ? www.css.input : www.css.inputWithNoHint); - $input.wrap($wrapper).parent().prepend(defaultHint ? $hint : null).append(defaultMenu ? $menu : null); - } - MenuConstructor = defaultMenu ? DefaultMenu : Menu; - eventBus = new EventBus({ - el: $input - }); - input = new Input({ - hint: $hint, - input: $input, - menu: $menu - }, www); - menu = new MenuConstructor({ - node: $menu, - datasets: datasets - }, www); - status = new Status({ - $input: $input, - menu: menu - }); - typeahead = new Typeahead({ - input: input, - menu: menu, - eventBus: eventBus, - minLength: o.minLength, - autoselect: o.autoselect - }, www); - $input.data(keys.www, www); - $input.data(keys.typeahead, typeahead); - } - }, - isEnabled: function isEnabled() { - var enabled; - ttEach(this.first(), function(t) { - enabled = t.isEnabled(); - }); - return enabled; - }, - enable: function enable() { - ttEach(this, function(t) { - t.enable(); - }); - return this; - }, - disable: function disable() { - ttEach(this, function(t) { - t.disable(); - }); - return this; - }, - isActive: function isActive() { - var active; - ttEach(this.first(), function(t) { - active = t.isActive(); - }); - return active; - }, - activate: function activate() { - ttEach(this, function(t) { - t.activate(); - }); - return this; - }, - deactivate: function deactivate() { - ttEach(this, function(t) { - t.deactivate(); - }); - return this; - }, - isOpen: function isOpen() { - var open; - ttEach(this.first(), function(t) { - open = t.isOpen(); - }); - return open; - }, - open: function open() { - ttEach(this, function(t) { - t.open(); - }); - return this; - }, - close: function close() { - ttEach(this, function(t) { - t.close(); - }); - return this; - }, - select: function select(el) { - var success = false, $el = $(el); - ttEach(this.first(), function(t) { - success = t.select($el); - }); - return success; - }, - autocomplete: function autocomplete(el) { - var success = false, $el = $(el); - ttEach(this.first(), function(t) { - success = t.autocomplete($el); - }); - return success; - }, - moveCursor: function moveCursoe(delta) { - var success = false; - ttEach(this.first(), function(t) { - success = t.moveCursor(delta); - }); - return success; - }, - val: function val(newVal) { - var query; - if (!arguments.length) { - ttEach(this.first(), function(t) { - query = t.getVal(); - }); - return query; - } else { - ttEach(this, function(t) { - t.setVal(_.toStr(newVal)); - }); - return this; - } - }, - destroy: function destroy() { - ttEach(this, function(typeahead, $input) { - revert($input); - typeahead.destroy(); - }); - return this; - } - }; - $.fn.typeahead = function(method) { - if (methods[method]) { - return methods[method].apply(this, [].slice.call(arguments, 1)); - } else { - return methods.initialize.apply(this, arguments); - } - }; - $.fn.typeahead.noConflict = function noConflict() { - $.fn.typeahead = old; - return this; - }; - function ttEach($els, fn) { - $els.each(function() { - var $input = $(this), typeahead; - (typeahead = $input.data(keys.typeahead)) && fn(typeahead, $input); - }); - } - function buildHintFromInput($input, www) { - return $input.clone().addClass(www.classes.hint).removeData().css(www.css.hint).css(getBackgroundStyles($input)).prop({ - readonly: true, - required: false - }).removeAttr("id name placeholder").removeClass("required").attr({ - spellcheck: "false", - tabindex: -1 - }); - } - function prepInput($input, www) { - $input.data(keys.attrs, { - dir: $input.attr("dir"), - autocomplete: $input.attr("autocomplete"), - spellcheck: $input.attr("spellcheck"), - style: $input.attr("style") - }); - $input.addClass(www.classes.input).attr({ - spellcheck: false - }); - try { - !$input.attr("dir") && $input.attr("dir", "auto"); - } catch (e) {} - return $input; - } - function getBackgroundStyles($el) { - return { - backgroundAttachment: $el.css("background-attachment"), - backgroundClip: $el.css("background-clip"), - backgroundColor: $el.css("background-color"), - backgroundImage: $el.css("background-image"), - backgroundOrigin: $el.css("background-origin"), - backgroundPosition: $el.css("background-position"), - backgroundRepeat: $el.css("background-repeat"), - backgroundSize: $el.css("background-size") - }; - } - function revert($input) { - var www, $wrapper; - www = $input.data(keys.www); - $wrapper = $input.parent().filter(www.selectors.wrapper); - _.each($input.data(keys.attrs), function(val, key) { - _.isUndefined(val) ? $input.removeAttr(key) : $input.attr(key, val); - }); - $input.removeData(keys.typeahead).removeData(keys.www).removeData(keys.attr).removeClass(www.classes.input); - if ($wrapper.length) { - $input.detach().insertAfter($wrapper); - $wrapper.remove(); - } - } - function $elOrNull(obj) { - var isValid, $el; - isValid = _.isJQuery(obj) || _.isElement(obj); - $el = isValid ? $(obj).first() : []; - return $el.length ? $el : null; - } - })(); -}); \ No newline at end of file diff --git a/large_tuple.html b/large_tuple.html deleted file mode 100644 index 01d509ed5..000000000 --- a/large_tuple.html +++ /dev/null @@ -1,492 +0,0 @@ - - - - large_tuple Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Large Tuple

- -

Tuples shouldn’t have too many members. Create a custom type instead.

- -
    -
  • Identifier: large_tuple
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning: 2, error: 3
  • -
-

Non Triggering Examples

-
let foo: (Int, Int)
-
-
-
let foo: (start: Int, end: Int)
-
-
-
let foo: (Int, (Int, String))
-
-
-
func foo() -> (Int, Int)
-
-
-
func foo() -> (Int, Int) {}
-
-
-
func foo(bar: String) -> (Int, Int)
-
-
-
func foo(bar: String) -> (Int, Int) {}
-
-
-
func foo() throws -> (Int, Int)
-
-
-
func foo() throws -> (Int, Int) {}
-
-
-
let foo: (Int, Int, Int) -> Void
-
-
-
let foo: (Int, Int, Int) throws -> Void
-
-
-
func foo(bar: (Int, String, Float) -> Void)
-
-
-
func foo(bar: (Int, String, Float) throws -> Void)
-
-
-
var completionHandler: ((_ data: Data?, _ resp: URLResponse?, _ e: NSError?) -> Void)!
-
-
-
func getDictionaryAndInt() -> (Dictionary<Int, String>, Int)?
-
-
-
func getGenericTypeAndInt() -> (Type<Int, String, Float>, Int)?
-
-
-
func foo() async -> (Int, Int)
-
-
-
func foo() async -> (Int, Int) {}
-
-
-
func foo(bar: String) async -> (Int, Int)
-
-
-
func foo(bar: String) async -> (Int, Int) {}
-
-
-
func foo() async throws -> (Int, Int)
-
-
-
func foo() async throws -> (Int, Int) {}
-
-
-
let foo: (Int, Int, Int) async -> Void
-
-
-
let foo: (Int, Int, Int) async throws -> Void
-
-
-
func foo(bar: (Int, String, Float) async -> Void)
-
-
-
func foo(bar: (Int, String, Float) async throws -> Void)
-
-
-
func getDictionaryAndInt() async -> (Dictionary<Int, String>, Int)?
-
-
-
func getGenericTypeAndInt() async -> (Type<Int, String, Float>, Int)?
-
-
-

Triggering Examples

-
↓let foo: (Int, Int, Int)
-
-
-
↓let foo: (start: Int, end: Int, value: String)
-
-
-
↓let foo: (Int, (Int, Int, Int))
-
-
-
func foo(↓bar: (Int, Int, Int))
-
-
-
func foo() -> ↓(Int, Int, Int)
-
-
-
func foo() -> ↓(Int, Int, Int) {}
-
-
-
func foo(bar: String) -> ↓(Int, Int, Int)
-
-
-
func foo(bar: String) -> ↓(Int, Int, Int) {}
-
-
-
func foo() throws -> ↓(Int, Int, Int)
-
-
-
func foo() throws -> ↓(Int, Int, Int) {}
-
-
-
func foo() throws -> ↓(Int, ↓(String, String, String), Int) {}
-
-
-
func getDictionaryAndInt() -> (Dictionary<Int, ↓(String, String, String)>, Int)?
-
-
-
func foo(↓bar: (Int, Int, Int)) async
-
-
-
func foo() async -> ↓(Int, Int, Int)
-
-
-
func foo() async -> ↓(Int, Int, Int) {}
-
-
-
func foo(bar: String) async -> ↓(Int, Int, Int)
-
-
-
func foo(bar: String) async -> ↓(Int, Int, Int) {}
-
-
-
func foo() async throws -> ↓(Int, Int, Int)
-
-
-
func foo() async throws -> ↓(Int, Int, Int) {}
-
-
-
func foo() async throws -> ↓(Int, ↓(String, String, String), Int) {}
-
-
-
func getDictionaryAndInt() async -> (Dictionary<Int, ↓(String, String, String)>, Int)?
-
-
- -
-
- - -
-
- - -
- diff --git a/last_where.html b/last_where.html deleted file mode 100644 index 8cf2c4fd0..000000000 --- a/last_where.html +++ /dev/null @@ -1,381 +0,0 @@ - - - - last_where Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Last Where

- -

Prefer using .last(where:) over .filter { }.last in collections.

- -
    -
  • Identifier: last_where
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
kinds.filter(excludingKinds.contains).isEmpty && kinds.last == .identifier
-
-
-
myList.last(where: { $0 % 2 == 0 })
-
-
-
match(pattern: pattern).filter { $0.last == .identifier }
-
-
-
(myList.filter { $0 == 1 }.suffix(2)).last
-
-
-
collection.filter("stringCol = '3'").last
-
-

Triggering Examples

-
↓myList.filter { $0 % 2 == 0 }.last
-
-
-
↓myList.filter({ $0 % 2 == 0 }).last
-
-
-
↓myList.map { $0 + 1 }.filter({ $0 % 2 == 0 }).last
-
-
-
↓myList.map { $0 + 1 }.filter({ $0 % 2 == 0 }).last?.something()
-
-
-
↓myList.filter(someFunction).last
-
-
-
↓myList.filter({ $0 % 2 == 0 })
-.last
-
-
-
(↓myList.filter { $0 == 1 }).last
-
-
- -
-
- - -
-
- - -
- diff --git a/leading_whitespace.html b/leading_whitespace.html deleted file mode 100644 index 88fd2a2d2..000000000 --- a/leading_whitespace.html +++ /dev/null @@ -1,355 +0,0 @@ - - - - leading_whitespace Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Leading Whitespace

- -

Files should not contain leading whitespace.

- -
    -
  • Identifier: leading_whitespace
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
//
-
-
-

Triggering Examples

-

-//
-
-
-
 //
-
-
- -
-
- - -
-
- - -
- diff --git a/legacy_cggeometry_functions.html b/legacy_cggeometry_functions.html deleted file mode 100644 index 82271a30a..000000000 --- a/legacy_cggeometry_functions.html +++ /dev/null @@ -1,425 +0,0 @@ - - - - legacy_cggeometry_functions Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Legacy CGGeometry Functions

- -

Struct extension properties and methods are preferred over legacy functions

- -
    -
  • Identifier: legacy_cggeometry_functions
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
rect.width
-
-
rect.height
-
-
rect.minX
-
-
rect.midX
-
-
rect.maxX
-
-
rect.minY
-
-
rect.midY
-
-
rect.maxY
-
-
rect.isNull
-
-
rect.isEmpty
-
-
rect.isInfinite
-
-
rect.standardized
-
-
rect.integral
-
-
rect.insetBy(dx: 5.0, dy: -7.0)
-
-
rect.offsetBy(dx: 5.0, dy: -7.0)
-
-
rect1.union(rect2)
-
-
rect1.intersect(rect2)
-
-
rect1.contains(rect2)
-
-
rect.contains(point)
-
-
rect1.intersects(rect2)
-
-

Triggering Examples

-
↓CGRectGetWidth(rect)
-
-
↓CGRectGetHeight(rect)
-
-
↓CGRectGetMinX(rect)
-
-
↓CGRectGetMidX(rect)
-
-
↓CGRectGetMaxX(rect)
-
-
↓CGRectGetMinY(rect)
-
-
↓CGRectGetMidY(rect)
-
-
↓CGRectGetMaxY(rect)
-
-
↓CGRectIsNull(rect)
-
-
↓CGRectIsEmpty(rect)
-
-
↓CGRectIsInfinite(rect)
-
-
↓CGRectStandardize(rect)
-
-
↓CGRectIntegral(rect)
-
-
↓CGRectInset(rect, 10, 5)
-
-
↓CGRectOffset(rect, -2, 8.3)
-
-
↓CGRectUnion(rect1, rect2)
-
-
↓CGRectIntersection(rect1, rect2)
-
-
↓CGRectContainsRect(rect1, rect2)
-
-
↓CGRectContainsPoint(rect, point)
-
-
↓CGRectIntersectsRect(rect1, rect2)
-
- -
-
- - -
-
- - -
- diff --git a/legacy_constant.html b/legacy_constant.html deleted file mode 100644 index 84601e9ed..000000000 --- a/legacy_constant.html +++ /dev/null @@ -1,385 +0,0 @@ - - - - legacy_constant Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Legacy Constant

- -

Struct-scoped constants are preferred over legacy global constants.

- -
    -
  • Identifier: legacy_constant
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
CGRect.infinite
-
-
CGPoint.zero
-
-
CGRect.zero
-
-
CGSize.zero
-
-
NSPoint.zero
-
-
NSRect.zero
-
-
NSSize.zero
-
-
CGRect.null
-
-
CGFloat.pi
-
-
Float.pi
-
-

Triggering Examples

-
↓CGRectInfinite
-
-
↓CGPointZero
-
-
↓CGRectZero
-
-
↓CGSizeZero
-
-
↓NSZeroPoint
-
-
↓NSZeroRect
-
-
↓NSZeroSize
-
-
↓CGRectNull
-
-
↓CGFloat(M_PI)
-
-
↓Float(M_PI)
-
- -
-
- - -
-
- - -
- diff --git a/legacy_constructor.html b/legacy_constructor.html deleted file mode 100644 index 3064806d9..000000000 --- a/legacy_constructor.html +++ /dev/null @@ -1,439 +0,0 @@ - - - - legacy_constructor Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Legacy Constructor

- -

Swift constructors are preferred over legacy convenience functions.

- -
    -
  • Identifier: legacy_constructor
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
CGPoint(x: 10, y: 10)
-
-
CGPoint(x: xValue, y: yValue)
-
-
CGSize(width: 10, height: 10)
-
-
CGSize(width: aWidth, height: aHeight)
-
-
CGRect(x: 0, y: 0, width: 10, height: 10)
-
-
CGRect(x: xVal, y: yVal, width: aWidth, height: aHeight)
-
-
CGVector(dx: 10, dy: 10)
-
-
CGVector(dx: deltaX, dy: deltaY)
-
-
NSPoint(x: 10, y: 10)
-
-
NSPoint(x: xValue, y: yValue)
-
-
NSSize(width: 10, height: 10)
-
-
NSSize(width: aWidth, height: aHeight)
-
-
NSRect(x: 0, y: 0, width: 10, height: 10)
-
-
NSRect(x: xVal, y: yVal, width: aWidth, height: aHeight)
-
-
NSRange(location: 10, length: 1)
-
-
NSRange(location: loc, length: len)
-
-
UIEdgeInsets(top: 0, left: 0, bottom: 10, right: 10)
-
-
UIEdgeInsets(top: aTop, left: aLeft, bottom: aBottom, right: aRight)
-
-
NSEdgeInsets(top: 0, left: 0, bottom: 10, right: 10)
-
-
NSEdgeInsets(top: aTop, left: aLeft, bottom: aBottom, right: aRight)
-
-
UIOffset(horizontal: 0, vertical: 10)
-
-
UIOffset(horizontal: horizontal, vertical: vertical)
-
-

Triggering Examples

-
↓CGPointMake(10, 10)
-
-
↓CGPointMake(xVal, yVal)
-
-
↓CGPointMake(calculateX(), 10)
-
-
-
↓CGSizeMake(10, 10)
-
-
↓CGSizeMake(aWidth, aHeight)
-
-
↓CGRectMake(0, 0, 10, 10)
-
-
↓CGRectMake(xVal, yVal, width, height)
-
-
↓CGVectorMake(10, 10)
-
-
↓CGVectorMake(deltaX, deltaY)
-
-
↓NSMakePoint(10, 10)
-
-
↓NSMakePoint(xVal, yVal)
-
-
↓NSMakeSize(10, 10)
-
-
↓NSMakeSize(aWidth, aHeight)
-
-
↓NSMakeRect(0, 0, 10, 10)
-
-
↓NSMakeRect(xVal, yVal, width, height)
-
-
↓NSMakeRange(10, 1)
-
-
↓NSMakeRange(loc, len)
-
-
↓UIEdgeInsetsMake(0, 0, 10, 10)
-
-
↓UIEdgeInsetsMake(top, left, bottom, right)
-
-
↓NSEdgeInsetsMake(0, 0, 10, 10)
-
-
↓NSEdgeInsetsMake(top, left, bottom, right)
-
-
↓CGVectorMake(10, 10)
-↓NSMakeRange(10, 1)
-
-
↓UIOffsetMake(0, 10)
-
-
↓UIOffsetMake(horizontal, vertical)
-
- -
-
- - -
-
- - -
- diff --git a/legacy_hashing.html b/legacy_hashing.html deleted file mode 100644 index 17dce3154..000000000 --- a/legacy_hashing.html +++ /dev/null @@ -1,398 +0,0 @@ - - - - legacy_hashing Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Legacy Hashing

- -

Prefer using the hash(into:) function instead of overriding hashValue

- -
    -
  • Identifier: legacy_hashing
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
struct Foo: Hashable {
-  let bar: Int = 10
-
-  func hash(into hasher: inout Hasher) {
-    hasher.combine(bar)
-  }
-}
-
-
class Foo: Hashable {
-  let bar: Int = 10
-
-  func hash(into hasher: inout Hasher) {
-    hasher.combine(bar)
-  }
-}
-
-
var hashValue: Int { return 1 }
-class Foo: Hashable { 
- }
-
-
class Foo: Hashable {
-  let bar: String = "Foo"
-
-  public var hashValue: String {
-    return bar
-  }
-}
-
-
class Foo: Hashable {
-  let bar: String = "Foo"
-
-  public var hashValue: String {
-    get { return bar }
-    set { bar = newValue }
-  }
-}
-
-

Triggering Examples

-
struct Foo: Hashable {
-    let bar: Int = 10
-
-    public ↓var hashValue: Int {
-        return bar
-    }
-}
-
-
class Foo: Hashable {
-    let bar: Int = 10
-
-    public ↓var hashValue: Int {
-        return bar
-    }
-}
-
- -
-
- - -
-
- - -
- diff --git a/legacy_multiple.html b/legacy_multiple.html deleted file mode 100644 index 7c221174f..000000000 --- a/legacy_multiple.html +++ /dev/null @@ -1,374 +0,0 @@ - - - - legacy_multiple Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Legacy Multiple

- -

Prefer using the isMultiple(of:) function instead of using the remainder operator (%).

- -
    -
  • Identifier: legacy_multiple
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
cell.contentView.backgroundColor = indexPath.row.isMultiple(of: 2) ? .gray : .white
-
-
guard count.isMultiple(of: 2) else { throw DecodingError.dataCorrupted(...) }
-
-
sanityCheck(bytes > 0 && bytes.isMultiple(of: 4), "capacity must be multiple of 4 bytes")
-
-
guard let i = reversedNumbers.firstIndex(where: { $0.isMultiple(of: 2) }) else { return }
-
-
let constant = 56
-let isMultiple = value.isMultiple(of: constant)
-
-
let constant = 56
-let secret = value % constant == 5
-
-
let secretValue = (value % 3) + 2
-
-

Triggering Examples

-
cell.contentView.backgroundColor = indexPath.row ↓% 2 == 0 ? .gray : .white
-
-
cell.contentView.backgroundColor = indexPath.row ↓% 2 != 0 ? .gray : .white
-
-
guard count ↓% 2 == 0 else { throw DecodingError.dataCorrupted(...) }
-
-
sanityCheck(bytes > 0 && bytes ↓% 4 == 0, "capacity must be multiple of 4 bytes")
-
-
guard let i = reversedNumbers.firstIndex(where: { $0 ↓% 2 == 0 }) else { return }
-
-
let constant = 56
-let isMultiple = value ↓% constant == 0
-
- -
-
- - -
-
- - - - diff --git a/legacy_nsgeometry_functions.html b/legacy_nsgeometry_functions.html deleted file mode 100644 index 65e103bd6..000000000 --- a/legacy_nsgeometry_functions.html +++ /dev/null @@ -1,421 +0,0 @@ - - - - legacy_nsgeometry_functions Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Legacy NSGeometry Functions

- -

Struct extension properties and methods are preferred over legacy functions

- -
    -
  • Identifier: legacy_nsgeometry_functions
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
rect.width
-
-
rect.height
-
-
rect.minX
-
-
rect.midX
-
-
rect.maxX
-
-
rect.minY
-
-
rect.midY
-
-
rect.maxY
-
-
rect.isEmpty
-
-
rect.integral
-
-
rect.insetBy(dx: 5.0, dy: -7.0)
-
-
rect.offsetBy(dx: 5.0, dy: -7.0)
-
-
rect1.union(rect2)
-
-
rect1.intersect(rect2)
-
-
rect1.contains(rect2)
-
-
rect.contains(point)
-
-
rect1.intersects(rect2)
-
-

Triggering Examples

-
↓NSWidth(rect)
-
-
↓NSHeight(rect)
-
-
↓NSMinX(rect)
-
-
↓NSMidX(rect)
-
-
↓NSMaxX(rect)
-
-
↓NSMinY(rect)
-
-
↓NSMidY(rect)
-
-
↓NSMaxY(rect)
-
-
↓NSEqualRects(rect1, rect2)
-
-
↓NSEqualSizes(size1, size2)
-
-
↓NSEqualPoints(point1, point2)
-
-
↓NSEdgeInsetsEqual(insets2, insets2)
-
-
↓NSIsEmptyRect(rect)
-
-
↓NSIntegralRect(rect)
-
-
↓NSInsetRect(rect, 10, 5)
-
-
↓NSOffsetRect(rect, -2, 8.3)
-
-
↓NSUnionRect(rect1, rect2)
-
-
↓NSIntersectionRect(rect1, rect2)
-
-
↓NSContainsRect(rect1, rect2)
-
-
↓NSPointInRect(rect, point)
-
-
↓NSIntersectsRect(rect1, rect2)
-
- -
-
- - -
-
- - - - diff --git a/legacy_objc_type.html b/legacy_objc_type.html deleted file mode 100644 index 28b50d72a..000000000 --- a/legacy_objc_type.html +++ /dev/null @@ -1,358 +0,0 @@ - - - - legacy_objc_type Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Legacy Objective-C Reference Type

- -

Prefer Swift value types to bridged Objective-C reference types

- -
    -
  • Identifier: legacy_objc_type
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
var array = Array<Int>()
-
-
-
var calendar: Calendar? = nil
-
-
var formatter: NSDataDetector
-
-
var className: String = NSStringFromClass(MyClass.self)
-
-

Triggering Examples

-
var array = NSArray()
-
-
var calendar: NSCalendar? = nil
-
- -
-
- - -
-
- - - - diff --git a/legacy_random.html b/legacy_random.html deleted file mode 100644 index 51fd2e61a..000000000 --- a/legacy_random.html +++ /dev/null @@ -1,363 +0,0 @@ - - - - legacy_random Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Legacy Random

- -

Prefer using type.random(in:) over legacy functions.

- -
    -
  • Identifier: legacy_random
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
Int.random(in: 0..<10)
-
-
-
Double.random(in: 8.6...111.34)
-
-
-
Float.random(in: 0 ..< 1)
-
-
-

Triggering Examples

-
↓arc4random(10)
-
-
-
↓arc4random_uniform(83)
-
-
-
↓drand48(52)
-
-
- -
-
- - -
-
- - - - diff --git a/let_var_whitespace.html b/let_var_whitespace.html deleted file mode 100644 index 8adabe9cf..000000000 --- a/let_var_whitespace.html +++ /dev/null @@ -1,457 +0,0 @@ - - - - let_var_whitespace Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Variable Declaration Whitespace

- -

Let and var should be separated from other statements by a blank line.

- -
    -
  • Identifier: let_var_whitespace
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let a = 0
-var x = 1
-
-x = 2
-
-
-
a = 5
-
-var x = 1
-
-
-
struct X {
-    var a = 0
-}
-
-
-
let a = 1 +
-    2
-let b = 5
-
-
-
var x: Int {
-    return 0
-}
-
-
-
var x: Int {
-    let a = 0
-
-    return a
-}
-
-
-
#if os(macOS)
-let a = 0
-#endif
-
-
-
#warning("TODO: remove it")
-let a = 0
-
-
-
#error("TODO: remove it")
-let a = 0
-
-
-
@available(swift 4)
-let a = 0
-
-
-
class C {
-    @objc
-    var s: String = ""
-}
-
-
class C {
-    @objc
-    func a() {}
-}
-
-
class C {
-    var x = 0
-    lazy
-    var y = 0
-}
-
-
-
@available(OSX, introduced: 10.6)
-@available(*, deprecated)
-var x = 0
-
-
-
// swiftlint:disable superfluous_disable_command
-// swiftlint:disable force_cast
-
-let x = bar as! Bar
-
-
var x: Int {
-    let a = 0
-    return a
-}
-
-
-

Triggering Examples

-
var x = 1
-↓x = 2
-
-
-

-a = 5
-↓var x = 1
-
-
-
struct X {
-    let a
-    ↓func x() {}
-}
-
-
-
var x = 0
-↓@objc func f() {}
-
-
-
var x = 0
-↓@objc
-    func f() {}
-
-
-
@objc func f() {
-}
-↓var x = 0
-
-
- -
-
- - -
-
- - - - diff --git a/line_length.html b/line_length.html deleted file mode 100644 index 8ab5027c4..000000000 --- a/line_length.html +++ /dev/null @@ -1,363 +0,0 @@ - - - - line_length Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Line Length

- -

Lines should not span too many characters.

- -
    -
  • Identifier: line_length
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning: 120, error: 200, ignores urls: false, ignores function declarations: false, ignores comments: false, ignores interpolated strings: false
  • -
-

Non Triggering Examples

-
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-
-
#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)
-
-
-
#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")
-
-
-

Triggering Examples

-
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-
-
#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)
-
-
-
#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")
-
-
- -
-
- - -
-
- - - - diff --git a/literal_expression_end_indentation.html b/literal_expression_end_indentation.html deleted file mode 100644 index f0dd4e22e..000000000 --- a/literal_expression_end_indentation.html +++ /dev/null @@ -1,390 +0,0 @@ - - - - literal_expression_end_indentation Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Literal Expression End Indentation

- -

Array and dictionary literal end should have the same indentation as the line that started it.

- -
    -
  • Identifier: literal_expression_end_indentation
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
[1, 2, 3]
-
-
[1,
- 2
-]
-
-
[
-   1,
-   2
-]
-
-
[
-   1,
-   2]
-
-
   let x = [
-       1,
-       2
-   ]
-
-
[key: 2, key2: 3]
-
-
[key: 1,
- key2: 2
-]
-
-
[
-   key: 0,
-   key2: 20
-]
-
-

Triggering Examples

-
let x = [
-   1,
-   2
-   ↓]
-
-
   let x = [
-       1,
-       2
-↓]
-
-
let x = [
-   key: value
-   ↓]
-
- -
-
- - -
-
- - - - diff --git a/lower_acl_than_parent.html b/lower_acl_than_parent.html deleted file mode 100644 index de0ac6d5d..000000000 --- a/lower_acl_than_parent.html +++ /dev/null @@ -1,377 +0,0 @@ - - - - lower_acl_than_parent Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Lower ACL than parent

- -

Ensure definitions have a lower access control level than their enclosing parent

- -
    -
  • Identifier: lower_acl_than_parent
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
public struct Foo { public func bar() {} }
-
-
internal struct Foo { func bar() {} }
-
-
struct Foo { func bar() {} }
-
-
open class Foo { public func bar() {} }
-
-
open class Foo { open func bar() {} }
-
-
fileprivate struct Foo { private func bar() {} }
-
-
private struct Foo { private func bar(id: String) }
-
-
extension Foo { public func bar() {} }
-
-
private struct Foo { fileprivate func bar() {} }
-
-
private func foo(id: String) {}
-
-
private class Foo { func bar() {} }
-
-

Triggering Examples

-
struct Foo { public ↓func bar() {} }
-
-
enum Foo { public ↓func bar() {} }
-
-
public class Foo { open ↓func bar() }
-
-
class Foo { public private(set) ↓var bar: String? }
-
-
private class Foo { internal ↓func bar() {} }
-
- -
-
- - -
-
- - - - diff --git a/mark.html b/mark.html deleted file mode 100644 index 630548369..000000000 --- a/mark.html +++ /dev/null @@ -1,420 +0,0 @@ - - - - mark Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Mark

- -

MARK comment should be in valid format. e.g. ‘// MARK: …’ or ‘// MARK: - …’

- -
    -
  • Identifier: mark
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
// MARK: good
-
-
-
// MARK: - good
-
-
-
// MARK: -
-
-
-
// BOOKMARK
-
-
//BOOKMARK
-
-
// BOOKMARKS
-
-
/*
-func test1() {
-}
-//MARK: mark
-func test2() {
-}
-*/
-
-

Triggering Examples

-
↓//MARK: bad
-
-
↓// MARK:bad
-
-
↓//MARK:bad
-
-
↓//  MARK: bad
-
-
↓// MARK:  bad
-
-
↓// MARK: -bad
-
-
↓// MARK:- bad
-
-
↓// MARK:-bad
-
-
↓//MARK: - bad
-
-
↓//MARK:- bad
-
-
↓//MARK: -bad
-
-
↓//MARK:-bad
-
-
↓//Mark: bad
-
-
↓// Mark: bad
-
-
↓// MARK bad
-
-
↓//MARK bad
-
-
↓// MARK - bad
-
-
↓//MARK : bad
-
-
↓// MARKL:
-
-
↓// MARKR 
-
-
↓// MARKK -
-
-
↓/// MARK:
-
-
↓/// MARK bad
-
-
↓//MARK:- Top-Level bad mark
-↓//MARK:- Another bad mark
-struct MarkTest {}
-↓// MARK:- Bad mark
-extension MarkTest {}
-
- -
-
- - -
-
- - - - diff --git a/missing_docs.html b/missing_docs.html deleted file mode 100644 index 60de676cf..000000000 --- a/missing_docs.html +++ /dev/null @@ -1,387 +0,0 @@ - - - - missing_docs Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Missing Docs

- -

Declarations should be documented.

- -
    -
  • Identifier: missing_docs
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning: open, public, excludes_extensions: true, excludes_inherited_types: true
  • -
-

Non Triggering Examples

-
/// docs
-public class A {
-/// docs
-public func b() {}
-}
-// no docs
-public class B: A { override public func b() {} }
-
-
import Foundation
-// no docs
-public class B: NSObject {
-// no docs
-override public var description: String { fatalError() } }
-
-
/// docs
-public class A {
-    deinit {}
-}
-
-
public extension A {}
-
-

Triggering Examples

-
public func a() {}
-
-
-
// regular comment
-public func a() {}
-
-
-
/* regular comment */
-public func a() {}
-
-
-
/// docs
-public protocol A {
-// no docs
-var b: Int { get } }
-/// docs
-public struct C: A {
-
-public let b: Int
-}
-
- -
-
- - -
-
- - - - diff --git a/modifier_order.html b/modifier_order.html deleted file mode 100644 index 5582a8de7..000000000 --- a/modifier_order.html +++ /dev/null @@ -1,532 +0,0 @@ - - - - modifier_order Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Modifier Order

- -

Modifier order should be consistent.

- -
    -
  • Identifier: modifier_order
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, preferred_modifier_order: [override, acl, setterACL, dynamic, mutators, lazy, final, required, convenience, typeMethods, owned]
  • -
-

Non Triggering Examples

-
public class Foo {
-   public convenience required init() {}
-}
-
-
public class Foo {
-   public static let bar = 42
-}
-
-
public class Foo {
-   public static var bar: Int {
-       return
-   }
-}
-
-
public class Foo {
-   public class var bar: Int {
-       return 42
-   }
-}
-
-
public class Bar {
-   public class var foo: String {
-       return "foo"
-   }
-}
-public class Foo: Bar {
-   override public final class var foo: String {
-       return "bar"
-   }
-}
-
-
open class Bar {
-   public var foo: Int? {
-       return 42
-   }
-}
-open class Foo: Bar {
-   override public var foo: Int? {
-       return 43
-   }
-}
-
-
open class Bar {
-   open class func foo() -> Int {
-       return 42
-   }
-}
-class Foo: Bar {
-   override open class func foo() -> Int {
-       return 43
-   }
-}
-
-
protocol Foo: class {}
-class Bar {
-    public private(set) weak var foo: Foo?
-}
-
-
@objc
-public final class Foo: NSObject {}
-
-
@objcMembers
-public final class Foo: NSObject {}
-
-
@objc
-override public private(set) weak var foo: Bar?
-
-
@objc
-public final class Foo: NSObject {}
-
-
@objc
-open final class Foo: NSObject {
-   open weak var weakBar: NSString? = nil
-}
-
-
public final class Foo {}
-
-
class Bar {
-   func bar() {}
-}
-
-
internal class Foo: Bar {
-   override internal func bar() {}
-}
-
-
public struct Foo {
-   internal weak var weakBar: NSObject? = nil
-}
-
-
class Foo {
-   internal lazy var bar: String = "foo"
-}
-
-

Triggering Examples

-
class Foo {
-   convenience required public init() {}
-}
-
-
public class Foo {
-   static public let bar = 42
-}
-
-
public class Foo {
-   static public var bar: Int {
-       return 42
-   }
-}
-
-
public class Foo {
-   class public var bar: Int {
-       return 42
-   }
-}
-
-
public class RootFoo {
-   class public var foo: String {
-       return "foo"
-   }
-}
-public class Foo: RootFoo {
-   override final class public var foo: String
-       return "bar"
-   }
-}
-
-
open class Bar {
-   public var foo: Int? {
-       return 42
-   }
-}
-open class Foo: Bar {
-    public override var foo: Int? {
-       return 43
-   }
-}
-
-
protocol Foo: class {}
-    class Bar {
-        private(set) public weak var foo: Foo?
-}
-
-
open class Bar {
-   open class func foo() -> Int {
-       return 42
-   }
-}
-class Foo: Bar {
-   class open override func foo() -> Int {
-       return 43
-   }
-}
-
-
open class Bar {
-   open class func foo() -> Int {
-       return 42
-   }
-}
-class Foo: Bar {
-   open override class func foo() -> Int {
-       return 43
-   }
-}
-
-
@objc
-final public class Foo: NSObject {}
-
-
@objcMembers
-final public class Foo: NSObject {}
-
-
@objc
-final open class Foo: NSObject {
-   weak open var weakBar: NSString? = nil
-}
-
-
final public class Foo {}
-
-
internal class Foo: Bar {
-   internal override func bar() {}
-}
-
-
public struct Foo {
-   weak internal var weakBar: NSObjetc? = nil
-}
-
-
class Foo {
-   lazy internal var bar: String = "foo"
-}
-
- -
-
- - -
-
- - - - diff --git a/multiline_arguments.html b/multiline_arguments.html deleted file mode 100644 index 948e672d9..000000000 --- a/multiline_arguments.html +++ /dev/null @@ -1,406 +0,0 @@ - - - - multiline_arguments Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Multiline Arguments

- -

Arguments should be either on the same line, or one per line.

- -
    -
  • Identifier: multiline_arguments
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, first_argument_location: any_line, only_enforce_after_first_closure_on_first_line: false
  • -
-

Non Triggering Examples

-
foo()
-
-
foo(
-)
-
-
foo { }
-
-
foo {
-
-}
-
-
foo(0)
-
-
foo(0, 1)
-
-
foo(0, 1) { }
-
-
foo(0, param1: 1)
-
-
foo(0, param1: 1) { }
-
-
foo(param1: 1)
-
-
foo(param1: 1) { }
-
-
foo(param1: 1, param2: true) { }
-
-
foo(param1: 1, param2: true, param3: [3]) { }
-
-
foo(param1: 1, param2: true, param3: [3]) {
-    bar()
-}
-
-
foo(param1: 1,
-    param2: true,
-    param3: [3])
-
-
foo(
-    param1: 1, param2: true, param3: [3]
-)
-
-
foo(
-    param1: 1,
-    param2: true,
-    param3: [3]
-)
-
-

Triggering Examples

-
foo(0,
-    param1: 1, ↓param2: true, ↓param3: [3])
-
-
foo(0, ↓param1: 1,
-    param2: true, ↓param3: [3])
-
-
foo(0, ↓param1: 1, ↓param2: true,
-    param3: [3])
-
-
foo(
-    0, ↓param1: 1,
-    param2: true, ↓param3: [3]
-)
-
- -
-
- - -
-
- - - - diff --git a/multiline_arguments_brackets.html b/multiline_arguments_brackets.html deleted file mode 100644 index 6bcf96561..000000000 --- a/multiline_arguments_brackets.html +++ /dev/null @@ -1,417 +0,0 @@ - - - - multiline_arguments_brackets Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Multiline Arguments Brackets

- -

Multiline arguments should have their surrounding brackets in a new line.

- -
    -
  • Identifier: multiline_arguments_brackets
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
foo(param1: "Param1", param2: "Param2", param3: "Param3")
-
-
foo(
-    param1: "Param1", param2: "Param2", param3: "Param3"
-)
-
-
func foo(
-    param1: "Param1",
-    param2: "Param2",
-    param3: "Param3"
-)
-
-
foo { param1, param2 in
-    print("hello world")
-}
-
-
foo(
-    bar(
-        x: 5,
-        y: 7
-    )
-)
-
-
AlertViewModel.AlertAction(title: "some title", style: .default) {
-    AlertManager.shared.presentNextDebugAlert()
-}
-
-
public final class Logger {
-    public static let shared = Logger(outputs: [
-        OSLoggerOutput(),
-        ErrorLoggerOutput()
-    ])
-}
-
-
let errors = try self.download([
-    (description: description, priority: priority),
-])
-
-
return SignalProducer({ observer, _ in
-    observer.sendCompleted()
-}).onMainQueue()
-
-
SomeType(a: [
-    1, 2, 3
-], b: [1, 2])
-
-

Triggering Examples

-
foo(↓param1: "Param1", param2: "Param2",
-         param3: "Param3"
-)
-
-
foo(
-    param1: "Param1",
-    param2: "Param2",
-    param3: "Param3"↓)
-
-
foo(↓bar(
-    x: 5,
-    y: 7
-)
-)
-
-
foo(
-    bar(
-        x: 5,
-        y: 7
-)↓)
-
-
SomeOtherType(↓a: [
-        1, 2, 3
-    ],
-    b: "two"↓)
-
- -
-
- - -
-
- - - - diff --git a/multiline_function_chains.html b/multiline_function_chains.html deleted file mode 100644 index a83896bb6..000000000 --- a/multiline_function_chains.html +++ /dev/null @@ -1,412 +0,0 @@ - - - - multiline_function_chains Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Multiline Function Chains

- -

Chained function calls should be either on the same line, or one per line.

- -
    -
  • Identifier: multiline_function_chains
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let evenSquaresSum = [20, 17, 35, 4].filter { $0 % 2 == 0 }.map { $0 * $0 }.reduce(0, +)
-
-
let evenSquaresSum = [20, 17, 35, 4]
-    .filter { $0 % 2 == 0 }.map { $0 * $0 }.reduce(0, +)",
-
-
let chain = a
-    .b(1, 2, 3)
-    .c { blah in
-        print(blah)
-    }
-    .d()
-
-
let chain = a.b(1, 2, 3)
-    .c { blah in
-        print(blah)
-    }
-    .d()
-
-
let chain = a.b(1, 2, 3)
-    .c { blah in print(blah) }
-    .d()
-
-
let chain = a.b(1, 2, 3)
-    .c(.init(
-        a: 1,
-        b, 2,
-        c, 3))
-    .d()
-
-
self.viewModel.outputs.postContextualNotification
-  .observeForUI()
-  .observeValues {
-    NotificationCenter.default.post(
-      Notification(
-        name: .ksr_showNotificationsDialog,
-        userInfo: [UserInfoKeys.context: PushNotificationDialog.Context.pledge,
-                   UserInfoKeys.viewController: self]
-     )
-    )
-  }
-
-
let remainingIDs = Array(Set(self.currentIDs).subtracting(Set(response.ids)))
-
-
self.happeningNewsletterOn = self.updateCurrentUser
-    .map { $0.newsletters.happening }.skipNil().skipRepeats()
-
-

Triggering Examples

-
let evenSquaresSum = [20, 17, 35, 4]
-    .filter { $0 % 2 == 0 }↓.map { $0 * $0 }
-    .reduce(0, +)
-
-
let evenSquaresSum = a.b(1, 2, 3)
-    .c { blah in
-        print(blah)
-    }↓.d()
-
-
let evenSquaresSum = a.b(1, 2, 3)
-    .c(2, 3, 4)↓.d()
-
-
let evenSquaresSum = a.b(1, 2, 3)↓.c { blah in
-        print(blah)
-    }
-    .d()
-
-
a.b {
-//  ““
-}↓.e()
-
- -
-
- - -
-
- - - - diff --git a/multiline_literal_brackets.html b/multiline_literal_brackets.html deleted file mode 100644 index 4c87473c9..000000000 --- a/multiline_literal_brackets.html +++ /dev/null @@ -1,414 +0,0 @@ - - - - multiline_literal_brackets Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Multiline Literal Brackets

- -

Multiline literals should have their surrounding brackets in a new line.

- -
    -
  • Identifier: multiline_literal_brackets
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let trio = ["harry", "ronald", "hermione"]
-let houseCup = ["gryffinder": 460, "hufflepuff": 370, "ravenclaw": 410, "slytherin": 450]
-
-
let trio = [
-    "harry",
-    "ronald",
-    "hermione"
-]
-let houseCup = [
-    "gryffinder": 460,
-    "hufflepuff": 370,
-    "ravenclaw": 410,
-    "slytherin": 450
-]
-
-
let trio = [
-    "harry", "ronald", "hermione"
-]
-let houseCup = [
-    "gryffinder": 460, "hufflepuff": 370,
-    "ravenclaw": 410, "slytherin": 450
-]
-
-
    _ = [
-        1,
-        2,
-        3,
-        4,
-        5, 6,
-        7, 8, 9
-    ]
-
-

Triggering Examples

-
let trio = [↓"harry",
-            "ronald",
-            "hermione"
-]
-
-
let houseCup = [↓"gryffinder": 460, "hufflepuff": 370,
-                "ravenclaw": 410, "slytherin": 450
-]
-
-
let trio = [
-    "harry",
-    "ronald",
-    "hermione"↓]
-
-
let houseCup = [
-    "gryffinder": 460, "hufflepuff": 370,
-    "ravenclaw": 410, "slytherin": 450↓]
-
-
class Hogwarts {
-    let houseCup = [
-        "gryffinder": 460, "hufflepuff": 370,
-        "ravenclaw": 410, "slytherin": 450↓]
-}
-
-
    _ = [
-        1,
-        2,
-        3,
-        4,
-        5, 6,
-        7, 8, 9↓]
-
-
    _ = [↓1, 2, 3,
-         4, 5, 6,
-         7, 8, 9
-    ]
-
- -
-
- - -
-
- - - - diff --git a/multiline_parameters.html b/multiline_parameters.html deleted file mode 100644 index c05c7e65c..000000000 --- a/multiline_parameters.html +++ /dev/null @@ -1,692 +0,0 @@ - - - - multiline_parameters Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Multiline Parameters

- -

Functions and methods parameters should be either on the same line, or one per line.

- -
    -
  • Identifier: multiline_parameters
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, allowsSingleLine: true
  • -
-

Non Triggering Examples

-
func foo() { }
-
-
func foo(param1: Int) { }
-
-
func foo(param1: Int, param2: Bool) { }
-
-
func foo(param1: Int, param2: Bool, param3: [String]) { }
-
-
func foo(param1: Int,
-         param2: Bool,
-         param3: [String]) { }
-
-
func foo(_ param1: Int, param2: Int, param3: Int) -> (Int) -> Int {
-   return { x in x + param1 + param2 + param3 }
-}
-
-
static func foo() { }
-
-
static func foo(param1: Int) { }
-
-
static func foo(param1: Int, param2: Bool) { }
-
-
static func foo(param1: Int, param2: Bool, param3: [String]) { }
-
-
static func foo(param1: Int,
-                param2: Bool,
-                param3: [String]) { }
-
-
protocol Foo {
-    func foo() { }
-}
-
-
protocol Foo {
-    func foo(param1: Int) { }
-}
-
-
protocol Foo {
-    func foo(param1: Int, param2: Bool) { }
-}
-
-
protocol Foo {
-    func foo(param1: Int, param2: Bool, param3: [String]) { }
-}
-
-
protocol Foo {
-   func foo(param1: Int,
-            param2: Bool,
-            param3: [String]) { }
-}
-
-
protocol Foo {
-    static func foo(param1: Int, param2: Bool, param3: [String]) { }
-}
-
-
protocol Foo {
-   static func foo(param1: Int,
-                   param2: Bool,
-                   param3: [String]) { }
-}
-
-
protocol Foo {
-    class func foo(param1: Int, param2: Bool, param3: [String]) { }
-}
-
-
protocol Foo {
-   class func foo(param1: Int,
-                  param2: Bool,
-                  param3: [String]) { }
-}
-
-
enum Foo {
-    func foo() { }
-}
-
-
enum Foo {
-    func foo(param1: Int) { }
-}
-
-
enum Foo {
-    func foo(param1: Int, param2: Bool) { }
-}
-
-
enum Foo {
-    func foo(param1: Int, param2: Bool, param3: [String]) { }
-}
-
-
enum Foo {
-   func foo(param1: Int,
-            param2: Bool,
-            param3: [String]) { }
-}
-
-
enum Foo {
-    static func foo(param1: Int, param2: Bool, param3: [String]) { }
-}
-
-
enum Foo {
-   static func foo(param1: Int,
-                   param2: Bool,
-                   param3: [String]) { }
-}
-
-
struct Foo {
-    func foo() { }
-}
-
-
struct Foo {
-    func foo(param1: Int) { }
-}
-
-
struct Foo {
-    func foo(param1: Int, param2: Bool) { }
-}
-
-
struct Foo {
-    func foo(param1: Int, param2: Bool, param3: [String]) { }
-}
-
-
struct Foo {
-   func foo(param1: Int,
-            param2: Bool,
-            param3: [String]) { }
-}
-
-
struct Foo {
-    static func foo(param1: Int, param2: Bool, param3: [String]) { }
-}
-
-
struct Foo {
-   static func foo(param1: Int,
-                   param2: Bool,
-                   param3: [String]) { }
-}
-
-
class Foo {
-    func foo() { }
-}
-
-
class Foo {
-    func foo(param1: Int) { }
-}
-
-
class Foo {
-    func foo(param1: Int, param2: Bool) { }
-}
-
-
class Foo {
-    func foo(param1: Int, param2: Bool, param3: [String]) { }
-    }
-
-
class Foo {
-   func foo(param1: Int,
-            param2: Bool,
-            param3: [String]) { }
-}
-
-
class Foo {
-    class func foo(param1: Int, param2: Bool, param3: [String]) { }
-}
-
-
class Foo {
-   class func foo(param1: Int,
-                  param2: Bool,
-                  param3: [String]) { }
-}
-
-
class Foo {
-   class func foo(param1: Int,
-                  param2: Bool,
-                  param3: @escaping (Int, Int) -> Void = { _, _ in }) { }
-}
-
-
class Foo {
-   class func foo(param1: Int,
-                  param2: Bool,
-                  param3: @escaping (Int) -> Void = { _ in }) { }
-}
-
-
class Foo {
-   class func foo(param1: Int,
-                  param2: Bool,
-                  param3: @escaping ((Int) -> Void)? = nil) { }
-}
-
-
class Foo {
-   class func foo(param1: Int,
-                  param2: Bool,
-                  param3: @escaping ((Int) -> Void)? = { _ in }) { }
-}
-
-
class Foo {
-   class func foo(param1: Int,
-                  param2: @escaping ((Int) -> Void)? = { _ in },
-                  param3: Bool) { }
-}
-
-
class Foo {
-   class func foo(param1: Int,
-                  param2: @escaping ((Int) -> Void)? = { _ in },
-                  param3: @escaping (Int, Int) -> Void = { _, _ in }) { }
-}
-
-
class Foo {
-   class func foo(param1: Int,
-                  param2: Bool,
-                  param3: @escaping (Int) -> Void = { (x: Int) in }) { }
-}
-
-
class Foo {
-   class func foo(param1: Int,
-                  param2: Bool,
-                  param3: @escaping (Int, (Int) -> Void) -> Void = { (x: Int, f: (Int) -> Void) in }) { }
-}
-
-
func foo() { }
-
-
func foo(param1: Int) { }
-
-
protocol Foo {
-    func foo(param1: Int,
-             param2: Bool,
-             param3: [String]) { }
-}
-
-
protocol Foo {
-    func foo(
-        param1: Int
-    ) { }
-}
-
-
protocol Foo {
-    func foo(
-        param1: Int,
-        param2: Bool,
-        param3: [String]
-    ) { }
-}
-
-

Triggering Examples

-
func ↓foo(_ param1: Int,
-          param2: Int, param3: Int) -> (Int) -> Int {
-   return { x in x + param1 + param2 + param3 }
-}
-
-
protocol Foo {
-   func ↓foo(param1: Int,
-             param2: Bool, param3: [String]) { }
-}
-
-
protocol Foo {
-   func ↓foo(param1: Int, param2: Bool,
-             param3: [String]) { }
-}
-
-
protocol Foo {
-   static func ↓foo(param1: Int,
-                    param2: Bool, param3: [String]) { }
-}
-
-
protocol Foo {
-   static func ↓foo(param1: Int, param2: Bool,
-                    param3: [String]) { }
-}
-
-
protocol Foo {
-   class func ↓foo(param1: Int,
-                   param2: Bool, param3: [String]) { }
-}
-
-
protocol Foo {
-   class func ↓foo(param1: Int, param2: Bool,
-                   param3: [String]) { }
-}
-
-
enum Foo {
-   func ↓foo(param1: Int,
-             param2: Bool, param3: [String]) { }
-}
-
-
enum Foo {
-   func ↓foo(param1: Int, param2: Bool,
-             param3: [String]) { }
-}
-
-
enum Foo {
-   static func ↓foo(param1: Int,
-                    param2: Bool, param3: [String]) { }
-}
-
-
enum Foo {
-   static func ↓foo(param1: Int, param2: Bool,
-                    param3: [String]) { }
-}
-
-
struct Foo {
-   func ↓foo(param1: Int,
-             param2: Bool, param3: [String]) { }
-}
-
-
struct Foo {
-   func ↓foo(param1: Int, param2: Bool,
-             param3: [String]) { }
-}
-
-
struct Foo {
-   static func ↓foo(param1: Int,
-                    param2: Bool, param3: [String]) { }
-}
-
-
struct Foo {
-   static func ↓foo(param1: Int, param2: Bool,
-                    param3: [String]) { }
-}
-
-
class Foo {
-   func ↓foo(param1: Int,
-             param2: Bool, param3: [String]) { }
-}
-
-
class Foo {
-   func ↓foo(param1: Int, param2: Bool,
-             param3: [String]) { }
-}
-
-
class Foo {
-   class func ↓foo(param1: Int,
-                   param2: Bool, param3: [String]) { }
-}
-
-
class Foo {
-   class func ↓foo(param1: Int, param2: Bool,
-                   param3: [String]) { }
-}
-
-
class Foo {
-   class func ↓foo(param1: Int,
-                  param2: Bool, param3: @escaping (Int, Int) -> Void = { _, _ in }) { }
-}
-
-
class Foo {
-   class func ↓foo(param1: Int,
-                  param2: Bool, param3: @escaping (Int) -> Void = { (x: Int) in }) { }
-}
-
-
func ↓foo(param1: Int, param2: Bool) { }
-
-
func ↓foo(param1: Int, param2: Bool, param3: [String]) { }
-
- -
-
- - -
-
- - - - diff --git a/multiline_parameters_brackets.html b/multiline_parameters_brackets.html deleted file mode 100644 index 23ad529d7..000000000 --- a/multiline_parameters_brackets.html +++ /dev/null @@ -1,407 +0,0 @@ - - - - multiline_parameters_brackets Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Multiline Parameters Brackets

- -

Multiline parameters should have their surrounding brackets in a new line.

- -
    -
  • Identifier: multiline_parameters_brackets
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
func foo(param1: String, param2: String, param3: String)
-
-
func foo(
-    param1: String, param2: String, param3: String
-)
-
-
func foo(
-    param1: String,
-    param2: String,
-    param3: String
-)
-
-
class SomeType {
-    func foo(param1: String, param2: String, param3: String)
-}
-
-
class SomeType {
-    func foo(
-        param1: String, param2: String, param3: String
-    )
-}
-
-
class SomeType {
-    func foo(
-        param1: String,
-        param2: String,
-        param3: String
-    )
-}
-
-
func foo<T>(param1: T, param2: String, param3: String) -> T { /* some code */ }
-
-
    func foo(a: [Int] = [
-        1
-    ])
-
-

Triggering Examples

-
func foo(↓param1: String, param2: String,
-         param3: String
-)
-
-
func foo(
-    param1: String,
-    param2: String,
-    param3: String↓)
-
-
class SomeType {
-    func foo(↓param1: String, param2: String,
-             param3: String
-    )
-}
-
-
class SomeType {
-    func foo(
-        param1: String,
-        param2: String,
-        param3: String↓)
-}
-
-
func foo<T>(↓param1: T, param2: String,
-         param3: String
-) -> T
-
- -
-
- - -
-
- - - - diff --git a/multiple_closures_with_trailing_closure.html b/multiple_closures_with_trailing_closure.html deleted file mode 100644 index 1cd9e8c34..000000000 --- a/multiple_closures_with_trailing_closure.html +++ /dev/null @@ -1,379 +0,0 @@ - - - - multiple_closures_with_trailing_closure Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Multiple Closures with Trailing Closure

- -

Trailing closure syntax should not be used when passing more than one closure argument.

- -
    -
  • Identifier: multiple_closures_with_trailing_closure
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
foo.map { $0 + 1 }
-
-
-
foo.reduce(0) { $0 + $1 }
-
-
-
if let foo = bar.map({ $0 + 1 }) {
-
-}
-
-
-
foo.something(param1: { $0 }, param2: { $0 + 1 })
-
-
-
UIView.animate(withDuration: 1.0) {
-    someView.alpha = 0.0
-}
-
-
foo.method { print(0) } arg2: { print(1) }
-
-
foo.methodWithParenArgs((0, 1), arg2: (0, 1, 2)) { $0 } arg4: { $0 }
-
-

Triggering Examples

-
foo.something(param1: { $0 }) ↓{ $0 + 1 }
-
-
UIView.animate(withDuration: 1.0, animations: {
-    someView.alpha = 0.0
-}) ↓{ _ in
-    someView.removeFromSuperview()
-}
-
-
foo.multipleTrailing(arg1: { $0 }) { $0 } arg3: { $0 }
-
-
foo.methodWithParenArgs(param1: { $0 }, param2: (0, 1), (0, 1)) { $0 }
-
- -
-
- - -
-
- - - - diff --git a/nesting.html b/nesting.html deleted file mode 100644 index f39466db6..000000000 --- a/nesting.html +++ /dev/null @@ -1,1034 +0,0 @@ - - - - nesting Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Nesting

- -

Types should be nested at most 1 level deep, and functions should be nested at most 2 levels deep.

- -
    -
  • Identifier: nesting
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: (type_level) w: 1, (function_level) w: 2, (check_nesting_in_closures_and_statements) true, (always_allow_one_type_in_functions) false
  • -
-

Non Triggering Examples

-
    class Example_0 {
-        class Example_1 {}
-    }
-
-
    var example: Int {
-        class Example_0 {
-            class Example_1 {}
-        }
-        return 5
-    }
-
-
    var example: Int = 5 {
-        didSet {
-            class Example_0 {
-                class Example_1 {}
-            }
-        }
-    }
-
-
    extension Example_0 {
-        class Example_1 {}
-    }
-
-
    struct Example_0 {
-        struct Example_1 {}
-    }
-
-
    var example: Int {
-        struct Example_0 {
-            struct Example_1 {}
-        }
-        return 5
-    }
-
-
    var example: Int = 5 {
-        didSet {
-            struct Example_0 {
-                struct Example_1 {}
-            }
-        }
-    }
-
-
    extension Example_0 {
-        struct Example_1 {}
-    }
-
-
    enum Example_0 {
-        enum Example_1 {}
-    }
-
-
    var example: Int {
-        enum Example_0 {
-            enum Example_1 {}
-        }
-        return 5
-    }
-
-
    var example: Int = 5 {
-        didSet {
-            enum Example_0 {
-                enum Example_1 {}
-            }
-        }
-    }
-
-
    extension Example_0 {
-        enum Example_1 {}
-    }
-
-
    func f_0() {
-        func f_1() {
-            func f_2() {}
-        }
-    }
-
-
    var example: Int {
-        func f_0() {
-            func f_1() {
-                func f_2() {}
-            }
-        }
-        return 5
-    }
-
-
    var example: Int = 5 {
-        didSet {
-            func f_0() {
-                func f_1() {
-                    func f_2() {}
-                }
-            }
-        }
-    }
-
-
    extension Example_0 {
-        func f_0() {
-            func f_1() {
-                func f_2() {}
-            }
-        }
-    }
-
-
    switch example {
-    case .exampleCase:
-        class Example_0 {
-            class Example_1 {}
-        }
-    default:
-        func f_0() {
-            func f_1() {
-                func f_2() {}
-            }
-        }
-    }
-
-
    var exampleClosure: () -> Void = {
-        class Example_0 {
-            class Example_1 {}
-        }
-        func f_0() {
-            func f_1() {
-                func f_2() {}
-            }
-        }
-    }
-
-
    exampleFunc(closure: {
-        class Example_0 {
-            class Example_1 {}
-        }
-        func f_0() {
-            func f_1() {
-                func f_2() {}
-            }
-        }
-    })
-
-
    switch example {
-    case .exampleCase:
-        struct Example_0 {
-            struct Example_1 {}
-        }
-    default:
-        func f_0() {
-            func f_1() {
-                func f_2() {}
-            }
-        }
-    }
-
-
    var exampleClosure: () -> Void = {
-        struct Example_0 {
-            struct Example_1 {}
-        }
-        func f_0() {
-            func f_1() {
-                func f_2() {}
-            }
-        }
-    }
-
-
    exampleFunc(closure: {
-        struct Example_0 {
-            struct Example_1 {}
-        }
-        func f_0() {
-            func f_1() {
-                func f_2() {}
-            }
-        }
-    })
-
-
    switch example {
-    case .exampleCase:
-        enum Example_0 {
-            enum Example_1 {}
-        }
-    default:
-        func f_0() {
-            func f_1() {
-                func f_2() {}
-            }
-        }
-    }
-
-
    var exampleClosure: () -> Void = {
-        enum Example_0 {
-            enum Example_1 {}
-        }
-        func f_0() {
-            func f_1() {
-                func f_2() {}
-            }
-        }
-    }
-
-
    exampleFunc(closure: {
-        enum Example_0 {
-            enum Example_1 {}
-        }
-        func f_0() {
-            func f_1() {
-                func f_2() {}
-            }
-        }
-    })
-
-
    class Example_0 {
-        func f_0() {
-            class Example_1 {
-                func f_1() {
-                    func f_2() {}
-                }
-            }
-        }
-    }
-
-
    class Example_0 {
-        func f_0() {
-            switch example {
-            case .exampleCase:
-                class Example_1 {
-                    func f_1() {
-                        func f_2() {}
-                    }
-                }
-            default:
-                exampleFunc(closure: {
-                    class Example_1 {
-                        func f_1() {
-                            func f_2() {}
-                        }
-                    }
-                })
-            }
-        }
-    }
-
-
    struct Example_0 {
-        func f_0() {
-            struct Example_1 {
-                func f_1() {
-                    func f_2() {}
-                }
-            }
-        }
-    }
-
-
    struct Example_0 {
-        func f_0() {
-            switch example {
-            case .exampleCase:
-                struct Example_1 {
-                    func f_1() {
-                        func f_2() {}
-                    }
-                }
-            default:
-                exampleFunc(closure: {
-                    struct Example_1 {
-                        func f_1() {
-                            func f_2() {}
-                        }
-                    }
-                })
-            }
-        }
-    }
-
-
    enum Example_0 {
-        func f_0() {
-            enum Example_1 {
-                func f_1() {
-                    func f_2() {}
-                }
-            }
-        }
-    }
-
-
    enum Example_0 {
-        func f_0() {
-            switch example {
-            case .exampleCase:
-                enum Example_1 {
-                    func f_1() {
-                        func f_2() {}
-                    }
-                }
-            default:
-                exampleFunc(closure: {
-                    enum Example_1 {
-                        func f_1() {
-                            func f_2() {}
-                        }
-                    }
-                })
-            }
-        }
-    }
-
-

Triggering Examples

-
    class Example_0 {
-        class Example_1 {
-            ↓class Example_2 {}
-        }
-    }
-
-
    var example: Int {
-        class Example_0 {
-            class Example_1 {
-                ↓class Example_2 {}
-            }
-        }
-        return 5
-    }
-
-
    var example: Int = 5 {
-        didSet {
-            class Example_0 {
-                class Example_1 {
-                    ↓class Example_2 {}
-                }
-            }
-        }
-    }
-
-
    extension Example_0 {
-        class Example_1 {
-            ↓class Example_2 {}
-        }
-    }
-
-
    struct Example_0 {
-        struct Example_1 {
-            ↓struct Example_2 {}
-        }
-    }
-
-
    var example: Int {
-        struct Example_0 {
-            struct Example_1 {
-                ↓struct Example_2 {}
-            }
-        }
-        return 5
-    }
-
-
    var example: Int = 5 {
-        didSet {
-            struct Example_0 {
-                struct Example_1 {
-                    ↓struct Example_2 {}
-                }
-            }
-        }
-    }
-
-
    extension Example_0 {
-        struct Example_1 {
-            ↓struct Example_2 {}
-        }
-    }
-
-
    enum Example_0 {
-        enum Example_1 {
-            ↓enum Example_2 {}
-        }
-    }
-
-
    var example: Int {
-        enum Example_0 {
-            enum Example_1 {
-                ↓enum Example_2 {}
-            }
-        }
-        return 5
-    }
-
-
    var example: Int = 5 {
-        didSet {
-            enum Example_0 {
-                enum Example_1 {
-                    ↓enum Example_2 {}
-                }
-            }
-        }
-    }
-
-
    extension Example_0 {
-        enum Example_1 {
-            ↓enum Example_2 {}
-        }
-    }
-
-
    func f_0() {
-        func f_1() {
-            func f_2() {
-                ↓func f_3() {}
-            }
-        }
-    }
-
-
    var example: Int {
-        func f_0() {
-            func f_1() {
-                func f_2() {
-                    ↓func f_3() {}
-                }
-            }
-        }
-        return 5
-    }
-
-
    var example: Int = 5 {
-        didSet {
-            func f_0() {
-                func f_1() {
-                    func f_2() {
-                        ↓func f_3() {}
-                    }
-                }
-            }
-        }
-    }
-
-
    extension Example_0 {
-        func f_0() {
-            func f_1() {
-                func f_2() {
-                    ↓func f_3() {}
-                }
-            }
-        }
-    }
-
-
    switch example {
-    case .exampleCase:
-        class Example_0 {
-            class Example_1 {
-                ↓class Example_2 {}
-            }
-        }
-    default:
-        func f_0() {
-            func f_1() {
-                func f_2() {
-                    ↓func f_3() {}
-                }
-            }
-        }
-    }
-
-
    var exampleClosure: () -> Void = {
-        class Example_0 {
-            class Example_1 {
-                ↓class Example_2 {}
-            }
-            }
-        func f_0() {
-            func f_1() {
-                func f_2() {
-                    ↓func f_3() {}
-                }
-            }
-        }
-    }
-
-
    exampleFunc(closure: {
-        class Example_0 {
-            class Example_1 {}
-        }
-        func f_0() {
-            func f_1() {
-                func f_2() {
-                    ↓func f_3() {}
-                }
-            }
-        }
-    })
-
-
    switch example {
-    case .exampleCase:
-        struct Example_0 {
-            struct Example_1 {
-                ↓struct Example_2 {}
-            }
-        }
-    default:
-        func f_0() {
-            func f_1() {
-                func f_2() {
-                    ↓func f_3() {}
-                }
-            }
-        }
-    }
-
-
    var exampleClosure: () -> Void = {
-        struct Example_0 {
-            struct Example_1 {
-                ↓struct Example_2 {}
-            }
-            }
-        func f_0() {
-            func f_1() {
-                func f_2() {
-                    ↓func f_3() {}
-                }
-            }
-        }
-    }
-
-
    exampleFunc(closure: {
-        struct Example_0 {
-            struct Example_1 {}
-        }
-        func f_0() {
-            func f_1() {
-                func f_2() {
-                    ↓func f_3() {}
-                }
-            }
-        }
-    })
-
-
    switch example {
-    case .exampleCase:
-        enum Example_0 {
-            enum Example_1 {
-                ↓enum Example_2 {}
-            }
-        }
-    default:
-        func f_0() {
-            func f_1() {
-                func f_2() {
-                    ↓func f_3() {}
-                }
-            }
-        }
-    }
-
-
    var exampleClosure: () -> Void = {
-        enum Example_0 {
-            enum Example_1 {
-                ↓enum Example_2 {}
-            }
-            }
-        func f_0() {
-            func f_1() {
-                func f_2() {
-                    ↓func f_3() {}
-                }
-            }
-        }
-    }
-
-
    exampleFunc(closure: {
-        enum Example_0 {
-            enum Example_1 {}
-        }
-        func f_0() {
-            func f_1() {
-                func f_2() {
-                    ↓func f_3() {}
-                }
-            }
-        }
-    })
-
-
    class Example_0 {
-        func f_0() {
-            class Example_1 {
-                func f_1() {
-                    func f_2() {
-                        ↓class Example_2 {}
-                        ↓func f_3() {}
-                    }
-                }
-            }
-        }
-    }
-
-
    class Example_0 {
-        func f_0() {
-            switch example {
-            case .exampleCase:
-                class Example_1 {
-                    func f_1() {
-                        func f_2() {
-                            ↓class Example_2 {}
-                            ↓func f_3() {}
-                        }
-                    }
-                }
-            default:
-                exampleFunc(closure: {
-                    class Example_1 {
-                        func f_1() {
-                            func f_2() {
-                                ↓class Example_2 {}
-                                ↓func f_3() {}
-                            }
-                        }
-                    }
-                })
-            }
-        }
-    }
-
-
    struct Example_0 {
-        func f_0() {
-            struct Example_1 {
-                func f_1() {
-                    func f_2() {
-                        ↓struct Example_2 {}
-                        ↓func f_3() {}
-                    }
-                }
-            }
-        }
-    }
-
-
    struct Example_0 {
-        func f_0() {
-            switch example {
-            case .exampleCase:
-                struct Example_1 {
-                    func f_1() {
-                        func f_2() {
-                            ↓struct Example_2 {}
-                            ↓func f_3() {}
-                        }
-                    }
-                }
-            default:
-                exampleFunc(closure: {
-                    struct Example_1 {
-                        func f_1() {
-                            func f_2() {
-                                ↓struct Example_2 {}
-                                ↓func f_3() {}
-                            }
-                        }
-                    }
-                })
-            }
-        }
-    }
-
-
    enum Example_0 {
-        func f_0() {
-            enum Example_1 {
-                func f_1() {
-                    func f_2() {
-                        ↓enum Example_2 {}
-                        ↓func f_3() {}
-                    }
-                }
-            }
-        }
-    }
-
-
    enum Example_0 {
-        func f_0() {
-            switch example {
-            case .exampleCase:
-                enum Example_1 {
-                    func f_1() {
-                        func f_2() {
-                            ↓enum Example_2 {}
-                            ↓func f_3() {}
-                        }
-                    }
-                }
-            default:
-                exampleFunc(closure: {
-                    enum Example_1 {
-                        func f_1() {
-                            func f_2() {
-                                ↓enum Example_2 {}
-                                ↓func f_3() {}
-                            }
-                        }
-                    }
-                })
-            }
-        }
-    }
-
- -
-
- - -
-
- - - - diff --git a/nimble_operator.html b/nimble_operator.html deleted file mode 100644 index 2201c942a..000000000 --- a/nimble_operator.html +++ /dev/null @@ -1,417 +0,0 @@ - - - - nimble_operator Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Nimble Operator

- -

Prefer Nimble operator overloads over free matcher functions.

- -
    -
  • Identifier: nimble_operator
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
expect(seagull.squawk) != "Hi!"
-
-
-
expect("Hi!") == "Hi!"
-
-
-
expect(10) > 2
-
-
-
expect(10) >= 10
-
-
-
expect(10) < 11
-
-
-
expect(10) <= 10
-
-
-
expect(x) === x
-
-
expect(10) == 10
-
-
expect(success) == true
-
-
expect(object.asyncFunction()).toEventually(equal(1))
-
-
-
expect(actual).to(haveCount(expected))
-
-
-
foo.method {
-    expect(value).to(equal(expectedValue), description: "Failed")
-    return Bar(value: ())
-}
-
-

Triggering Examples

-
↓expect(seagull.squawk).toNot(equal("Hi"))
-
-
-
↓expect(12).toNot(equal(10))
-
-
-
↓expect(10).to(equal(10))
-
-
-
↓expect(10, line: 1).to(equal(10))
-
-
-
↓expect(10).to(beGreaterThan(8))
-
-
-
↓expect(10).to(beGreaterThanOrEqualTo(10))
-
-
-
↓expect(10).to(beLessThan(11))
-
-
-
↓expect(10).to(beLessThanOrEqualTo(10))
-
-
-
↓expect(x).to(beIdenticalTo(x))
-
-
-
↓expect(success).to(beTrue())
-
-
-
↓expect(success).to(beFalse())
-
-
-
expect(10) > 2
- ↓expect(10).to(beGreaterThan(2))
-
-
- -
-
- - -
-
- - - - diff --git a/no_extension_access_modifier.html b/no_extension_access_modifier.html deleted file mode 100644 index cf33d3c34..000000000 --- a/no_extension_access_modifier.html +++ /dev/null @@ -1,362 +0,0 @@ - - - - no_extension_access_modifier Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

No Extension Access Modifier

- -

Prefer not to use extension access modifiers

- -
    -
  • Identifier: no_extension_access_modifier
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: error
  • -
-

Non Triggering Examples

-
extension String {}
-
-

-
- extension String {}
-
-

Triggering Examples

-
↓private extension String {}
-
-
↓public 
- extension String {}
-
-
↓open extension String {}
-
-
↓internal extension String {}
-
-
↓fileprivate extension String {}
-
- -
-
- - -
-
- - - - diff --git a/no_fallthrough_only.html b/no_fallthrough_only.html deleted file mode 100644 index cdfd769fd..000000000 --- a/no_fallthrough_only.html +++ /dev/null @@ -1,481 +0,0 @@ - - - - no_fallthrough_only Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

No Fallthrough Only

- -

Fallthroughs can only be used if the case contains at least one other statement.

- -
    -
  • Identifier: no_fallthrough_only
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
switch myvar {
-case 1:
-    var a = 1
-    fallthrough
-case 2:
-    var a = 2
-}
-
-
switch myvar {
-case "a":
-    var one = 1
-    var two = 2
-    fallthrough
-case "b": /* comment */
-    var three = 3
-}
-
-
switch myvar {
-case 1:
-    let one = 1
-case 2:
-    // comment
-    var two = 2
-}
-
-
switch myvar {
-case MyFunc(x: [1, 2, YourFunc(a: 23)], y: 2):
-    var three = 3
-    fallthrough
-default:
-    var three = 4
-}
-
-
switch myvar {
-case .alpha:
-    var one = 1
-case .beta:
-    var three = 3
-    fallthrough
-default:
-    var four = 4
-}
-
-
let aPoint = (1, -1)
-switch aPoint {
-case let (x, y) where x == y:
-    let A = "A"
-case let (x, y) where x == -y:
-    let B = "B"
-    fallthrough
-default:
-    let C = "C"
-}
-
-
switch myvar {
-case MyFun(with: { $1 }):
-    let one = 1
-    fallthrough
-case "abc":
-    let two = 2
-}
-
-
switch enumInstance {
-case .caseA:
-    print("it's a")
-case .caseB:
-    fallthrough
-@unknown default:
-    print("it's not a")
-}
-
-

Triggering Examples

-
switch myvar {
-case 1:
-    ↓fallthrough
-case 2:
-    var a = 1
-}
-
-
switch myvar {
-case 1:
-    var a = 2
-case 2:
-    ↓fallthrough
-case 3:
-    var a = 3
-}
-
-
switch myvar {
-case 1: // comment
-    ↓fallthrough
-}
-
-
switch myvar {
-case 1: /* multi
-    line
-    comment */
-    ↓fallthrough
-case 2:
-    var a = 2
-}
-
-
switch myvar {
-case MyFunc(x: [1, 2, YourFunc(a: 23)], y: 2):
-    ↓fallthrough
-default:
-    var three = 4
-}
-
-
switch myvar {
-case .alpha:
-    var one = 1
-case .beta:
-    ↓fallthrough
-case .gamma:
-    var three = 3
-default:
-    var four = 4
-}
-
-
let aPoint = (1, -1)
-switch aPoint {
-case let (x, y) where x == y:
-    let A = "A"
-case let (x, y) where x == -y:
-    ↓fallthrough
-default:
-    let B = "B"
-}
-
-
switch myvar {
-case MyFun(with: { $1 }):
-    ↓fallthrough
-case "abc":
-    let two = 2
-}
-
- -
-
- - -
-
- - - - diff --git a/no_grouping_extension.html b/no_grouping_extension.html deleted file mode 100644 index 685df7c09..000000000 --- a/no_grouping_extension.html +++ /dev/null @@ -1,373 +0,0 @@ - - - - no_grouping_extension Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

No Grouping Extension

- -

Extensions shouldn’t be used to group code within the same source file.

- -
    -
  • Identifier: no_grouping_extension
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
protocol Food {}
-extension Food {}
-
-
-
class Apples {}
-extension Oranges {}
-
-
-
class Box<T> {}
-extension Box where T: Vegetable {}
-
-
-

Triggering Examples

-
enum Fruit {}
-↓extension Fruit {}
-
-
-
↓extension Tea: Error {}
-struct Tea {}
-
-
-
class Ham { class Spam {}}
-↓extension Ham.Spam {}
-
-
-
extension External { struct Gotcha {}}
-↓extension External.Gotcha {}
-
-
- -
-
- - -
-
- - - - diff --git a/no_space_in_method_call.html b/no_space_in_method_call.html deleted file mode 100644 index be3fcc67b..000000000 --- a/no_space_in_method_call.html +++ /dev/null @@ -1,379 +0,0 @@ - - - - no_space_in_method_call Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

No Space in Method Call

- -

Don’t add a space between the method name and the parentheses.

- -
    -
  • Identifier: no_space_in_method_call
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
foo()
-
-
object.foo()
-
-
object.foo(1)
-
-
object.foo(value: 1)
-
-
object.foo { print($0 }
-
-
list.sorted { $0.0 < $1.0 }.map { $0.value }
-
-
self.init(rgb: (Int) (colorInt))
-
-
Button {
-    print("Button tapped")
-} label: {
-    Text("Button")
-}
-
-

Triggering Examples

-
foo↓ ()
-
-
object.foo↓ ()
-
-
object.foo↓ (1)
-
-
object.foo↓ (value: 1)
-
-
object.foo↓ () {}
-
-
object.foo↓     ()
-
-
object.foo↓     (value: 1) { x in print(x) }
-
- -
-
- - -
-
- - - - diff --git a/notification_center_detachment.html b/notification_center_detachment.html deleted file mode 100644 index 5f5a26395..000000000 --- a/notification_center_detachment.html +++ /dev/null @@ -1,363 +0,0 @@ - - - - notification_center_detachment Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Notification Center Detachment

- -

An object should only remove itself as an observer in deinit.

- -
    -
  • Identifier: notification_center_detachment
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class Foo {
-   deinit {
-       NotificationCenter.default.removeObserver(self)
-   }
-}
-
-
class Foo {
-   func bar() {
-       NotificationCenter.default.removeObserver(otherObject)
-   }
-}
-
-

Triggering Examples

-
class Foo {
-   func bar() {
-       ↓NotificationCenter.default.removeObserver(self)
-   }
-}
-
- -
-
- - -
-
- - - - diff --git a/nslocalizedstring_key.html b/nslocalizedstring_key.html deleted file mode 100644 index e0f1d5b4a..000000000 --- a/nslocalizedstring_key.html +++ /dev/null @@ -1,366 +0,0 @@ - - - - nslocalizedstring_key Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

NSLocalizedString Key

- -

Static strings should be used as key/comment in NSLocalizedString in order for genstrings to work.

- -
    -
  • Identifier: nslocalizedstring_key
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
NSLocalizedString("key", comment: "")
-
-
NSLocalizedString("key" + "2", comment: "")
-
-
NSLocalizedString("key", comment: "comment")
-
-
NSLocalizedString("This is a multi-" +
-    "line string", comment: "")
-
-
let format = NSLocalizedString("%@, %@.", comment: "Accessibility label for a post in the post list." +
-" The parameters are the title, and date respectively." +
-" For example, "Let it Go, 1 hour ago."")
-
-

Triggering Examples

-
NSLocalizedString(↓method(), comment: "")
-
-
NSLocalizedString(↓"key_\(param)", comment: "")
-
-
NSLocalizedString("key", comment: ↓"comment with \(param)")
-
-
NSLocalizedString(↓"key_\(param)", comment: ↓method())
-
- -
-
- - -
-
- - - - diff --git a/nslocalizedstring_require_bundle.html b/nslocalizedstring_require_bundle.html deleted file mode 100644 index 152e37fee..000000000 --- a/nslocalizedstring_require_bundle.html +++ /dev/null @@ -1,364 +0,0 @@ - - - - nslocalizedstring_require_bundle Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

NSLocalizedString Require Bundle

- -

Calls to NSLocalizedString should specify the bundle which contains the strings file.

- -
    -
  • Identifier: nslocalizedstring_require_bundle
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
NSLocalizedString("someKey", bundle: .main, comment: "test")
-
-
NSLocalizedString("someKey", tableName: "a",
-                  bundle: Bundle(for: A.self),
-                  comment: "test")
-
-
NSLocalizedString("someKey", tableName: "xyz",
-                  bundle: someBundle, value: "test"
-                  comment: "test")
-
-
arbitraryFunctionCall("something")
-
-

Triggering Examples

-
↓NSLocalizedString("someKey", comment: "test")
-
-
↓NSLocalizedString("someKey", tableName: "a", comment: "test")
-
-
↓NSLocalizedString("someKey", tableName: "xyz",
-                  value: "test", comment: "test")
-
- -
-
- - -
-
- - - - diff --git a/nsobject_prefer_isequal.html b/nsobject_prefer_isequal.html deleted file mode 100644 index 441bbea87..000000000 --- a/nsobject_prefer_isequal.html +++ /dev/null @@ -1,417 +0,0 @@ - - - - nsobject_prefer_isequal Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

NSObject Prefer isEqual

- -

NSObject subclasses should implement isEqual instead of ==.

- -
    -
  • Identifier: nsobject_prefer_isequal
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class AClass: NSObject {
-}
-
-
@objc class AClass: SomeNSObjectSubclass {
-}
-
-
class AClass: Equatable {
-    static func ==(lhs: AClass, rhs: AClass) -> Bool {
-        return true
-    }
-
-
class AClass: NSObject {
-    override func isEqual(_ object: Any?) -> Bool {
-        return true
-    }
-}
-
-
@objc class AClass: SomeNSObjectSubclass {
-    override func isEqual(_ object: Any?) -> Bool {
-        return false
-    }
-}
-
-
class AClass: NSObject {
-    static func ==(lhs: AClass, rhs: BClass) -> Bool {
-        return true
-    }
-}
-
-
struct AStruct: Equatable {
-    static func ==(lhs: AStruct, rhs: AStruct) -> Bool {
-        return false
-    }
-}
-
-
enum AnEnum: Equatable {
-    static func ==(lhs: AnEnum, rhs: AnEnum) -> Bool {
-        return true
-    }
-}
-
-

Triggering Examples

-
class AClass: NSObject {
-    ↓static func ==(lhs: AClass, rhs: AClass) -> Bool {
-        return false
-    }
-}
-
-
@objc class AClass: SomeOtherNSObjectSubclass {
-    ↓static func ==(lhs: AClass, rhs: AClass) -> Bool {
-        return true
-    }
-}
-
-
class AClass: NSObject, Equatable {
-    ↓static func ==(lhs: AClass, rhs: AClass) -> Bool {
-        return false
-    }
-}
-
-
class AClass: NSObject {
-    override func isEqual(_ object: Any?) -> Bool {
-        guard let other = object as? AClass else {
-            return false
-        }
-        return true
-    }
-
-    ↓static func ==(lhs: AClass, rhs: AClass) -> Bool {
-        return false
-    }
-}
-
- -
-
- - -
-
- - - - diff --git a/number_separator.html b/number_separator.html deleted file mode 100644 index 74b07b95e..000000000 --- a/number_separator.html +++ /dev/null @@ -1,495 +0,0 @@ - - - - number_separator Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Number Separator

- -

Underscores should be used as thousand separator in large decimal numbers.

- -
    -
  • Identifier: number_separator
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, minimum_length: 0, minimum_fraction_length: none
  • -
-

Non Triggering Examples

-
let foo = -100
-
-
let foo = -1_000
-
-
let foo = -1_000_000
-
-
let foo = -1.000_1
-
-
let foo = -1_000_000.000_000_1
-
-
let binary = -0b10000
-
-
let binary = -0b1000_0001
-
-
let hex = -0xA
-
-
let hex = -0xAA_BB
-
-
let octal = -0o21
-
-
let octal = -0o21_1
-
-
let exp = -1_000_000.000_000e2
-
-
let foo: Double = -(200)
-
-
let foo: Double = -(200 / 447.214)
-
-
let foo = +100
-
-
let foo = +1_000
-
-
let foo = +1_000_000
-
-
let foo = +1.000_1
-
-
let foo = +1_000_000.000_000_1
-
-
let binary = +0b10000
-
-
let binary = +0b1000_0001
-
-
let hex = +0xA
-
-
let hex = +0xAA_BB
-
-
let octal = +0o21
-
-
let octal = +0o21_1
-
-
let exp = +1_000_000.000_000e2
-
-
let foo: Double = +(200)
-
-
let foo: Double = +(200 / 447.214)
-
-
let foo = 100
-
-
let foo = 1_000
-
-
let foo = 1_000_000
-
-
let foo = 1.000_1
-
-
let foo = 1_000_000.000_000_1
-
-
let binary = 0b10000
-
-
let binary = 0b1000_0001
-
-
let hex = 0xA
-
-
let hex = 0xAA_BB
-
-
let octal = 0o21
-
-
let octal = 0o21_1
-
-
let exp = 1_000_000.000_000e2
-
-
let foo: Double = (200)
-
-
let foo: Double = (200 / 447.214)
-
-

Triggering Examples

-
let foo = ↓-10_0
-
-
let foo = ↓-1000
-
-
let foo = ↓-1000e2
-
-
let foo = ↓-1000E2
-
-
let foo = ↓-1__000
-
-
let foo = ↓-1.0001
-
-
let foo = ↓-1_000_000.000000_1
-
-
let foo = ↓-1000000.000000_1
-
-
let foo = +↓10_0
-
-
let foo = +↓1000
-
-
let foo = +↓1000e2
-
-
let foo = +↓1000E2
-
-
let foo = +↓1__000
-
-
let foo = +↓1.0001
-
-
let foo = +↓1_000_000.000000_1
-
-
let foo = +↓1000000.000000_1
-
-
let foo = ↓10_0
-
-
let foo = ↓1000
-
-
let foo = ↓1000e2
-
-
let foo = ↓1000E2
-
-
let foo = ↓1__000
-
-
let foo = ↓1.0001
-
-
let foo = ↓1_000_000.000000_1
-
-
let foo = ↓1000000.000000_1
-
-
let foo: Double = ↓-(100000)
-
-
let foo: Double = ↓-(10.000000_1)
-
-
let foo: Double = ↓-(123456 / ↓447.214214)
-
-
let foo: Double = +(↓100000)
-
-
let foo: Double = +(↓10.000000_1)
-
-
let foo: Double = +(↓123456 / ↓447.214214)
-
-
let foo: Double = (↓100000)
-
-
let foo: Double = (↓10.000000_1)
-
-
let foo: Double = (↓123456 / ↓447.214214)
-
- -
-
- - -
-
- - - - diff --git a/object_literal.html b/object_literal.html deleted file mode 100644 index 1031f43da..000000000 --- a/object_literal.html +++ /dev/null @@ -1,393 +0,0 @@ - - - - object_literal Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Object Literal

- -

Prefer object literals over image and color inits.

- -
    -
  • Identifier: object_literal
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, image_literal: true, color_literal: true
  • -
-

Non Triggering Examples

-
let image = #imageLiteral(resourceName: "image.jpg")
-
-
let color = #colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)
-
-
let image = UIImage(named: aVariable)
-
-
let image = UIImage(named: "interpolated \(variable)")
-
-
let color = UIColor(red: value, green: value, blue: value, alpha: 1)
-
-
let image = NSImage(named: aVariable)
-
-
let image = NSImage(named: "interpolated \(variable)")
-
-
let color = NSColor(red: value, green: value, blue: value, alpha: 1)
-
-

Triggering Examples

-
let image = ↓UIImage(named: "foo")
-
-
let color = ↓UIColor(red: 0.3, green: 0.3, blue: 0.3, alpha: 1)
-
-
let color = ↓UIColor(red: 100 / 255.0, green: 50 / 255.0, blue: 0, alpha: 1)
-
-
let color = ↓UIColor(white: 0.5, alpha: 1)
-
-
let image = ↓NSImage(named: "foo")
-
-
let color = ↓NSColor(red: 0.3, green: 0.3, blue: 0.3, alpha: 1)
-
-
let color = ↓NSColor(red: 100 / 255.0, green: 50 / 255.0, blue: 0, alpha: 1)
-
-
let color = ↓NSColor(white: 0.5, alpha: 1)
-
-
let image = ↓UIImage.init(named: "foo")
-
-
let color = ↓UIColor.init(red: 0.3, green: 0.3, blue: 0.3, alpha: 1)
-
-
let color = ↓UIColor.init(red: 100 / 255.0, green: 50 / 255.0, blue: 0, alpha: 1)
-
-
let color = ↓UIColor.init(white: 0.5, alpha: 1)
-
-
let image = ↓NSImage.init(named: "foo")
-
-
let color = ↓NSColor.init(red: 0.3, green: 0.3, blue: 0.3, alpha: 1)
-
-
let color = ↓NSColor.init(red: 100 / 255.0, green: 50 / 255.0, blue: 0, alpha: 1)
-
-
let color = ↓NSColor.init(white: 0.5, alpha: 1)
-
- -
-
- - -
-
- - - - diff --git a/opening_brace.html b/opening_brace.html deleted file mode 100644 index cf0a180bb..000000000 --- a/opening_brace.html +++ /dev/null @@ -1,485 +0,0 @@ - - - - opening_brace Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Opening Brace Spacing

- -

Opening braces should be preceded by a single space and on the same line as the declaration.

- -
    -
  • Identifier: opening_brace
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, allowMultilineFunc: false
  • -
-

Non Triggering Examples

-
func abc() {
-}
-
-
[].map() { $0 }
-
-
[].map({ })
-
-
if let a = b { }
-
-
while a == b { }
-
-
guard let a = b else { }
-
-
if
-    let a = b,
-    let c = d
-    where a == c
-{ }
-
-
while
-    let a = b,
-    let c = d
-    where a == c
-{ }
-
-
guard
-    let a = b,
-    let c = d
-    where a == c else
-{ }
-
-
struct Rule {}
-
-
-
struct Parent {
-    struct Child {
-        let foo: Int
-    }
-}
-
-
-
func f(rect: CGRect) {
-    {
-        let centre = CGPoint(x: rect.midX, y: rect.midY)
-        print(centre)
-    }()
-}
-
-
func f(rect: CGRect) -> () -> Void {
-    {
-        let centre = CGPoint(x: rect.midX, y: rect.midY)
-        print(centre)
-    }
-}
-
-
func f() -> () -> Void {
-    {}
-}
-
-

Triggering Examples

-
func abc()↓{
-}
-
-
func abc()
-    ↓{ }
-
-
func abc(a: A
-    b: B)
-↓{
-
-
[].map()↓{ $0 }
-
-
[].map( ↓{ } )
-
-
if let a = b↓{ }
-
-
while a == b↓{ }
-
-
guard let a = b else↓{ }
-
-
if
-    let a = b,
-    let c = d
-    where a == c↓{ }
-
-
while
-    let a = b,
-    let c = d
-    where a == c↓{ }
-
-
guard
-    let a = b,
-    let c = d
-    where a == c else↓{ }
-
-
struct Rule↓{}
-
-
-
struct Rule
-↓{
-}
-
-
-
struct Rule
-
-    ↓{
-}
-
-
-
struct Parent {
-    struct Child
-    ↓{
-        let foo: Int
-    }
-}
-
-
-
// Get the current thread's TLS pointer. On first call for a given thread,
-// creates and initializes a new one.
-internal static func getPointer()
-  -> UnsafeMutablePointer<_ThreadLocalStorage>
-{ // <- here
-  return _swift_stdlib_threadLocalStorageGet().assumingMemoryBound(
-    to: _ThreadLocalStorage.self)
-}
-
-
func run_Array_method1x(_ N: Int) {
-  let existentialArray = array!
-  for _ in 0 ..< N * 100 {
-    for elt in existentialArray {
-      if !elt.doIt()  {
-        fatalError("expected true")
-      }
-    }
-  }
-}
-
-func run_Array_method2x(_ N: Int) {
-
-}
-
- -
-
- - -
-
- - - - diff --git a/operator_usage_whitespace.html b/operator_usage_whitespace.html deleted file mode 100644 index 73f0efb2f..000000000 --- a/operator_usage_whitespace.html +++ /dev/null @@ -1,482 +0,0 @@ - - - - operator_usage_whitespace Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Operator Usage Whitespace

- -

Operators should be surrounded by a single whitespace when they are being used.

- -
    -
  • Identifier: operator_usage_whitespace
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, lines_look_around: 2, skip_aligned_constants: true
  • -
-

Non Triggering Examples

-
let foo = 1 + 2
-
-
-
let foo = 1 > 2
-
-
-
let foo = !false
-
-
-
let foo: Int?
-
-
-
let foo: Array<String>
-
-
-
let model = CustomView<Container<Button>, NSAttributedString>()
-
-
-
let foo: [String]
-
-
-
let foo = 1 + 
-  2
-
-
-
let range = 1...3
-
-
-
let range = 1 ... 3
-
-
-
let range = 1..<3
-
-
-
#if swift(>=3.0)
-    foo()
-#endif
-
-
-
array.removeAtIndex(-200)
-
-
-
let name = "image-1"
-
-
-
button.setImage(#imageLiteral(resourceName: "image-1"), for: .normal)
-
-
-
let doubleValue = -9e-11
-
-
-
let foo = GenericType<(UIViewController) -> Void>()
-
-
-
let foo = Foo<Bar<T>, Baz>()
-
-
-
let foo = SignalProducer<Signal<Value, Error>, Error>([ self.signal, next ]).flatten(.concat)
-
-
-
"let foo =  1"
-
-
  enum Enum {
-  case hello   = 1
-  case hello2  = 1
-  }
-
-

Triggering Examples

-
let foo = 1↓+2
-
-
-
let foo = 1↓   + 2
-
-
-
let foo = 1↓   +    2
-
-
-
let foo = 1↓ +    2
-
-
-
let foo↓=1↓+2
-
-
-
let foo↓=1 + 2
-
-
-
let foo↓=bar
-
-
-
let range = 1↓ ..<  3
-
-
-
let foo = bar↓   ?? 0
-
-
-
let foo = bar↓??0
-
-
-
let foo = bar↓ !=  0
-
-
-
let foo = bar↓ !==  bar2
-
-
-
let v8 = Int8(1)↓  << 6
-
-
-
let v8 = 1↓ <<  (6)
-
-
-
let v8 = 1↓ <<  (6)
- let foo = 1 > 2
-
-
-
let foo↓  = [1]
-
-
-
let foo↓  = "1"
-
-
-
let foo↓ =  "1"
-
-
-
  enum Enum {
-  case one↓  =  1
-  case two  = 1
-  }
-
-
  enum Enum {
-  case one  = 1
-  case two↓  =  1
-  }
-
-
  enum Enum {
-  case one↓   = 1
-  case two↓  = 1
-  }
-
- -
-
- - -
-
- - - - diff --git a/operator_whitespace.html b/operator_whitespace.html deleted file mode 100644 index 317c7b66c..000000000 --- a/operator_whitespace.html +++ /dev/null @@ -1,372 +0,0 @@ - - - - operator_whitespace Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Operator Function Whitespace

- -

Operators should be surrounded by a single whitespace when defining them.

- -
    -
  • Identifier: operator_whitespace
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
func <| (lhs: Int, rhs: Int) -> Int {}
-
-
-
func <|< <A>(lhs: A, rhs: A) -> A {}
-
-
-
func abc(lhs: Int, rhs: Int) -> Int {}
-
-
-

Triggering Examples

-
↓func <|(lhs: Int, rhs: Int) -> Int {}
-
-
-
↓func <|<<A>(lhs: A, rhs: A) -> A {}
-
-
-
↓func <|  (lhs: Int, rhs: Int) -> Int {}
-
-
-
↓func <|<  <A>(lhs: A, rhs: A) -> A {}
-
-
-
↓func  <| (lhs: Int, rhs: Int) -> Int {}
-
-
-
↓func  <|< <A>(lhs: A, rhs: A) -> A {}
-
-
- -
-
- - -
-
- - - - diff --git a/optional_enum_case_matching.html b/optional_enum_case_matching.html deleted file mode 100644 index b87776c63..000000000 --- a/optional_enum_case_matching.html +++ /dev/null @@ -1,397 +0,0 @@ - - - - optional_enum_case_matching Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Optional Enum Case Match

- -

Matching an enum case against an optional enum without ‘?’ is supported on Swift 5.1 and above.

- -
    -
  • Identifier: optional_enum_case_matching
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.1.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
switch foo {
- case .bar: break
- case .baz: break
- default: break
-}
-
-
switch foo {
- case (.bar, .baz): break
- case (.bar, _): break
- case (_, .baz): break
- default: break
-}
-
-
switch (x, y) {
-case (.c, _?):
-    break
-case (.c, nil):
-    break
-case (_, _):
-    break
-}
-
-

Triggering Examples

-
switch foo {
- case .bar↓?: break
- case .baz: break
- default: break
-}
-
-
switch foo {
- case Foo.bar↓?: break
- case .baz: break
- default: break
-}
-
-
switch foo {
- case .bar↓?, .baz↓?: break
- default: break
-}
-
-
switch foo {
- case .bar↓? where x > 1: break
- case .baz: break
- default: break
-}
-
-
switch foo {
- case (.bar↓?, .baz↓?): break
- case (.bar↓?, _): break
- case (_, .bar↓?): break
- default: break
-}
-
- -
-
- - -
-
- - - - diff --git a/orphaned_doc_comment.html b/orphaned_doc_comment.html deleted file mode 100644 index 4fad64935..000000000 --- a/orphaned_doc_comment.html +++ /dev/null @@ -1,369 +0,0 @@ - - - - orphaned_doc_comment Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Orphaned Doc Comment

- -

A doc comment should be attached to a declaration.

- -
    -
  • Identifier: orphaned_doc_comment
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
/// My great property
-var myGreatProperty: String!
-
-
//////////////////////////////////////
-//
-// Copyright header.
-//
-//////////////////////////////////////
-
-
/// Look here for more info: https://github.com.
-var myGreatProperty: String!
-
-
/// Look here for more info:
-/// https://github.com.
-var myGreatProperty: String!
-
-

Triggering Examples

-
↓/// My great property
-// Not a doc string
-var myGreatProperty: String!
-
-
↓/// Look here for more info: https://github.com.
-// Not a doc string
-var myGreatProperty: String!
-
- -
-
- - -
-
- - - - diff --git a/overridden_super_call.html b/overridden_super_call.html deleted file mode 100644 index e54d30240..000000000 --- a/overridden_super_call.html +++ /dev/null @@ -1,397 +0,0 @@ - - - - overridden_super_call Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Overridden methods call super

- -

Some overridden methods should always call super

- -
    -
  • Identifier: overridden_super_call
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, excluded: [], included: [“*”]
  • -
-

Non Triggering Examples

-
class VC: UIViewController {
-    override func viewWillAppear(_ animated: Bool) {
-        super.viewWillAppear(animated)
-    }
-}
-
-
class VC: UIViewController {
-    override func viewWillAppear(_ animated: Bool) {
-        self.method1()
-        super.viewWillAppear(animated)
-        self.method2()
-    }
-}
-
-
class VC: UIViewController {
-    override func loadView() {
-    }
-}
-
-
class Some {
-    func viewWillAppear(_ animated: Bool) {
-    }
-}
-
-
class VC: UIViewController {
-    override func viewDidLoad() {
-    defer {
-        super.viewDidLoad()
-        }
-    }
-}
-
-

Triggering Examples

-
class VC: UIViewController {
-    override func viewWillAppear(_ animated: Bool) {↓
-        //Not calling to super
-        self.method()
-    }
-}
-
-
class VC: UIViewController {
-    override func viewWillAppear(_ animated: Bool) {↓
-        super.viewWillAppear(animated)
-        //Other code
-        super.viewWillAppear(animated)
-    }
-}
-
-
class VC: UIViewController {
-    override func didReceiveMemoryWarning() {↓
-    }
-}
-
- -
-
- - -
-
- - - - diff --git a/override_in_extension.html b/override_in_extension.html deleted file mode 100644 index 50e54a7f3..000000000 --- a/override_in_extension.html +++ /dev/null @@ -1,382 +0,0 @@ - - - - override_in_extension Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Override in Extension

- -

Extensions shouldn’t override declarations.

- -
    -
  • Identifier: override_in_extension
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
extension Person {
-  var age: Int { return 42 }
-}
-
-
-
extension Person {
-  func celebrateBirthday() {}
-}
-
-
-
class Employee: Person {
-  override func celebrateBirthday() {}
-}
-
-
-
class Foo: NSObject {}
-extension Foo {
-    override var description: String { return "" }
-}
-
-
struct Foo {
-    class Bar: NSObject {}
-}
-extension Foo.Bar {
-    override var description: String { return "" }
-}
-
-

Triggering Examples

-
extension Person {
-  override ↓var age: Int { return 42 }
-}
-
-
-
extension Person {
-  override ↓func celebrateBirthday() {}
-}
-
-
- -
-
- - -
-
- - - - diff --git a/pattern_matching_keywords.html b/pattern_matching_keywords.html deleted file mode 100644 index 940085139..000000000 --- a/pattern_matching_keywords.html +++ /dev/null @@ -1,413 +0,0 @@ - - - - pattern_matching_keywords Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Pattern Matching Keywords

- -

Combine multiple pattern matching bindings by moving keywords out of tuples.

- -
    -
  • Identifier: pattern_matching_keywords
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
switch foo {
-    default: break
-}
-
-
switch foo {
-    case 1: break
-}
-
-
switch foo {
-    case bar: break
-}
-
-
switch foo {
-    case let (x, y): break
-}
-
-
switch foo {
-    case .foo(let x): break
-}
-
-
switch foo {
-    case let .foo(x, y): break
-}
-
-
switch foo {
-    case .foo(let x), .bar(let x): break
-}
-
-
switch foo {
-    case .foo(let x, var y): break
-}
-
-
switch foo {
-    case var (x, y): break
-}
-
-
switch foo {
-    case .foo(var x): break
-}
-
-
switch foo {
-    case var .foo(x, y): break
-}
-
-

Triggering Examples

-
switch foo {
-    case (↓let x,  ↓let y): break
-}
-
-
switch foo {
-    case .foo(↓let x, ↓let y): break
-}
-
-
switch foo {
-    case (.yamlParsing(↓let x), .yamlParsing(↓let y)): break
-}
-
-
switch foo {
-    case (↓var x,  ↓var y): break
-}
-
-
switch foo {
-    case .foo(↓var x, ↓var y): break
-}
-
-
switch foo {
-    case (.yamlParsing(↓var x), .yamlParsing(↓var y)): break
-}
-
- -
-
- - -
-
- - - - diff --git a/prefer_nimble.html b/prefer_nimble.html deleted file mode 100644 index b77cb3707..000000000 --- a/prefer_nimble.html +++ /dev/null @@ -1,361 +0,0 @@ - - - - prefer_nimble Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Prefer Nimble

- -

Prefer Nimble matchers over XCTAssert functions.

- -
    -
  • Identifier: prefer_nimble
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
expect(foo) == 1
-
-
expect(foo).to(equal(1))
-
-

Triggering Examples

-
↓XCTAssertTrue(foo)
-
-
↓XCTAssertEqual(foo, 2)
-
-
↓XCTAssertNotEqual(foo, 2)
-
-
↓XCTAssertNil(foo)
-
-
↓XCTAssert(foo)
-
-
↓XCTAssertGreaterThan(foo, 10)
-
- -
-
- - -
-
- - - - diff --git a/prefer_self_in_static_references.html b/prefer_self_in_static_references.html deleted file mode 100644 index 6cd61e32e..000000000 --- a/prefer_self_in_static_references.html +++ /dev/null @@ -1,391 +0,0 @@ - - - - prefer_self_in_static_references Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Prefer Self in Static References

- -

Static references should be prefixed by Self instead of the class name.

- -
    -
  • Identifier: prefer_self_in_static_references
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: N/A
  • -
-

Non Triggering Examples

-
    class C {
-        static let primes = [2, 3, 5, 7]
-        func isPrime(i: Int) -> Bool { Self.primes.contains(i) }
-
-
    struct T {
-        static let i = 0
-    }
-    struct S {
-        static let i = 0
-    }
-    extension T {
-        static let j = S.i + T.i
-        static let k = { T.j }()
-    }
-
-
    class `Self` {
-        static let i = 0
-        func f() -> Int { Self.i }
-    }
-
-

Triggering Examples

-
    class C {
-        struct S {
-            static let i = 2
-            let h = ↓S.i
-        }
-        static let i = 1
-        let h = C.i
-        func f() -> Int { ↓C.i + h }
-    }
-
-
struct S {
-    static let i = 1
-    static func f() -> Int { ↓S.i }
-    func g() -> Any { ↓S.self }
-}
-
-
    struct S {
-        struct T {
-            static let i = 3
-        }
-        struct R {
-            static let j = S.T.i
-        }
-        static let h = ↓S.T.i + ↓S.R.j
-    }
-
- -
-
- - -
-
- - - - diff --git a/prefer_self_type_over_type_of_self.html b/prefer_self_type_over_type_of_self.html deleted file mode 100644 index 023ba0566..000000000 --- a/prefer_self_type_over_type_of_self.html +++ /dev/null @@ -1,387 +0,0 @@ - - - - prefer_self_type_over_type_of_self Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Prefer Self Type Over Type of Self

- -

Prefer Self over type(of: self) when accessing properties or calling methods.

- -
    -
  • Identifier: prefer_self_type_over_type_of_self
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.1.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class Foo {
-    func bar() {
-        Self.baz()
-    }
-}
-
-
class Foo {
-    func bar() {
-        print(Self.baz)
-    }
-}
-
-
class A {
-    func foo(param: B) {
-        type(of: param).bar()
-    }
-}
-
-
class A {
-    func foo() {
-        print(type(of: self))
-    }
-}
-
-

Triggering Examples

-
class Foo {
-    func bar() {
-        ↓type(of: self).baz()
-    }
-}
-
-
class Foo {
-    func bar() {
-        print(↓type(of: self).baz)
-    }
-}
-
-
class Foo {
-    func bar() {
-        print(↓Swift.type(of: self).baz)
-    }
-}
-
- -
-
- - -
-
- - - - diff --git a/prefer_zero_over_explicit_init.html b/prefer_zero_over_explicit_init.html deleted file mode 100644 index 0c98e9597..000000000 --- a/prefer_zero_over_explicit_init.html +++ /dev/null @@ -1,365 +0,0 @@ - - - - prefer_zero_over_explicit_init Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Prefer Zero Over Explicit Init

- -

Prefer .zero over explicit init with zero parameters (e.g. CGPoint(x: 0, y: 0))

- -
    -
  • Identifier: prefer_zero_over_explicit_init
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
CGRect(x: 0, y: 0, width: 0, height: 1)
-
-
CGPoint(x: 0, y: -1)
-
-
CGSize(width: 2, height: 4)
-
-
CGVector(dx: -5, dy: 0)
-
-

Triggering Examples

-
↓CGPoint(x: 0, y: 0)
-
-
↓CGPoint(x: 0.000000, y: 0)
-
-
↓CGPoint(x: 0.000000, y: 0.000)
-
-
↓CGRect(x: 0, y: 0, width: 0, height: 0)
-
-
↓CGSize(width: 0, height: 0)
-
-
↓CGVector(dx: 0, dy: 0)
-
- -
-
- - -
-
- - - - diff --git a/prefixed_toplevel_constant.html b/prefixed_toplevel_constant.html deleted file mode 100644 index 8c2ea7954..000000000 --- a/prefixed_toplevel_constant.html +++ /dev/null @@ -1,401 +0,0 @@ - - - - prefixed_toplevel_constant Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Prefixed Top-Level Constant

- -

Top-level constants should be prefixed by k.

- -
    -
  • Identifier: prefixed_toplevel_constant
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, only_private: false
  • -
-

Non Triggering Examples

-
private let kFoo = 20.0
-
-
public let kFoo = false
-
-
internal let kFoo = "Foo"
-
-
let kFoo = true
-
-
let Foo = true
-
-
struct Foo {
-   let bar = 20.0
-}
-
-
private var foo = 20.0
-
-
public var foo = false
-
-
internal var foo = "Foo"
-
-
var foo = true
-
-
var foo = true, bar = true
-
-
var foo = true, let kFoo = true
-
-
let
-   kFoo = true
-
-
var foo: Int {
-   return a + b
-}
-
-
let kFoo = {
-   return a + b
-}()
-
-

Triggering Examples

-
private let ↓Foo = 20.0
-
-
public let ↓Foo = false
-
-
internal let ↓Foo = "Foo"
-
-
let ↓Foo = true
-
-
let ↓foo = 2, ↓bar = true
-
-
var foo = true, let ↓Foo = true
-
-
let
-    ↓foo = true
-
-
let ↓foo = {
-   return a + b
-}()
-
- -
-
- - -
-
- - - - diff --git a/private_action.html b/private_action.html deleted file mode 100644 index 215fb7ac7..000000000 --- a/private_action.html +++ /dev/null @@ -1,430 +0,0 @@ - - - - private_action Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Private Actions

- -

IBActions should be private.

- -
    -
  • Identifier: private_action
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class Foo {
-    @IBAction private func barButtonTapped(_ sender: UIButton) {}
-}
-
-
-
struct Foo {
-    @IBAction private func barButtonTapped(_ sender: UIButton) {}
-}
-
-
-
class Foo {
-    @IBAction fileprivate func barButtonTapped(_ sender: UIButton) {}
-}
-
-
-
struct Foo {
-    @IBAction fileprivate func barButtonTapped(_ sender: UIButton) {}
-}
-
-
-
private extension Foo {
-    @IBAction func barButtonTapped(_ sender: UIButton) {}
-}
-
-
-
fileprivate extension Foo {
-    @IBAction func barButtonTapped(_ sender: UIButton) {}
-}
-
-
-

Triggering Examples

-
class Foo {
-    @IBAction ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
-
struct Foo {
-    @IBAction ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
-
class Foo {
-    @IBAction public ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
-
struct Foo {
-    @IBAction public ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
-
class Foo {
-    @IBAction internal ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
-
struct Foo {
-    @IBAction internal ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
-
extension Foo {
-    @IBAction ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
-
extension Foo {
-    @IBAction public ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
-
extension Foo {
-    @IBAction internal ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
-
public extension Foo {
-    @IBAction ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
-
internal extension Foo {
-    @IBAction ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
- -
-
- - -
-
- - - - diff --git a/private_outlet.html b/private_outlet.html deleted file mode 100644 index 2647f3108..000000000 --- a/private_outlet.html +++ /dev/null @@ -1,380 +0,0 @@ - - - - private_outlet Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Private Outlets

- -

IBOutlets should be private to avoid leaking UIKit to higher layers.

- -
    -
  • Identifier: private_outlet
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, allow_private_set: false
  • -
-

Non Triggering Examples

-
class Foo {
-  @IBOutlet private var label: UILabel?
-}
-
-
-
class Foo {
-  @IBOutlet private var label: UILabel!
-}
-
-
-
class Foo {
-  var notAnOutlet: UILabel
-}
-
-
-
class Foo {
-  @IBOutlet weak private var label: UILabel?
-}
-
-
-
class Foo {
-  @IBOutlet private weak var label: UILabel?
-}
-
-
-

Triggering Examples

-
class Foo {
-  @IBOutlet ↓var label: UILabel?
-}
-
-
-
class Foo {
-  @IBOutlet ↓var label: UILabel!
-}
-
-
- -
-
- - -
-
- - - - diff --git a/private_over_fileprivate.html b/private_over_fileprivate.html deleted file mode 100644 index d2e98f248..000000000 --- a/private_over_fileprivate.html +++ /dev/null @@ -1,381 +0,0 @@ - - - - private_over_fileprivate Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Private over fileprivate

- -

Prefer private over fileprivate declarations.

- -
    -
  • Identifier: private_over_fileprivate
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, validate_extensions: false
  • -
-

Non Triggering Examples

-
extension String {}
-
-
private extension String {}
-
-
public 
- enum MyEnum {}
-
-
open extension 
- String {}
-
-
internal extension String {}
-
-
extension String {
-  fileprivate func Something(){}
-}
-
-
class MyClass {
-  fileprivate let myInt = 4
-}
-
-
class MyClass {
-  fileprivate(set) var myInt = 4
-}
-
-
struct Outter {
-  struct Inter {
-    fileprivate struct Inner {}
-  }
-}
-
-

Triggering Examples

-
↓fileprivate enum MyEnum {}
-
-
↓fileprivate class MyClass {
-  fileprivate(set) var myInt = 4
-}
-
- -
-
- - -
-
- - - - diff --git a/private_subject.html b/private_subject.html deleted file mode 100644 index 85b363ac3..000000000 --- a/private_subject.html +++ /dev/null @@ -1,495 +0,0 @@ - - - - private_subject Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Private Combine Subject

- -

Combine Subject should be private.

- -
    -
  • Identifier: private_subject
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
final class Foobar {
-    private let goodSubject = PassthroughSubject<Bool, Never>()
-}
-
-
final class Foobar {
-    private let goodSubject: PassthroughSubject<Bool, Never>
-}
-
-
final class Foobar {
-    fileprivate let goodSubject: PassthroughSubject<Bool, Never>
-}
-
-
final class Foobar {
-    private let goodSubject: PassthroughSubject<Bool, Never> = .ini()
-}
-
-
final class Foobar {
-    private let goodSubject = CurrentValueSubject<Bool, Never>(false)
-}
-
-
final class Foobar {
-    private let goodSubject: CurrentValueSubject<Bool, Never>
-}
-
-
final class Foobar {
-    fileprivate let goodSubject: CurrentValueSubject<String, Never>
-}
-
-
final class Foobar {
-    private let goodSubject: CurrentValueSubject<String, Never> = .ini("toto")
-}
-
-
final class Foobar {
-    private let goodSubject = PassthroughSubject<Set<String>, Never>()
-}
-
-
final class Foobar {
-    private let goodSubject: PassthroughSubject<Set<String>, Never> = .init()
-}
-
-
final class Foobar {
-    private let goodSubject: CurrentValueSubject<Set<String>, Never> = .init([])
-}
-
-
final class Foobar {
-    private let goodSubject =
-        PassthroughSubject<Bool, Never>()
-}
-
-
final class Foobar {
-    private let goodSubject:
-        PassthroughSubject<Bool, Never> = .ini()
-}
-
-
final class Foobar {
-    private let goodSubject =
-        CurrentValueSubject<Bool, Never>(true)
-}
-
-

Triggering Examples

-
final class Foobar {
-    let ↓badSubject = PassthroughSubject<Bool, Never>()
-}
-
-
final class Foobar {
-    let ↓badSubject: PassthroughSubject<Bool, Never>
-}
-
-
final class Foobar {
-    private(set) let ↓badSubject: PassthroughSubject<Bool, Never>
-}
-
-
final class Foobar {
-    private(set) let ↓badSubject = PassthroughSubject<Bool, Never>()
-}
-
-
final class Foobar {
-    let goodSubject: PassthroughSubject<Bool, Never> = .ini()
-}
-
-
final class Foobar {
-    private let goodSubject: PassthroughSubject<Bool, Never>
-    private(set) let ↓badSubject = PassthroughSubject<Bool, Never>()
-    private(set) let ↓anotherBadSubject = PassthroughSubject<Bool, Never>()
-}
-
-
final class Foobar {
-    private(set) let ↓badSubject = PassthroughSubject<Bool, Never>()
-    private let goodSubject: PassthroughSubject<Bool, Never>
-    private(set) let ↓anotherBadSubject = PassthroughSubject<Bool, Never>()
-}
-
-
final class Foobar {
-    let ↓badSubject = CurrentValueSubject<Bool, Never>(true)
-}
-
-
final class Foobar {
-    let ↓badSubject: CurrentValueSubject<Bool, Never>
-}
-
-
final class Foobar {
-    private(set) let ↓badSubject: CurrentValueSubject<Bool, Never>
-}
-
-
final class Foobar {
-    private(set) let ↓badSubject = CurrentValueSubject<Bool, Never>(false)
-}
-
-
final class Foobar {
-    let goodSubject: CurrentValueSubject<String, Never> = .ini("toto")
-}
-
-
final class Foobar {
-    private let goodSubject: CurrentValueSubject<Bool, Never>
-    private(set) let ↓badSubject = CurrentValueSubject<Bool, Never>(false)
-    private(set) let ↓anotherBadSubject = CurrentValueSubject<Bool, Never>(false)
-}
-
-
final class Foobar {
-    private(set) let ↓badSubject = CurrentValueSubject<Bool, Never>(false)
-    private let goodSubject: CurrentValueSubject<Bool, Never>
-    private(set) let ↓anotherBadSubject = CurrentValueSubject<Bool, Never>(true)
-}
-
-
final class Foobar {
-    let ↓badSubject = PassthroughSubject<Set<String>, Never>()
-}
-
-
final class Foobar {
-    let ↓badSubject: PassthroughSubject<Set<String>, Never> = .init()
-}
-
-
final class Foobar {
-    let ↓badSubject: CurrentValueSubject<Set<String>, Never> = .init([])
-}
-
-
final class Foobar {
-    let ↓badSubject =
-        PassthroughSubject<Bool, Never>()
-}
-
-
final class Foobar {
-    let ↓badSubject:
-        PassthroughSubject<Bool, Never> = .ini()
-}
-
-
final class Foobar {
-    let ↓badSubject =
-        CurrentValueSubject<Bool, Never>(true)
-}
-
- -
-
- - -
-
- - - - diff --git a/private_unit_test.html b/private_unit_test.html deleted file mode 100644 index 2f65872f3..000000000 --- a/private_unit_test.html +++ /dev/null @@ -1,413 +0,0 @@ - - - - private_unit_test Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Private Unit Test

- -

Unit tests marked private are silently skipped.

- -
    -
  • Identifier: private_unit_test
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning: XCTestCase
  • -
-

Non Triggering Examples

-
"class FooTest: XCTestCase {
-    func test1() {}
-    internal func test2() {}
-    public func test3() {}
-}
-
-
internal class FooTest: XCTestCase {
-    func test1() {}
-    internal func test2() {}
-    public func test3() {}
-}
-
-
public class FooTest: XCTestCase {
-    func test1() {}
-    internal func test2() {}
-    public func test3() {}
-}
-
-
@objc private class FooTest: XCTestCase {
-    @objc private func test1() {}
-        internal func test2() {}
-        public func test3() {}
-}
-
-
private class Foo: NSObject {
-    func test1() {}
-    internal func test2() {}
-    public func test3() {}
-}
-
-
private class Foo {
-    func test1() {}
-    internal func test2() {}
-    public func test3() {}
-}
-
-
public class FooTest: XCTestCase {
-    func test1(param: Int) {}
-}
-
-

Triggering Examples

-
private ↓class FooTest: XCTestCase {
-    func test1() {}
-        internal func test2() {}
-        public func test3() {}
-        private func test4() {}
-}
-
-
class FooTest: XCTestCase {
-    func test1() {}
-        internal func test2() {}
-        public func test3() {}
-        private ↓func test4() {}
-}
-
-
internal class FooTest: XCTestCase {
-    func test1() {}
-        internal func test2() {}
-        public func test3() {}
-        private ↓func test4() {}
-}
-
-
public class FooTest: XCTestCase {
-    func test1() {}
-        internal func test2() {}
-        public func test3() {}
-        private ↓func test4() {}
-}
-
- -
-
- - -
-
- - - - diff --git a/prohibited_interface_builder.html b/prohibited_interface_builder.html deleted file mode 100644 index 67c31a189..000000000 --- a/prohibited_interface_builder.html +++ /dev/null @@ -1,361 +0,0 @@ - - - - prohibited_interface_builder Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Prohibited Interface Builder

- -

Creating views using Interface Builder should be avoided.

- -
    -
  • Identifier: prohibited_interface_builder
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class ViewController: UIViewController {
-    var label: UILabel!
-}
-
-
class ViewController: UIViewController {
-    @objc func buttonTapped(_ sender: UIButton) {}
-}
-
-

Triggering Examples

-
class ViewController: UIViewController {
-    @IBOutlet ↓var label: UILabel!
-}
-
-
class ViewController: UIViewController {
-    @IBAction ↓func buttonTapped(_ sender: UIButton) {}
-}
-
- -
-
- - -
-
- - - - diff --git a/prohibited_super_call.html b/prohibited_super_call.html deleted file mode 100644 index 1eaee7998..000000000 --- a/prohibited_super_call.html +++ /dev/null @@ -1,394 +0,0 @@ - - - - prohibited_super_call Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Prohibited calls to super

- -

Some methods should not call super

- -
    -
  • Identifier: prohibited_super_call
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, excluded: [[]], included: [[“*”]]
  • -
-

Non Triggering Examples

-
class VC: UIViewController {
-    override func loadView() {
-    }
-}
-
-
class NSView {
-    func updateLayer() {
-        self.method1()
-    }
-}
-
-
public class FileProviderExtension: NSFileProviderExtension {
-    override func providePlaceholder(at url: URL, completionHandler: @escaping (Error?) -> Void) {
-        guard let identifier = persistentIdentifierForItem(at: url) else {
-            completionHandler(NSFileProviderError(.noSuchItem))
-            return
-        }
-    }
-}
-
-

Triggering Examples

-
class VC: UIViewController {
-    override func loadView() {↓
-        super.loadView()
-    }
-}
-
-
class VC: NSFileProviderExtension {
-    override func providePlaceholder(at url: URL, completionHandler: @escaping (Error?) -> Void) {↓
-        self.method1()
-        super.providePlaceholder(at:url, completionHandler: completionHandler)
-    }
-}
-
-
class VC: NSView {
-    override func updateLayer() {↓
-        self.method1()
-        super.updateLayer()
-        self.method2()
-    }
-}
-
-
class VC: NSView {
-    override func updateLayer() {↓
-        defer {
-            super.updateLayer()
-        }
-    }
-}
-
- -
-
- - -
-
- - - - diff --git a/protocol_property_accessors_order.html b/protocol_property_accessors_order.html deleted file mode 100644 index 980b7ada0..000000000 --- a/protocol_property_accessors_order.html +++ /dev/null @@ -1,361 +0,0 @@ - - - - protocol_property_accessors_order Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Protocol Property Accessors Order

- -

When declaring properties in protocols, the order of accessors should be get set.

- -
    -
  • Identifier: protocol_property_accessors_order
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
protocol Foo {
- var bar: String { get set }
- }
-
-
protocol Foo {
- var bar: String { get }
- }
-
-
protocol Foo {
- var bar: String { set }
- }
-
-

Triggering Examples

-
protocol Foo {
- var bar: String { ↓set get }
- }
-
- -
-
- - -
-
- - - - diff --git a/quick_discouraged_call.html b/quick_discouraged_call.html deleted file mode 100644 index cef264be9..000000000 --- a/quick_discouraged_call.html +++ /dev/null @@ -1,595 +0,0 @@ - - - - quick_discouraged_call Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Quick Discouraged Call

- -

Discouraged call inside ‘describe’ and/or ‘context’ block.

- -
    -
  • Identifier: quick_discouraged_call
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           beforeEach {
-               let foo = Foo()
-               foo.toto()
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           beforeEach {
-               let foo = Foo()
-               foo.toto()
-           }
-           afterEach {
-               let foo = Foo()
-               foo.toto()
-           }
-           describe("bar") {
-           }
-           context("bar") {
-           }
-           it("bar") {
-               let foo = Foo()
-               foo.toto()
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-          itBehavesLike("bar")
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           it("does something") {
-               let foo = Foo()
-               foo.toto()
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       context("foo") {
-           afterEach { toto.append(foo) }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       xcontext("foo") {
-           afterEach { toto.append(foo) }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       xdescribe("foo") {
-           afterEach { toto.append(foo) }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           xit("does something") {
-               let foo = Foo()
-               foo.toto()
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       fcontext("foo") {
-           afterEach { toto.append(foo) }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       fdescribe("foo") {
-           afterEach { toto.append(foo) }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           fit("does something") {
-               let foo = Foo()
-               foo.toto()
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       fitBehavesLike("foo")
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       xitBehavesLike("foo")
-   }
-}
-
-

Triggering Examples

-
class TotoTests {
-   override func spec() {
-       describe("foo") {
-           let foo = Foo()
-       }
-   }
-}
-class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           let foo = ↓Foo()
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           let foo = ↓Foo()
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           context("foo") {
-               let foo = ↓Foo()
-           }
-           context("bar") {
-               let foo = ↓Foo()
-               ↓foo.bar()
-               it("does something") {
-                   let foo = Foo()
-                   foo.toto()
-               }
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           context("foo") {
-               context("foo") {
-                   beforeEach {
-                       let foo = Foo()
-                       foo.toto()
-                   }
-                   it("bar") {
-                   }
-                   context("foo") {
-                       let foo = ↓Foo()
-                   }
-               }
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       context("foo") {
-           let foo = ↓Foo()
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       sharedExamples("foo") {
-           let foo = ↓Foo()
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           ↓foo()
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       context("foo") {
-           ↓foo()
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       sharedExamples("foo") {
-           ↓foo()
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       xdescribe("foo") {
-           let foo = ↓Foo()
-       }
-       fdescribe("foo") {
-           let foo = ↓Foo()
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       xcontext("foo") {
-           let foo = ↓Foo()
-       }
-       fcontext("foo") {
-           let foo = ↓Foo()
-       }
-   }
-}
-
- -
-
- - -
-
- - - - diff --git a/quick_discouraged_focused_test.html b/quick_discouraged_focused_test.html deleted file mode 100644 index 207ac7d82..000000000 --- a/quick_discouraged_focused_test.html +++ /dev/null @@ -1,408 +0,0 @@ - - - - quick_discouraged_focused_test Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Quick Discouraged Focused Test

- -

Discouraged focused test. Other tests won’t run while this one is focused.

- -
    -
  • Identifier: quick_discouraged_focused_test
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           describe("bar") { }
-           context("bar") {
-               it("bar") { }
-           }
-           it("bar") { }
-           itBehavesLike("bar")
-       }
-   }
-}
-
-

Triggering Examples

-
class TotoTests: QuickSpec {
-   override func spec() {
-       ↓fdescribe("foo") { }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       ↓fcontext("foo") { }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       ↓fit("foo") { }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           ↓fit("bar") { }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       context("foo") {
-           ↓fit("bar") { }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           context("bar") {
-               ↓fit("toto") { }
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       ↓fitBehavesLike("foo")
-   }
-}
-
- -
-
- - -
-
- - - - diff --git a/quick_discouraged_pending_test.html b/quick_discouraged_pending_test.html deleted file mode 100644 index 725f65fc2..000000000 --- a/quick_discouraged_pending_test.html +++ /dev/null @@ -1,414 +0,0 @@ - - - - quick_discouraged_pending_test Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Quick Discouraged Pending Test

- -

Discouraged pending test. This test won’t run while it’s marked as pending.

- -
    -
  • Identifier: quick_discouraged_pending_test
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           describe("bar") { }
-           context("bar") {
-               it("bar") { }
-           }
-           it("bar") { }
-           itBehavesLike("bar")
-       }
-   }
-}
-
-

Triggering Examples

-
class TotoTests: QuickSpec {
-   override func spec() {
-       ↓xdescribe("foo") { }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       ↓xcontext("foo") { }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       ↓xit("foo") { }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           ↓xit("bar") { }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       context("foo") {
-           ↓xit("bar") { }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           context("bar") {
-               ↓xit("toto") { }
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       ↓pending("foo")
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       ↓xitBehavesLike("foo")
-   }
-}
-
- -
-
- - -
-
- - - - diff --git a/raw_value_for_camel_cased_codable_enum.html b/raw_value_for_camel_cased_codable_enum.html deleted file mode 100644 index 40b209dec..000000000 --- a/raw_value_for_camel_cased_codable_enum.html +++ /dev/null @@ -1,410 +0,0 @@ - - - - raw_value_for_camel_cased_codable_enum Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Raw Value For Camel Cased Codable Enum

- -

Camel cased cases of Codable String enums should have raw value.

- -
    -
  • Identifier: raw_value_for_camel_cased_codable_enum
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
enum Numbers: Codable {
-  case int(Int)
-  case short(Int16)
-}
-
-
enum Numbers: Int, Codable {
-  case one = 1
-  case two = 2
-}
-
-
enum Numbers: Double, Codable {
-  case one = 1.1
-  case two = 2.2
-}
-
-
enum Numbers: String, Codable {
-  case one = "one"
-  case two = "two"
-}
-
-
enum Status: String, Codable {
-    case OK, ACCEPTABLE
-}
-
-
enum Status: String, Codable {
-    case ok
-    case maybeAcceptable = "maybe_acceptable"
-}
-
-
enum Status: String {
-    case ok
-    case notAcceptable
-    case maybeAcceptable = "maybe_acceptable"
-}
-
-
enum Status: Int, Codable {
-    case ok
-    case notAcceptable
-    case maybeAcceptable = -1
-}
-
-

Triggering Examples

-
enum Status: String, Codable {
-    case ok
-    case ↓notAcceptable
-    case maybeAcceptable = "maybe_acceptable"
-}
-
-
enum Status: String, Decodable {
-   case ok
-   case ↓notAcceptable
-   case maybeAcceptable = "maybe_acceptable"
-}
-
-
enum Status: String, Encodable {
-   case ok
-   case ↓notAcceptable
-   case maybeAcceptable = "maybe_acceptable"
-}
-
-
enum Status: String, Codable {
-    case ok
-    case ↓notAcceptable
-    case maybeAcceptable = "maybe_acceptable"
-}
-
- -
-
- - -
-
- - - - diff --git a/reduce_boolean.html b/reduce_boolean.html deleted file mode 100644 index 0304369a0..000000000 --- a/reduce_boolean.html +++ /dev/null @@ -1,365 +0,0 @@ - - - - reduce_boolean Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Reduce Boolean

- -

Prefer using .allSatisfy() or .contains() over reduce(true) or reduce(false)

- -
    -
  • Identifier: reduce_boolean
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
nums.reduce(0) { $0.0 + $0.1 }
-
-
nums.reduce(0.0) { $0.0 + $0.1 }
-
-

Triggering Examples

-
let allNines = nums.↓reduce(true) { $0.0 && $0.1 == 9 }
-
-
let anyNines = nums.↓reduce(false) { $0.0 || $0.1 == 9 }
-
-
let allValid = validators.↓reduce(true) { $0 && $1(input) }
-
-
let anyValid = validators.↓reduce(false) { $0 || $1(input) }
-
-
let allNines = nums.↓reduce(true, { $0.0 && $0.1 == 9 })
-
-
let anyNines = nums.↓reduce(false, { $0.0 || $0.1 == 9 })
-
-
let allValid = validators.↓reduce(true, { $0 && $1(input) })
-
-
let anyValid = validators.↓reduce(false, { $0 || $1(input) })
-
- -
-
- - -
-
- - - - diff --git a/reduce_into.html b/reduce_into.html deleted file mode 100644 index 85b8c6641..000000000 --- a/reduce_into.html +++ /dev/null @@ -1,406 +0,0 @@ - - - - reduce_into Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Reduce Into

- -

Prefer reduce(into:_:) over reduce(_:_:) for copy-on-write types

- -
    -
  • Identifier: reduce_into
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let foo = values.reduce(into: "abc") { $0 += "\($1)" }
-
-
values.reduce(into: Array<Int>()) { result, value in
-    result.append(value)
-}
-
-
let rows = violations.enumerated().reduce(into: "") { rows, indexAndViolation in
-    rows.append(generateSingleRow(for: indexAndViolation.1, at: indexAndViolation.0 + 1))
-}
-
-
zip(group, group.dropFirst()).reduce(into: []) { result, pair in
-    result.append(pair.0 + pair.1)
-}
-
-
let foo = values.reduce(into: [String: Int]()) { result, value in
-    result["\(value)"] = value
-}
-
-
let foo = values.reduce(into: Dictionary<String, Int>.init()) { result, value in
-    result["\(value)"] = value
-}
-
-
let foo = values.reduce(into: [Int](repeating: 0, count: 10)) { result, value in
-    result.append(value)
-}
-
-
let foo = values.reduce(MyClass()) { result, value in
-    result.handleValue(value)
-    return result
-}
-
-

Triggering Examples

-
let bar = values.↓reduce("abc") { $0 + "\($1)" }
-
-
values.↓reduce(Array<Int>()) { result, value in
-    result += [value]
-}
-
-
let rows = violations.enumerated().↓reduce("") { rows, indexAndViolation in
-    return rows + generateSingleRow(for: indexAndViolation.1, at: indexAndViolation.0 + 1)
-}
-
-
zip(group, group.dropFirst()).↓reduce([]) { result, pair in
-    result + [pair.0 + pair.1]
-}
-
-
let foo = values.↓reduce([String: Int]()) { result, value in
-    var result = result
-    result["\(value)"] = value
-    return result
-}
-
-
let bar = values.↓reduce(Dictionary<String, Int>.init()) { result, value in
-    var result = result
-    result["\(value)"] = value
-    return result
-}
-
-
let bar = values.↓reduce([Int](repeating: 0, count: 10)) { result, value in
-    return result + [value]
-}
-
- -
-
- - -
-
- - - - diff --git a/redundant_discardable_let.html b/redundant_discardable_let.html deleted file mode 100644 index 5332d3d1e..000000000 --- a/redundant_discardable_let.html +++ /dev/null @@ -1,365 +0,0 @@ - - - - redundant_discardable_let Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Redundant Discardable Let

- -

Prefer _ = foo() over let _ = foo() when discarding a result from a function.

- -
    -
  • Identifier: redundant_discardable_let
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
_ = foo()
-
-
-
if let _ = foo() { }
-
-
-
guard let _ = foo() else { return }
-
-
-
let _: ExplicitType = foo()
-
-
while let _ = SplashStyle(rawValue: maxValue) { maxValue += 1 }
-
-
-

Triggering Examples

-
↓let _ = foo()
-
-
-
if _ = foo() { ↓let _ = bar() }
-
-
- -
-
- - -
-
- - - - diff --git a/redundant_nil_coalescing.html b/redundant_nil_coalescing.html deleted file mode 100644 index 3c201120c..000000000 --- a/redundant_nil_coalescing.html +++ /dev/null @@ -1,354 +0,0 @@ - - - - redundant_nil_coalescing Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Redundant Nil Coalescing

- -

nil coalescing operator is only evaluated if the lhs is nil, coalescing operator with nil as rhs is redundant

- -
    -
  • Identifier: redundant_nil_coalescing
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
var myVar: Int?; myVar ?? 0
-
-
-

Triggering Examples

-
var myVar: Int? = nil; myVar↓ ?? nil
-
-
-
var myVar: Int? = nil; myVar↓??nil
-
-
- -
-
- - -
-
- - - - diff --git a/redundant_objc_attribute.html b/redundant_objc_attribute.html deleted file mode 100644 index 79b5b2d98..000000000 --- a/redundant_objc_attribute.html +++ /dev/null @@ -1,481 +0,0 @@ - - - - redundant_objc_attribute Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Redundant @objc Attribute

- -

Objective-C attribute (@objc) is redundant in declaration.

- -
    -
  • Identifier: redundant_objc_attribute
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
@objc private var foo: String? {}
-
-
@IBInspectable private var foo: String? {}
-
-
@objc private func foo(_ sender: Any) {}
-
-
@IBAction private func foo(_ sender: Any) {}
-
-
@GKInspectable private var foo: String! {}
-
-
private @GKInspectable var foo: String! {}
-
-
@NSManaged var foo: String!
-
-
@objc @NSCopying var foo: String!
-
-
@objcMembers
-class Foo {
-    var bar: Any?
-    @objc
-    class Bar {
-        @objc
-        var foo: Any?
-    }
-}
-
-
@objc
-extension Foo {
-    var bar: Int {
-        return 0
-    }
-}
-
-
extension Foo {
-    @objc
-    var bar: Int { return 0 }
-}
-
-
@objc @IBDesignable
-extension Foo {
-    var bar: Int { return 0 }
-}
-
-
@IBDesignable
-extension Foo {
-    @objc
-    var bar: Int { return 0 }
-    var fooBar: Int { return 1 }
-}
-
-
@objcMembers
-class Foo: NSObject {
-    @objc
-    private var bar: Int {
-        return 0
-    }
-}
-
-
@objcMembers
-class Foo {
-    class Bar: NSObject {
-        @objc var foo: Any
-    }
-}
-
-
@objcMembers
-class Foo {
-    @objc class Bar {}
-}
-
-

Triggering Examples

-
↓@objc @IBInspectable private var foo: String? {}
-
-
@IBInspectable ↓@objc private var foo: String? {}
-
-
↓@objc @IBAction private func foo(_ sender: Any) {}
-
-
@IBAction ↓@objc private func foo(_ sender: Any) {}
-
-
↓@objc @GKInspectable private var foo: String! {}
-
-
@GKInspectable ↓@objc private var foo: String! {}
-
-
↓@objc @NSManaged private var foo: String!
-
-
@NSManaged ↓@objc private var foo: String!
-
-
↓@objc @IBDesignable class Foo {}
-
-
@objcMembers
-class Foo {
-    ↓@objc var bar: Any?
-}
-
-
@objcMembers
-class Foo {
-    ↓@objc var bar: Any?
-    ↓@objc var foo: Any?
-    @objc
-    class Bar {
-        @objc
-        var foo: Any?
-    }
-}
-
-
@objc
-extension Foo {
-    ↓@objc
-    var bar: Int {
-        return 0
-    }
-}
-
-
@objc @IBDesignable
-extension Foo {
-    ↓@objc
-    var bar: Int {
-        return 0
-    }
-}
-
-
@objcMembers
-class Foo {
-    @objcMembers
-    class Bar: NSObject {
-        ↓@objc var foo: Any
-    }
-}
-
-
@objc
-extension Foo {
-    ↓@objc
-    private var bar: Int {
-        return 0
-    }
-}
-
- -
-
- - -
-
- - - - diff --git a/redundant_optional_initialization.html b/redundant_optional_initialization.html deleted file mode 100644 index d44191acc..000000000 --- a/redundant_optional_initialization.html +++ /dev/null @@ -1,406 +0,0 @@ - - - - redundant_optional_initialization Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Redundant Optional Initialization

- -

Initializing an optional variable with nil is redundant.

- -
    -
  • Identifier: redundant_optional_initialization
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
var myVar: Int?
-
-
-
let myVar: Int? = nil
-
-
-
var myVar: Int? = 0
-
-
-
func foo(bar: Int? = 0) { }
-
-
-
var myVar: Optional<Int>
-
-
-
let myVar: Optional<Int> = nil
-
-
-
var myVar: Optional<Int> = 0
-
-
-
var foo: Int? {
-  if bar != nil { }
-  return 0
-}
-
-
var foo: Int? = {
-  if bar != nil { }
-  return 0
-}()
-
-
lazy var test: Int? = nil
-
-
func funcName() {
-  var myVar: String?
-}
-
-
func funcName() {
-  let myVar: String? = nil
-}
-
-

Triggering Examples

-
var myVar: Int?↓ = nil
-
-
-
var myVar: Optional<Int>↓ = nil
-
-
-
var myVar: Int?↓=nil
-
-
-
var myVar: Optional<Int>↓=nil
-)
-
-
var myVar: String?↓ = nil {
-  didSet { print("didSet") }
-}
-
-
func funcName() {
-    var myVar: String?↓ = nil
-}
-
- -
-
- - -
-
- - - - diff --git a/redundant_set_access_control.html b/redundant_set_access_control.html deleted file mode 100644 index bd79ff1dd..000000000 --- a/redundant_set_access_control.html +++ /dev/null @@ -1,377 +0,0 @@ - - - - redundant_set_access_control Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Redundant Set Access Control Rule

- -

Property setter access level shouldn’t be explicit if it’s the same as the variable access level.

- -
    -
  • Identifier: redundant_set_access_control
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
private(set) public var foo: Int
-
-
public let foo: Int
-
-
public var foo: Int
-
-
var foo: Int
-
-
private final class A {
-  private(set) var value: Int
-}
-
-

Triggering Examples

-
↓private(set) private var foo: Int
-
-
↓fileprivate(set) fileprivate var foo: Int
-
-
↓internal(set) internal var foo: Int
-
-
↓public(set) public var foo: Int
-
-
open class Foo {
-  ↓open(set) open var bar: Int
-}
-
-
class A {
-  ↓internal(set) var value: Int
-}
-
-
fileprivate class A {
-  ↓fileprivate(set) var value: Int
-}
-
- -
-
- - -
-
- - - - diff --git a/redundant_string_enum_value.html b/redundant_string_enum_value.html deleted file mode 100644 index d71cf9b96..000000000 --- a/redundant_string_enum_value.html +++ /dev/null @@ -1,382 +0,0 @@ - - - - redundant_string_enum_value Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Redundant String Enum Value

- -

String enum values can be omitted when they are equal to the enumcase name.

- -
    -
  • Identifier: redundant_string_enum_value
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
enum Numbers: String {
-  case one
-  case two
-}
-
-
enum Numbers: Int {
-  case one = 1
-  case two = 2
-}
-
-
enum Numbers: String {
-  case one = "ONE"
-  case two = "TWO"
-}
-
-
enum Numbers: String {
-  case one = "ONE"
-  case two = "two"
-}
-
-
enum Numbers: String {
-  case one, two
-}
-
-

Triggering Examples

-
enum Numbers: String {
-  case one = ↓"one"
-  case two = ↓"two"
-}
-
-
enum Numbers: String {
-  case one = ↓"one", two = ↓"two"
-}
-
-
enum Numbers: String {
-  case one, two = ↓"two"
-}
-
- -
-
- - -
-
- - - - diff --git a/redundant_type_annotation.html b/redundant_type_annotation.html deleted file mode 100644 index c5ebc1655..000000000 --- a/redundant_type_annotation.html +++ /dev/null @@ -1,392 +0,0 @@ - - - - redundant_type_annotation Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Redundant Type Annotation

- -

Variables should not have redundant type annotation

- -
    -
  • Identifier: redundant_type_annotation
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
var url = URL()
-
-
var url: CustomStringConvertible = URL()
-
-
@IBInspectable var color: UIColor = UIColor.white
-
-
enum Direction {
-    case up
-    case down
-}
-
-var direction: Direction = .up
-
-
enum Direction {
-    case up
-    case down
-}
-
-var direction = Direction.up
-
-

Triggering Examples

-
var url↓:URL=URL()
-
-
var url↓:URL = URL(string: "")
-
-
var url↓: URL = URL()
-
-
let url↓: URL = URL()
-
-
lazy var url↓: URL = URL()
-
-
let alphanumerics↓: CharacterSet = CharacterSet.alphanumerics
-
-
class ViewController: UIViewController {
-  func someMethod() {
-    let myVar↓: Int = Int(5)
-  }
-}
-
-
var isEnabled↓: Bool = true
-
-
enum Direction {
-    case up
-    case down
-}
-
-var direction↓: Direction = Direction.up
-
- -
-
- - -
-
- - - - diff --git a/redundant_void_return.html b/redundant_void_return.html deleted file mode 100644 index b8c395713..000000000 --- a/redundant_void_return.html +++ /dev/null @@ -1,400 +0,0 @@ - - - - redundant_void_return Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Redundant Void Return

- -

Returning Void in a function declaration is redundant.

- -
    -
  • Identifier: redundant_void_return
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
func foo() {}
-
-
-
func foo() -> Int {}
-
-
-
func foo() -> Int -> Void {}
-
-
-
func foo() -> VoidResponse
-
-
-
let foo: (Int) -> Void
-
-
-
func foo() -> Int -> () {}
-
-
-
let foo: (Int) -> ()
-
-
-
func foo() -> ()?
-
-
-
func foo() -> ()!
-
-
-
func foo() -> Void?
-
-
-
func foo() -> Void!
-
-
-
struct A {
-    subscript(key: String) {
-        print(key)
-    }
-}
-
-

Triggering Examples

-
func foo()↓ -> Void {}
-
-
-
protocol Foo {
-  func foo()↓ -> Void
-}
-
-
func foo()↓ -> () {}
-
-
-
func foo()↓ -> ( ) {}
-
-
protocol Foo {
-  func foo()↓ -> ()
-}
-
- -
-
- - -
-
- - - - diff --git a/required_deinit.html b/required_deinit.html deleted file mode 100644 index 5ee9752ea..000000000 --- a/required_deinit.html +++ /dev/null @@ -1,390 +0,0 @@ - - - - required_deinit Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Required Deinit

- -

Classes should have an explicit deinit method.

- -
    -
  • Identifier: required_deinit
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class Apple {
-    deinit { }
-}
-
-
enum Banana { }
-
-
protocol Cherry { }
-
-
struct Damson { }
-
-
class Outer {
-    deinit { print("Deinit Outer") }
-    class Inner {
-        deinit { print("Deinit Inner") }
-    }
-}
-
-

Triggering Examples

-
↓class Apple { }
-
-
↓class Banana: NSObject, Equatable { }
-
-
↓class Cherry {
-    // deinit { }
-}
-
-
↓class Damson {
-    func deinitialize() { }
-}
-
-
class Outer {
-    func hello() -> String { return "outer" }
-    deinit { }
-    ↓class Inner {
-        func hello() -> String { return "inner" }
-    }
-}
-
-
↓class Outer {
-    func hello() -> String { return "outer" }
-    class Inner {
-        func hello() -> String { return "inner" }
-        deinit { }
-    }
-}
-
- -
-
- - -
-
- - - - diff --git a/required_enum_case.html b/required_enum_case.html deleted file mode 100644 index 812fe2b90..000000000 --- a/required_enum_case.html +++ /dev/null @@ -1,388 +0,0 @@ - - - - required_enum_case Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Required Enum Case

- -

Enums conforming to a specified protocol must implement a specific case(s).

- -
    -
  • Identifier: required_enum_case
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: No protocols configured. In config add ‘required_enum_case’ to ‘opt_in_rules’ and config using :
  • -
- -

‘required_enum_case: - {Protocol Name}: - {Case Name}:{warning|error} - {Case Name}:{warning|error}

-

Non Triggering Examples

-
enum MyNetworkResponse: String, NetworkResponsable {
-    case success, error, notConnected
-}
-
-
enum MyNetworkResponse: String, NetworkResponsable {
-    case success, error, notConnected(error: Error)
-}
-
-
enum MyNetworkResponse: String, NetworkResponsable {
-    case success
-    case error
-    case notConnected
-}
-
-
enum MyNetworkResponse: String, NetworkResponsable {
-    case success
-    case error
-    case notConnected(error: Error)
-}
-
-

Triggering Examples

-
enum MyNetworkResponse: String, NetworkResponsable {
-    case success, error
-}
-
-
enum MyNetworkResponse: String, NetworkResponsable {
-    case success, error
-}
-
-
enum MyNetworkResponse: String, NetworkResponsable {
-    case success
-    case error
-}
-
-
enum MyNetworkResponse: String, NetworkResponsable {
-    case success
-    case error
-}
-
- -
-
- - -
-
- - - - diff --git a/return_arrow_whitespace.html b/return_arrow_whitespace.html deleted file mode 100644 index b5963cb0f..000000000 --- a/return_arrow_whitespace.html +++ /dev/null @@ -1,389 +0,0 @@ - - - - return_arrow_whitespace Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Returning Whitespace

- -

Return arrow and return type should be separated by a single space or on a separate line.

- -
    -
  • Identifier: return_arrow_whitespace
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
func abc() -> Int {}
-
-
-
func abc() -> [Int] {}
-
-
-
func abc() -> (Int, Int) {}
-
-
-
var abc = {(param: Int) -> Void in }
-
-
-
func abc() ->
-    Int {}
-
-
-
func abc()
-    -> Int {}
-
-
-

Triggering Examples

-
func abc()↓->Int {}
-
-
-
func abc()↓->[Int] {}
-
-
-
func abc()↓->(Int, Int) {}
-
-
-
func abc()↓-> Int {}
-
-
-
func abc()↓ ->Int {}
-
-
-
func abc()↓  ->  Int {}
-
-
-
var abc = {(param: Int)↓ ->Bool in }
-
-
-
var abc = {(param: Int)↓->Bool in }
-
-
- -
-
- - -
-
- - - - diff --git a/rule-directory.html b/rule-directory.html deleted file mode 100644 index 4f593450e..000000000 --- a/rule-directory.html +++ /dev/null @@ -1,547 +0,0 @@ - - - - Rule Directory Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Rule Directory

-

Default Rules

- - -

Opt-In Rules

- - - -
-
- - -
-
- - - - diff --git a/search.json b/search.json deleted file mode 100644 index 5b44f81ff..000000000 --- a/search.json +++ /dev/null @@ -1 +0,0 @@ -{"Structs/XcodeReporter.html#/s:18SwiftLintFramework8ReporterP10identifierSSvpZ":{"name":"identifier","parent_name":"XcodeReporter"},"Structs/XcodeReporter.html#/s:18SwiftLintFramework8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","parent_name":"XcodeReporter"},"Structs/XcodeReporter.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"XcodeReporter"},"Structs/XcodeReporter.html#/s:18SwiftLintFramework8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","parent_name":"XcodeReporter"},"Structs/SonarQubeReporter.html#/s:18SwiftLintFramework8ReporterP10identifierSSvpZ":{"name":"identifier","parent_name":"SonarQubeReporter"},"Structs/SonarQubeReporter.html#/s:18SwiftLintFramework8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","parent_name":"SonarQubeReporter"},"Structs/SonarQubeReporter.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"SonarQubeReporter"},"Structs/SonarQubeReporter.html#/s:18SwiftLintFramework8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","parent_name":"SonarQubeReporter"},"Structs/GitLabJUnitReporter.html#/s:18SwiftLintFramework8ReporterP10identifierSSvpZ":{"name":"identifier","parent_name":"GitLabJUnitReporter"},"Structs/GitLabJUnitReporter.html#/s:18SwiftLintFramework8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","parent_name":"GitLabJUnitReporter"},"Structs/GitLabJUnitReporter.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"GitLabJUnitReporter"},"Structs/GitLabJUnitReporter.html#/s:18SwiftLintFramework8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","parent_name":"GitLabJUnitReporter"},"Structs/CodeClimateReporter.html#/s:18SwiftLintFramework8ReporterP10identifierSSvpZ":{"name":"identifier","parent_name":"CodeClimateReporter"},"Structs/CodeClimateReporter.html#/s:18SwiftLintFramework8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","parent_name":"CodeClimateReporter"},"Structs/CodeClimateReporter.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"CodeClimateReporter"},"Structs/CodeClimateReporter.html#/s:18SwiftLintFramework8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","parent_name":"CodeClimateReporter"},"Structs/YamlParser.html#/s:18SwiftLintFramework10YamlParserV5parse_3envSDySSypGSS_SDyS2SGtKFZ":{"name":"parse(_:env:)","abstract":"

Parses the input YAML string as an untyped dictionary.

","parent_name":"YamlParser"},"Structs/Version.html#/s:18SwiftLintFramework7VersionV5valueSSvp":{"name":"value","abstract":"

The string value for this version.

","parent_name":"Version"},"Structs/Version.html#/s:18SwiftLintFramework7VersionV7currentACvpZ":{"name":"current","abstract":"

The current SwiftLint version.

","parent_name":"Version"},"Structs/SwiftVersion.html#/s:SY8RawValueQa":{"name":"RawValue","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:SY8rawValue03RawB0Qzvp":{"name":"rawValue","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:SY8rawValuexSg03RawB0Qz_tcfc":{"name":"init(rawValue:)","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:SL1loiySbx_xtFZ":{"name":"<(_:_:)","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:18SwiftLintFramework0A7VersionV4fiveACvpZ":{"name":"five","abstract":"

Swift 5.0.x - https://swift.org/download/#swift-50

","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:18SwiftLintFramework0A7VersionV10fiveDotOneACvpZ":{"name":"fiveDotOne","abstract":"

Swift 5.1.x - https://swift.org/download/#swift-51

","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:18SwiftLintFramework0A7VersionV10fiveDotTwoACvpZ":{"name":"fiveDotTwo","abstract":"

Swift 5.2.x - https://swift.org/download/#swift-52

","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:18SwiftLintFramework0A7VersionV12fiveDotThreeACvpZ":{"name":"fiveDotThree","abstract":"

Swift 5.3.x - https://swift.org/download/#swift-53

","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:18SwiftLintFramework0A7VersionV11fiveDotFourACvpZ":{"name":"fiveDotFour","abstract":"

Swift 5.4.x - https://swift.org/download/#swift-54

","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:18SwiftLintFramework0A7VersionV11fiveDotFiveACvpZ":{"name":"fiveDotFive","abstract":"

Swift 5.5.x - https://swift.org/download/#swift-55

","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:18SwiftLintFramework0A7VersionV10fiveDotSixACvpZ":{"name":"fiveDotSix","abstract":"

Swift 5.6.x - https://swift.org/download/#swift-56

","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:18SwiftLintFramework0A7VersionV7currentACvpZ":{"name":"current","abstract":"

The current detected Swift compiler version, based on the currently accessible SourceKit version.

","parent_name":"SwiftVersion"},"Structs/SwiftLintSyntaxToken.html#/s:18SwiftLintFramework0aB11SyntaxTokenV5value012SourceKittenC00dE0Vvp":{"name":"value","abstract":"

The raw SyntaxToken obtained by SourceKitten.

","parent_name":"SwiftLintSyntaxToken"},"Structs/SwiftLintSyntaxToken.html#/s:18SwiftLintFramework0aB11SyntaxTokenV4kind012SourceKittenC00D4KindOSgvp":{"name":"kind","abstract":"

The syntax kind associated with is token.

","parent_name":"SwiftLintSyntaxToken"},"Structs/SwiftLintSyntaxToken.html#/s:18SwiftLintFramework0aB11SyntaxTokenV5valueAC012SourceKittenC00dE0V_tcfc":{"name":"init(value:)","abstract":"

Creates a SwiftLintSyntaxToken from the raw SyntaxToken obtained by SourceKitten.

","parent_name":"SwiftLintSyntaxToken"},"Structs/SwiftLintSyntaxToken.html#/s:18SwiftLintFramework0aB11SyntaxTokenV5range012SourceKittenC09ByteRangeVvp":{"name":"range","abstract":"

The byte range in a source file for this token.

","parent_name":"SwiftLintSyntaxToken"},"Structs/SwiftLintSyntaxToken.html#/s:18SwiftLintFramework0aB11SyntaxTokenV6offset012SourceKittenC09ByteCountVvp":{"name":"offset","abstract":"

The starting byte offset in a source file for this token.

","parent_name":"SwiftLintSyntaxToken"},"Structs/SwiftLintSyntaxToken.html#/s:18SwiftLintFramework0aB11SyntaxTokenV6length012SourceKittenC09ByteCountVvp":{"name":"length","abstract":"

The length in bytes for this token.

","parent_name":"SwiftLintSyntaxToken"},"Structs/SwiftLintSyntaxMap.html#/s:18SwiftLintFramework0aB9SyntaxMapV5value012SourceKittenC00dE0Vvp":{"name":"value","abstract":"

The raw SyntaxMap obtained by SourceKitten.

","parent_name":"SwiftLintSyntaxMap"},"Structs/SwiftLintSyntaxMap.html#/s:18SwiftLintFramework0aB9SyntaxMapV6tokensSayAA0abD5TokenVGvp":{"name":"tokens","abstract":"

The SwiftLint-specific syntax tokens for this syntax map.

","parent_name":"SwiftLintSyntaxMap"},"Structs/SwiftLintSyntaxMap.html#/s:18SwiftLintFramework0aB9SyntaxMapV5valueAC012SourceKittenC00dE0V_tcfc":{"name":"init(value:)","abstract":"

Creates a SwiftLintSyntaxMap from the raw SyntaxMap obtained by SourceKitten.

","parent_name":"SwiftLintSyntaxMap"},"Structs/StyleViolation.html#/s:18SwiftLintFramework14StyleViolationV14ruleIdentifierSSvp":{"name":"ruleIdentifier","abstract":"

The identifier of the rule that generated this violation.

","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:18SwiftLintFramework14StyleViolationV15ruleDescriptionSSvp":{"name":"ruleDescription","abstract":"

The description of the rule that generated this violation.

","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:18SwiftLintFramework14StyleViolationV8ruleNameSSvp":{"name":"ruleName","abstract":"

The name of the rule that generated this violation.

","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:18SwiftLintFramework14StyleViolationV8severityAA0E8SeverityOvp":{"name":"severity","abstract":"

The severity of this violation.

","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:18SwiftLintFramework14StyleViolationV8locationAA8LocationVvp":{"name":"location","abstract":"

The location of this violation.

","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:18SwiftLintFramework14StyleViolationV6reasonSSvp":{"name":"reason","abstract":"

The justification for this violation.

","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:18SwiftLintFramework14StyleViolationV11descriptionSSvp":{"name":"description","abstract":"

A printable description for this violation.

","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:18SwiftLintFramework14StyleViolationV15ruleDescription8severity8location6reasonAcA04RuleG0V_AA0E8SeverityOAA8LocationVSSSgtcfc":{"name":"init(ruleDescription:severity:location:reason:)","abstract":"

Creates a StyleViolation by specifying its properties directly.

","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:18SwiftLintFramework14StyleViolationV4with8severityAcA0E8SeverityO_tF":{"name":"with(severity:)","abstract":"

Returns the same violation, but with the severity that is passed in

","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:18SwiftLintFramework14StyleViolationV4with8locationAcA8LocationV_tF":{"name":"with(location:)","abstract":"

Returns the same violation, but with the location that is passed in

","parent_name":"StyleViolation"},"Structs/RuleParameter.html#/s:18SwiftLintFramework13RuleParameterV8severityAA17ViolationSeverityOvp":{"name":"severity","abstract":"

The severity that should be assigned to the violation of this parameter’s value is met.

","parent_name":"RuleParameter"},"Structs/RuleParameter.html#/s:18SwiftLintFramework13RuleParameterV5valuexvp":{"name":"value","abstract":"

The value to configure the rule.

","parent_name":"RuleParameter"},"Structs/RuleParameter.html#/s:18SwiftLintFramework13RuleParameterV8severity5valueACyxGAA17ViolationSeverityO_xtcfc":{"name":"init(severity:value:)","abstract":"

Creates a RuleParameter by specifying its properties directly.

","parent_name":"RuleParameter"},"Structs/RuleList.html#/s:18SwiftLintFramework8RuleListV4listSDySSAA0D0_pXpGvp":{"name":"list","abstract":"

The rules contained in this list.

","parent_name":"RuleList"},"Structs/RuleList.html#/s:18SwiftLintFramework8RuleListV5rulesAcA0D0_pXpd_tcfc":{"name":"init(rules:)","abstract":"

Creates a RuleList by specifying all its rules.

","parent_name":"RuleList"},"Structs/RuleList.html#/s:18SwiftLintFramework8RuleListV5rulesACSayAA0D0_pXpG_tcfc":{"name":"init(rules:)","abstract":"

Creates a RuleList by specifying all its rules.

","parent_name":"RuleList"},"Structs/RuleList.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"RuleList"},"Structs/RuleDescription.html#/s:18SwiftLintFramework15RuleDescriptionV10identifierSSvp":{"name":"identifier","abstract":"

The rule’s unique identifier, to be used in configuration files and SwiftLint commands.","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:18SwiftLintFramework15RuleDescriptionV4nameSSvp":{"name":"name","abstract":"

The rule’s human-readable name. Should be short, descriptive and formatted in Title Case. May contain spaces.

","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:18SwiftLintFramework15RuleDescriptionV11descriptionSSvp":{"name":"description","abstract":"

The rule’s verbose description. Should read as a sentence or short paragraph. Good things to include are an","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:18SwiftLintFramework15RuleDescriptionV4kindAA0D4KindOvp":{"name":"kind","abstract":"

The RuleKind that best categorizes this rule.

","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:18SwiftLintFramework15RuleDescriptionV21nonTriggeringExamplesSayAA7ExampleVGvp":{"name":"nonTriggeringExamples","abstract":"

Swift source examples that do not trigger a violation for this rule. Used for documentation purposes to inform","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:18SwiftLintFramework15RuleDescriptionV18triggeringExamplesSayAA7ExampleVGvp":{"name":"triggeringExamples","abstract":"

Swift source examples that do trigger one or more violations for this rule. Used for documentation purposes to","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:18SwiftLintFramework15RuleDescriptionV11correctionsSDyAA7ExampleVAFGvp":{"name":"corrections","abstract":"

Pairs of Swift source examples, where keys are examples that trigger violations for this rule, and the values","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:18SwiftLintFramework15RuleDescriptionV17deprecatedAliasesShySSGvp":{"name":"deprecatedAliases","abstract":"

Any previous iteration of the rule’s identifier that was previously shipped with SwiftLint.

","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:18SwiftLintFramework15RuleDescriptionV03minA7VersionAA0aG0Vvp":{"name":"minSwiftVersion","abstract":"

The oldest version of the Swift compiler supported by this rule.

","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:18SwiftLintFramework15RuleDescriptionV18requiresFileOnDiskSbvp":{"name":"requiresFileOnDisk","abstract":"

Whether or not this rule can only be executed on a file physically on-disk. Typically necessary for rules","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:18SwiftLintFramework15RuleDescriptionV07consoleE0SSvp":{"name":"consoleDescription","abstract":"

The console-printable string for this description.

","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:18SwiftLintFramework15RuleDescriptionV14allIdentifiersSaySSGvp":{"name":"allIdentifiers","abstract":"

All identifiers that have been used to uniquely identify this rule in past and current SwiftLint versions.

","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:18SwiftLintFramework15RuleDescriptionV10identifier4name11description4kind03minA7Version21nonTriggeringExamples010triggeringN011corrections17deprecatedAliases18requiresFileOnDiskACSS_S2SAA0D4KindOAA0aK0VSayAA7ExampleVGATSDyA2SGShySSGSbtcfc":{"name":"init(identifier:name:description:kind:minSwiftVersion:nonTriggeringExamples:triggeringExamples:corrections:deprecatedAliases:requiresFileOnDisk:)","abstract":"

Creates a RuleDescription by specifying all its properties directly.

","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"RuleDescription"},"Structs/Region.html#/s:18SwiftLintFramework6RegionV5startAA8LocationVvp":{"name":"start","abstract":"

The location describing the start of the region. All locations that are less than this value","parent_name":"Region"},"Structs/Region.html#/s:18SwiftLintFramework6RegionV3endAA8LocationVvp":{"name":"end","abstract":"

The location describing the end of the region. All locations that are greater than this value","parent_name":"Region"},"Structs/Region.html#/s:18SwiftLintFramework6RegionV23disabledRuleIdentifiersShyAA0F10IdentifierOGvp":{"name":"disabledRuleIdentifiers","abstract":"

All SwiftLint rule identifiers that are disabled in this region.

","parent_name":"Region"},"Structs/Region.html#/s:18SwiftLintFramework6RegionV5start3end23disabledRuleIdentifiersAcA8LocationV_AHShyAA0H10IdentifierOGtcfc":{"name":"init(start:end:disabledRuleIdentifiers:)","abstract":"

Creates a Region by setting explicit values for all its properties.

","parent_name":"Region"},"Structs/Region.html#/s:18SwiftLintFramework6RegionV8containsySbAA8LocationVF":{"name":"contains(_:)","abstract":"

Whether the specific location is contained in this region.

","parent_name":"Region"},"Structs/Region.html#/s:18SwiftLintFramework6RegionV13isRuleEnabledySbAA0F0_pF":{"name":"isRuleEnabled(_:)","abstract":"

Whether the specified rule is enabled in this region.

","parent_name":"Region"},"Structs/Region.html#/s:18SwiftLintFramework6RegionV14isRuleDisabledySbAA0F0_pF":{"name":"isRuleDisabled(_:)","abstract":"

Whether the specified rule is disabled in this region.

","parent_name":"Region"},"Structs/Region.html#/s:18SwiftLintFramework6RegionV26deprecatedAliasesDisabling4ruleShySSGAA4Rule_p_tF":{"name":"deprecatedAliasesDisabling(rule:)","abstract":"

Returns the deprecated rule aliases that are disabling the specified rule in this region.","parent_name":"Region"},"Structs/Location.html#/s:18SwiftLintFramework8LocationV4fileSSSgvp":{"name":"file","abstract":"

The file path on disk for this location.

","parent_name":"Location"},"Structs/Location.html#/s:18SwiftLintFramework8LocationV4lineSiSgvp":{"name":"line","abstract":"

The line offset in the file for this location. 1-indexed.

","parent_name":"Location"},"Structs/Location.html#/s:18SwiftLintFramework8LocationV9characterSiSgvp":{"name":"character","abstract":"

The character offset in the file for this location. 1-indexed.

","parent_name":"Location"},"Structs/Location.html#/s:18SwiftLintFramework8LocationV11descriptionSSvp":{"name":"description","abstract":"

A lossless printable description of this location.

","parent_name":"Location"},"Structs/Location.html#/s:18SwiftLintFramework8LocationV12relativeFileSSSgvp":{"name":"relativeFile","abstract":"

The file path for this location relative to the current working directory.

","parent_name":"Location"},"Structs/Location.html#/s:18SwiftLintFramework8LocationV4file4line9characterACSSSg_SiSgAHtcfc":{"name":"init(file:line:character:)","abstract":"

Creates a Location by specifying its properties directly.

","parent_name":"Location"},"Structs/Location.html#/s:18SwiftLintFramework8LocationV4file10byteOffsetAcA0aB4FileC_012SourceKittenC09ByteCountVtcfc":{"name":"init(file:byteOffset:)","abstract":"

Creates a Location based on a SwiftLintFile and a byte-offset into the file.","parent_name":"Location"},"Structs/Location.html#/s:18SwiftLintFramework8LocationV4file15characterOffsetAcA0aB4FileC_Sitcfc":{"name":"init(file:characterOffset:)","abstract":"

Creates a Location based on a SwiftLintFile and a UTF8 character-offset into the file.","parent_name":"Location"},"Structs/Location.html#/s:SL1loiySbx_xtFZ":{"name":"<(_:_:)","parent_name":"Location"},"Structs/CollectedLinter.html#/s:18SwiftLintFramework15CollectedLinterV4fileAA0aB4FileCvp":{"name":"file","abstract":"

The file to lint with this linter.

","parent_name":"CollectedLinter"},"Structs/CollectedLinter.html#/s:18SwiftLintFramework15CollectedLinterV15styleViolations5usingSayAA14StyleViolationVGAA11RuleStorageC_tF":{"name":"styleViolations(using:)","abstract":"

Computes or retrieves style violations.

","parent_name":"CollectedLinter"},"Structs/CollectedLinter.html#/s:18SwiftLintFramework15CollectedLinterV27styleViolationsAndRuleTimes5usingSayAA14StyleViolationVG_SaySS2id_Sd4timetGtAA0I7StorageC_tF":{"name":"styleViolationsAndRuleTimes(using:)","abstract":"

Computes or retrieves style violations and the time spent executing each rule.

","parent_name":"CollectedLinter"},"Structs/CollectedLinter.html#/s:18SwiftLintFramework15CollectedLinterV7correct5usingSayAA10CorrectionVGAA11RuleStorageC_tF":{"name":"correct(using:)","abstract":"

Applies corrections for all rules to this file, returning performed corrections.

","parent_name":"CollectedLinter"},"Structs/CollectedLinter.html#/s:18SwiftLintFramework15CollectedLinterV6format7useTabs11indentWidthySb_SitF":{"name":"format(useTabs:indentWidth:)","abstract":"

Formats the file associated with this linter.

","parent_name":"CollectedLinter"},"Structs/Linter.html#/s:18SwiftLintFramework6LinterV4fileAA0aB4FileCvp":{"name":"file","abstract":"

The file to lint with this linter.

","parent_name":"Linter"},"Structs/Linter.html#/s:18SwiftLintFramework6LinterV12isCollectingSbvp":{"name":"isCollecting","abstract":"

Whether or not this linter will be used to collect information from several files.

","parent_name":"Linter"},"Structs/Linter.html#/s:18SwiftLintFramework6LinterV4file13configuration5cache17compilerArgumentsAcA0aB4FileC_AA13ConfigurationVAA0D5CacheCSgSaySSGtcfc":{"name":"init(file:configuration:cache:compilerArguments:)","abstract":"

Creates a Linter by specifying its properties directly.

","parent_name":"Linter"},"Structs/Linter.html#/s:18SwiftLintFramework6LinterV7collect4intoAA09CollectedD0VAA11RuleStorageC_tF":{"name":"collect(into:)","abstract":"

Returns a linter capable of checking for violations after running each rule’s collection step.

","parent_name":"Linter"},"Structs/Example.html#/s:18SwiftLintFramework7ExampleV4codeSSvp":{"name":"code","abstract":"

The contents of the example

","parent_name":"Example"},"Structs/Example.html#/s:18SwiftLintFramework7ExampleV13configurationypSgvp":{"name":"configuration","abstract":"

The untyped configuration to apply to the rule, if deviating from the default configuration.","parent_name":"Example"},"Structs/Example.html#/s:18SwiftLintFramework7ExampleV20testMultiByteOffsetsSbvp":{"name":"testMultiByteOffsets","abstract":"

Whether the example should be tested by prepending multibyte grapheme clusters

","parent_name":"Example"},"Structs/Example.html#/s:18SwiftLintFramework7ExampleV11testOnLinuxSbvp":{"name":"testOnLinux","abstract":"

Whether the example should be tested on Linux

","parent_name":"Example"},"Structs/Example.html#/s:18SwiftLintFramework7ExampleV4files12StaticStringVvp":{"name":"file","abstract":"

The path to the file where the example was created

","parent_name":"Example"},"Structs/Example.html#/s:18SwiftLintFramework7ExampleV4lineSuvp":{"name":"line","abstract":"

The line in the file where the example was created

","parent_name":"Example"},"Structs/Example.html#/s:18SwiftLintFramework7ExampleV_13configuration20testMultiByteOffsets0F7OnLinux4file4line24excludeFromDocumentationACSS_ypSgS2bs12StaticStringVSuSbtcfc":{"name":"init(_:configuration:testMultiByteOffsets:testOnLinux:file:line:excludeFromDocumentation:)","abstract":"

Create a new Example with the specified code, file, and line.

","parent_name":"Example"},"Structs/Example.html#/s:18SwiftLintFramework7ExampleV4with4codeACSS_tF":{"name":"with(code:)","abstract":"

Returns the same example, but with the code that is passed in

","parent_name":"Example"},"Structs/Example.html#/s:18SwiftLintFramework7ExampleV24removingViolationMarkersACyF":{"name":"removingViolationMarkers()","abstract":"

Returns a copy of the Example with all instances of the “↓” character removed.

","parent_name":"Example"},"Structs/Example.html#/s:18SwiftLintFramework7ExampleV7focusedACyF":{"name":"focused()","abstract":"

Makes the current example focused.

","parent_name":"Example"},"Structs/Example.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"Example"},"Structs/Example.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"Example"},"Structs/Example.html#/s:SL1loiySbx_xtFZ":{"name":"<(_:_:)","parent_name":"Example"},"Structs/Correction.html#/s:18SwiftLintFramework10CorrectionV15ruleDescriptionAA04RuleF0Vvp":{"name":"ruleDescription","abstract":"

The description of the rule for which this correction was applied.

","parent_name":"Correction"},"Structs/Correction.html#/s:18SwiftLintFramework10CorrectionV8locationAA8LocationVvp":{"name":"location","abstract":"

The location of the original violation that was corrected.

","parent_name":"Correction"},"Structs/Correction.html#/s:18SwiftLintFramework10CorrectionV18consoleDescriptionSSvp":{"name":"consoleDescription","abstract":"

The console-printable description for this correction.

","parent_name":"Correction"},"Structs/Command/Modifier.html#/s:18SwiftLintFramework7CommandV8ModifierO8previousyA2EmF":{"name":"previous","abstract":"

The command should only apply to the line preceding its definition.

","parent_name":"Modifier"},"Structs/Command/Modifier.html#/s:18SwiftLintFramework7CommandV8ModifierO4thisyA2EmF":{"name":"this","abstract":"

The command should only apply to the same line as its definition.

","parent_name":"Modifier"},"Structs/Command/Modifier.html#/s:18SwiftLintFramework7CommandV8ModifierO4nextyA2EmF":{"name":"next","abstract":"

The command should only apply to the line following its definition.

","parent_name":"Modifier"},"Structs/Command/Action.html#/s:18SwiftLintFramework7CommandV6ActionO6enableyA2EmF":{"name":"enable","abstract":"

The rule(s) associated with this command should be enabled by the SwiftLint engine.

","parent_name":"Action"},"Structs/Command/Action.html#/s:18SwiftLintFramework7CommandV6ActionO7disableyA2EmF":{"name":"disable","abstract":"

The rule(s) associated with this command should be disabled by the SwiftLint engine.

","parent_name":"Action"},"Structs/Command/Action.html":{"name":"Action","abstract":"

The action (verb) that SwiftLint should perform when interpreting this command.

","parent_name":"Command"},"Structs/Command/Modifier.html":{"name":"Modifier","abstract":"

The modifier for a command, used to modify its scope.

","parent_name":"Command"},"Structs/Command.html#/s:18SwiftLintFramework7CommandV6action15ruleIdentifiers4line9character8modifier15trailingCommentA2C6ActionO_ShyAA14RuleIdentifierOGS2iSgAC8ModifierOSgSSSgtcfc":{"name":"init(action:ruleIdentifiers:line:character:modifier:trailingComment:)","abstract":"

Creates a command based on the specified parameters.

","parent_name":"Command"},"Structs/Command.html#/s:18SwiftLintFramework7CommandV12actionString4line9characterACSgSS_S2itcfc":{"name":"init(actionString:line:character:)","abstract":"

Creates a command based on the specified parameters.

","parent_name":"Command"},"Structs/SourceKittenDictionary.html#/s:18SwiftLintFramework22SourceKittenDictionaryV5valueSDySS0deC00D16KitRepresentable_pGvp":{"name":"value","abstract":"

The underlying SourceKitten dictionary.

","parent_name":"SourceKittenDictionary"},"Structs/SourceKittenDictionary.html#/s:18SwiftLintFramework22SourceKittenDictionaryV12substructureSayACGvp":{"name":"substructure","abstract":"

The cached substructure for this dictionary. Empty if there is no substructure.

","parent_name":"SourceKittenDictionary"},"Structs/SourceKittenDictionary.html#/s:18SwiftLintFramework22SourceKittenDictionaryV14expressionKindAA0a10ExpressionH0OSgvp":{"name":"expressionKind","abstract":"

The kind of Swift expression represented by this dictionary, if it is an expression.

","parent_name":"SourceKittenDictionary"},"Structs/SourceKittenDictionary.html#/s:18SwiftLintFramework22SourceKittenDictionaryV15declarationKind0deC00a11DeclarationH0OSgvp":{"name":"declarationKind","abstract":"

The kind of Swift declaration represented by this dictionary, if it is a declaration.

","parent_name":"SourceKittenDictionary"},"Structs/SourceKittenDictionary.html#/s:18SwiftLintFramework22SourceKittenDictionaryV13statementKind0deC009StatementH0OSgvp":{"name":"statementKind","abstract":"

The kind of Swift statement represented by this dictionary, if it is a statement.

","parent_name":"SourceKittenDictionary"},"Structs/SourceKittenDictionary.html#/s:18SwiftLintFramework22SourceKittenDictionaryV13accessibilityAA18AccessControlLevelOSgvp":{"name":"accessibility","abstract":"

The accessibility level for this dictionary, if it is a declaration.

","parent_name":"SourceKittenDictionary"},"Structs/Configuration/RulesMode.html#/s:18SwiftLintFramework13ConfigurationV9RulesModeO7defaultyAEShySSG_AGtcAEmF":{"name":"default(disabled:optIn:)","abstract":"

The default rules mode, which will enable all rules that aren’t defined as being opt-in","parent_name":"RulesMode"},"Structs/Configuration/RulesMode.html#/s:18SwiftLintFramework13ConfigurationV9RulesModeO4onlyyAEShySSGcAEmF":{"name":"only(_:)","abstract":"

Only enable the rules explicitly listed.

","parent_name":"RulesMode"},"Structs/Configuration/RulesMode.html#/s:18SwiftLintFramework13ConfigurationV9RulesModeO10allEnabledyA2EmF":{"name":"allEnabled","abstract":"

Enable all available rules.

","parent_name":"RulesMode"},"Structs/Configuration/IndentationStyle.html#/s:18SwiftLintFramework13ConfigurationV16IndentationStyleO4tabsyA2EmF":{"name":"tabs","abstract":"

Swift source code should be indented using tabs.

","parent_name":"IndentationStyle"},"Structs/Configuration/IndentationStyle.html#/s:18SwiftLintFramework13ConfigurationV16IndentationStyleO6spacesyAESi_tcAEmF":{"name":"spaces(count:)","abstract":"

Swift source code should be indented using spaces with count spaces per indentation level.

","parent_name":"IndentationStyle"},"Structs/Configuration/IndentationStyle.html#/s:18SwiftLintFramework13ConfigurationV16IndentationStyleO7defaultAEvpZ":{"name":"default","abstract":"

The default indentation style if none is explicitly provided.

","parent_name":"IndentationStyle"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV7defaultACvpZ":{"name":"default","abstract":"

The default Configuration resulting from an empty configuration file.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV15defaultFileNameSSvpZ":{"name":"defaultFileName","abstract":"

The default file name to look for user-defined configurations.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV13includedPathsSaySSGvp":{"name":"includedPaths","abstract":"

The paths that should be included when linting

","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV13excludedPathsSaySSGvp":{"name":"excludedPaths","abstract":"

The paths that should be excluded when linting

","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV11indentationAC16IndentationStyleOvp":{"name":"indentation","abstract":"

The style to use when indenting Swift source code.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV16warningThresholdSiSgvp":{"name":"warningThreshold","abstract":"

The threshold for the number of warnings to tolerate before treating the lint as having failed.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV8reporterSSvp":{"name":"reporter","abstract":"

The identifier for the Reporter to use to report style violations.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV9cachePathSSSgvp":{"name":"cachePath","abstract":"

The location of the persisted cache to use with this configuration.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV22allowZeroLintableFilesSbvp":{"name":"allowZeroLintableFiles","abstract":"

Allow or disallow SwiftLint to exit successfully when passed only ignored or unlintable files.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV013basedOnCustomD5FilesSbvp":{"name":"basedOnCustomConfigurationFiles","abstract":"

This value is true iff the --config parameter was used to specify (a) configuration file(s)","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV5rulesSayAA4Rule_pGvp":{"name":"rules","abstract":"

All rules enabled in this configuration

","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV13rootDirectorySSvp":{"name":"rootDirectory","abstract":"

The root directory is the directory that included & excluded paths relate to.","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV9rulesModeAC05RulesF0Ovp":{"name":"rulesMode","abstract":"

The rules mode used for this configuration.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV18configurationFiles14enableAllRules9cachePath27ignoreParentAndChildConfigs20mockedNetworkResults25useDefaultConfigOnFailureACSaySSG_SbSSSgSbSDyS2SGSbSgtcfc":{"name":"init(configurationFiles:enableAllRules:cachePath:ignoreParentAndChildConfigs:mockedNetworkResults:useDefaultConfigOnFailure:)","abstract":"

Creates a Configuration with convenience parameters.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV31withPrecomputedCacheDescriptionACyF":{"name":"withPrecomputedCacheDescription()","abstract":"

Returns a copy of the current Configuration with its computedCacheDescription property set to the value of","parent_name":"Configuration"},"Structs/Configuration/IndentationStyle.html":{"name":"IndentationStyle","abstract":"

The style of indentation used in a Swift project.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV13lintableFiles6inPath12forceExclude15excludeByPrefixSayAA0aB4FileCGSS_S2btF":{"name":"lintableFiles(inPath:forceExclude:excludeByPrefix:)","abstract":"

Returns the files that can be linted by SwiftLint in the specified parent path.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV19filterExcludedPaths11fileManager2inSaySSGAA012LintableFileI0_p_AGdtF":{"name":"filterExcludedPaths(fileManager:in:)","abstract":"

Returns an array of file paths after removing the excluded paths as defined by this configuration.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV27filterExcludedPathsByPrefix2inSaySSGAFd_tF":{"name":"filterExcludedPathsByPrefix(in:)","abstract":"

Returns the file paths that are excluded by this configuration using filtering by absolute path prefix.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV13configuration3forAcA0aB4FileC_tF":{"name":"configuration(for:)","abstract":"

Returns a new configuration that applies to the specified file by merging the current configuration with any","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV4dict8ruleList14enableAllRules9cachePathACSDySSypG_AA04RuleG0VSbSSSgtKcfc":{"name":"init(dict:ruleList:enableAllRules:cachePath:)","abstract":"

Creates a Configuration value based on the specified parameters.

","parent_name":"Configuration"},"Structs/Configuration/RulesMode.html":{"name":"RulesMode","abstract":"

Represents how a Configuration object can be configured with regards to rules.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"Configuration"},"Structs/Configuration.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"Configuration"},"Structs/Configuration.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"Configuration"},"Structs/RuleListDocumentation.html#/s:18SwiftLintFramework21RuleListDocumentationVyAcA0dE0Vcfc":{"name":"init(_:)","abstract":"

Creates a RuleListDocumentation instance from a RuleList.

","parent_name":"RuleListDocumentation"},"Structs/RuleListDocumentation.html#/s:18SwiftLintFramework21RuleListDocumentationV5write2toy10Foundation3URLV_tKF":{"name":"write(to:)","abstract":"

Write the rule list documentation as markdown files to the specified directory.

","parent_name":"RuleListDocumentation"},"Structs/RuleListDocumentation.html":{"name":"RuleListDocumentation","abstract":"

User-facing documentation for a SwiftLint RuleList.

"},"Structs/Configuration.html":{"name":"Configuration","abstract":"

The configuration struct for SwiftLint. User-defined in the .swiftlint.yml file, drives the behavior of SwiftLint.

"},"Structs/SourceKittenDictionary.html":{"name":"SourceKittenDictionary","abstract":"

A collection of keys and values as parsed out of SourceKit, with many conveniences for accessing SwiftLint-specific"},"Structs/Command.html":{"name":"Command","abstract":"

A SwiftLint-interpretable command to modify SwiftLint’s behavior embedded as comments in source code.

"},"Structs/Correction.html":{"name":"Correction","abstract":"

A value describing a SwiftLint violation that was corrected.

"},"Structs/Example.html":{"name":"Example","abstract":"

Captures code and context information for an example of a triggering or"},"Structs/Linter.html":{"name":"Linter","abstract":"

Represents a file that can be linted for style violations and corrections after being collected.

"},"Structs/CollectedLinter.html":{"name":"CollectedLinter","abstract":"

Represents a file that can compute style violations and corrections for a list of rules.

"},"Structs/Location.html":{"name":"Location","abstract":"

The placement of a segment of Swift in a collection of source files.

"},"Structs/Region.html":{"name":"Region","abstract":"

A contiguous region of Swift source code.

"},"Structs/RuleDescription.html":{"name":"RuleDescription","abstract":"

A detailed description for a SwiftLint rule. Used for both documentation and testing purposes.

"},"Structs/RuleList.html":{"name":"RuleList","abstract":"

A list of available SwiftLint rules.

"},"Structs/RuleParameter.html":{"name":"RuleParameter","abstract":"

A configuration parameter for rules.

"},"Structs/StyleViolation.html":{"name":"StyleViolation","abstract":"

A value describing an instance of Swift source code that is considered invalid by a SwiftLint rule.

"},"Structs/SwiftLintSyntaxMap.html":{"name":"SwiftLintSyntaxMap","abstract":"

Represents a Swift file’s syntax information.

"},"Structs/SwiftLintSyntaxToken.html":{"name":"SwiftLintSyntaxToken","abstract":"

A SwiftLint-aware Swift syntax token.

"},"Structs/SwiftVersion.html":{"name":"SwiftVersion","abstract":"

A value describing the version of the Swift compiler.

"},"Structs/Version.html":{"name":"Version","abstract":"

A type describing the SwiftLint version.

"},"Structs/YamlParser.html":{"name":"YamlParser","abstract":"

An interface for parsing YAML.

"},"Structs/CodeClimateReporter.html":{"name":"CodeClimateReporter","abstract":"

Reports violations as a JSON array in Code Climate format.

"},"Structs/GitLabJUnitReporter.html":{"name":"GitLabJUnitReporter","abstract":"

Reports violations as JUnit XML supported by GitLab.

"},"Structs/SonarQubeReporter.html":{"name":"SonarQubeReporter","abstract":"

Reports violations in SonarQube import format.

"},"Structs/XcodeReporter.html":{"name":"XcodeReporter","abstract":"

Reports violations in the format Xcode uses to display in the IDE. (default)

"},"Protocols/RuleConfiguration.html#/s:18SwiftLintFramework17RuleConfigurationP18consoleDescriptionSSvp":{"name":"consoleDescription","abstract":"

A human-readable description for this configuration and its applied values.

","parent_name":"RuleConfiguration"},"Protocols/RuleConfiguration.html#/s:18SwiftLintFramework17RuleConfigurationP5apply13configurationyyp_tKF":{"name":"apply(configuration:)","abstract":"

Apply an untyped configuration to the current value.

","parent_name":"RuleConfiguration"},"Protocols/RuleConfiguration.html#/s:18SwiftLintFramework17RuleConfigurationP9isEqualToySbAaB_pF":{"name":"isEqualTo(_:)","abstract":"

Whether the specified configuration is equivalent to the current value.

","parent_name":"RuleConfiguration"},"Protocols/CollectingCorrectableRule.html#/s:18SwiftLintFramework25CollectingCorrectableRuleP7correct4file13collectedInfo17compilerArgumentsSayAA10CorrectionVGAA0aB4FileC_SDyAL0nJ0QzGSaySSGtF":{"name":"correct(file:collectedInfo:compilerArguments:)","abstract":"

Attempts to correct the violations to this rule in the specified file after collecting file info for all files","parent_name":"CollectingCorrectableRule"},"Protocols/CollectingCorrectableRule.html#/s:18SwiftLintFramework25CollectingCorrectableRuleP7correct4file13collectedInfoSayAA10CorrectionVGAA0aB4FileC_SDyAK0lJ0QzGtF":{"name":"correct(file:collectedInfo:)","abstract":"

Attempts to correct the violations to this rule in the specified file after collecting file info for all files","parent_name":"CollectingCorrectableRule"},"Protocols/CollectingCorrectableRule.html#/s:18SwiftLintFramework15CorrectableRuleP7correct4file5using17compilerArgumentsSayAA10CorrectionVGAA0aB4FileC_AA0E7StorageCSaySSGtF":{"name":"correct(file:using:compilerArguments:)","parent_name":"CollectingCorrectableRule"},"Protocols/CollectingCorrectableRule.html#/s:18SwiftLintFramework15CorrectableRuleP7correct4fileSayAA10CorrectionVGAA0aB4FileC_tF":{"name":"correct(file:)","parent_name":"CollectingCorrectableRule"},"Protocols/CollectingCorrectableRule.html#/s:18SwiftLintFramework15CorrectableRuleP7correct4file17compilerArgumentsSayAA10CorrectionVGAA0aB4FileC_SaySSGtF":{"name":"correct(file:compilerArguments:)","parent_name":"CollectingCorrectableRule"},"Protocols/CollectingRule.html#/s:18SwiftLintFramework14CollectingRuleP8FileInfoQa":{"name":"FileInfo","abstract":"

The kind of information to collect for each file being linted for this rule.

","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:18SwiftLintFramework14CollectingRuleP11collectInfo3for17compilerArguments04FileG0QzAA0abK0C_SaySSGtF":{"name":"collectInfo(for:compilerArguments:)","abstract":"

Collects information for the specified file, to be analyzed by a CollectedLinter.

","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:18SwiftLintFramework14CollectingRuleP11collectInfo3for04FileG0QzAA0abI0C_tF":{"name":"collectInfo(for:)","abstract":"

Collects information for the specified file, to be analyzed by a CollectedLinter.

","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:18SwiftLintFramework14CollectingRuleP8validate4file13collectedInfo17compilerArgumentsSayAA14StyleViolationVGAA0aB4FileC_SDyAL0nI0QzGSaySSGtF":{"name":"validate(file:collectedInfo:compilerArguments:)","abstract":"

Executes the rule on a file after collecting file info for all files and returns any violations to the rule’s","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:18SwiftLintFramework14CollectingRuleP8validate4file13collectedInfoSayAA14StyleViolationVGAA0aB4FileC_SDyAK0lI0QzGtF":{"name":"validate(file:collectedInfo:)","abstract":"

Executes the rule on a file after collecting file info for all files and returns any violations to the rule’s","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:18SwiftLintFramework4RuleP11collectInfo3for4into17compilerArgumentsyAA0aB4FileC_AA0D7StorageCSaySSGtF":{"name":"collectInfo(for:into:compilerArguments:)","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:18SwiftLintFramework4RuleP8validate4file5using17compilerArgumentsSayAA14StyleViolationVGAA0aB4FileC_AA0D7StorageCSaySSGtF":{"name":"validate(file:using:compilerArguments:)","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:18SwiftLintFramework4RuleP8validate4fileSayAA14StyleViolationVGAA0aB4FileC_tF":{"name":"validate(file:)","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:18SwiftLintFramework4RuleP8validate4file17compilerArgumentsSayAA14StyleViolationVGAA0aB4FileC_SaySSGtF":{"name":"validate(file:compilerArguments:)","parent_name":"CollectingRule"},"Protocols/AnalyzerRule.html#/s:18SwiftLintFramework4RuleP8validate4fileSayAA14StyleViolationVGAA0aB4FileC_tF":{"name":"validate(file:)","parent_name":"AnalyzerRule"},"Protocols/SubstitutionCorrectableASTRule.html#/s:18SwiftLintFramework30SubstitutionCorrectableASTRuleP15violationRanges2in4kind10dictionarySaySo8_NSRangeVGAA0aB4FileC_8KindTypeQzAA22SourceKittenDictionaryVtF":{"name":"violationRanges(in:kind:dictionary:)","abstract":"

Returns the NSString-based NSRanges to be replaced in the specified file.

","parent_name":"SubstitutionCorrectableASTRule"},"Protocols/SubstitutionCorrectableASTRule.html#/s:18SwiftLintFramework27SubstitutionCorrectableRuleP15violationRanges2inSaySo8_NSRangeVGAA0aB4FileC_tF":{"name":"violationRanges(in:)","parent_name":"SubstitutionCorrectableASTRule"},"Protocols/SubstitutionCorrectableRule.html#/s:18SwiftLintFramework27SubstitutionCorrectableRuleP15violationRanges2inSaySo8_NSRangeVGAA0aB4FileC_tF":{"name":"violationRanges(in:)","abstract":"

Returns the NSString-based NSRanges to be replaced in the specified file.

","parent_name":"SubstitutionCorrectableRule"},"Protocols/SubstitutionCorrectableRule.html#/s:18SwiftLintFramework27SubstitutionCorrectableRuleP12substitution3for2inSo8_NSRangeV_SStSgAH_AA0aB4FileCtF":{"name":"substitution(for:in:)","abstract":"

Returns the substitution to apply for the given range.

","parent_name":"SubstitutionCorrectableRule"},"Protocols/SubstitutionCorrectableRule.html#/s:18SwiftLintFramework15CorrectableRuleP7correct4fileSayAA10CorrectionVGAA0aB4FileC_tF":{"name":"correct(file:)","parent_name":"SubstitutionCorrectableRule"},"Protocols/CorrectableRule.html#/s:18SwiftLintFramework15CorrectableRuleP7correct4file17compilerArgumentsSayAA10CorrectionVGAA0aB4FileC_SaySSGtF":{"name":"correct(file:compilerArguments:)","abstract":"

Attempts to correct the violations to this rule in the specified file.

","parent_name":"CorrectableRule"},"Protocols/CorrectableRule.html#/s:18SwiftLintFramework15CorrectableRuleP7correct4fileSayAA10CorrectionVGAA0aB4FileC_tF":{"name":"correct(file:)","abstract":"

Attempts to correct the violations to this rule in the specified file.

","parent_name":"CorrectableRule"},"Protocols/CorrectableRule.html#/s:18SwiftLintFramework15CorrectableRuleP7correct4file5using17compilerArgumentsSayAA10CorrectionVGAA0aB4FileC_AA0E7StorageCSaySSGtF":{"name":"correct(file:using:compilerArguments:)","abstract":"

Attempts to correct the violations to this rule in the specified file after collecting file info for all files","parent_name":"CorrectableRule"},"Protocols/ConfigurationProviderRule.html#/s:18SwiftLintFramework25ConfigurationProviderRuleP0D4TypeQa":{"name":"ConfigurationType","abstract":"

The type of configuration used to configure this rule.

","parent_name":"ConfigurationProviderRule"},"Protocols/ConfigurationProviderRule.html#/s:18SwiftLintFramework25ConfigurationProviderRuleP13configuration0D4TypeQzvp":{"name":"configuration","abstract":"

This rule’s configuration.

","parent_name":"ConfigurationProviderRule"},"Protocols/ConfigurationProviderRule.html#/s:18SwiftLintFramework4RuleP13configurationxyp_tKcfc":{"name":"init(configuration:)","parent_name":"ConfigurationProviderRule"},"Protocols/ConfigurationProviderRule.html#/s:18SwiftLintFramework4RuleP9isEqualToySbAaB_pF":{"name":"isEqualTo(_:)","parent_name":"ConfigurationProviderRule"},"Protocols/ConfigurationProviderRule.html#/s:18SwiftLintFramework4RuleP24configurationDescriptionSSvp":{"name":"configurationDescription","parent_name":"ConfigurationProviderRule"},"Protocols/Rule.html#/s:18SwiftLintFramework4RuleP11descriptionAA0D11DescriptionVvpZ":{"name":"description","abstract":"

A verbose description of many of this rule’s properties.

","parent_name":"Rule"},"Protocols/Rule.html#/s:18SwiftLintFramework4RuleP24configurationDescriptionSSvp":{"name":"configurationDescription","abstract":"

A description of how this rule has been configured to run.

","parent_name":"Rule"},"Protocols/Rule.html#/s:18SwiftLintFramework4RulePxycfc":{"name":"init()","abstract":"

A default initializer for rules. All rules need to be trivially initializable.

","parent_name":"Rule"},"Protocols/Rule.html#/s:18SwiftLintFramework4RuleP13configurationxyp_tKcfc":{"name":"init(configuration:)","abstract":"

Creates a rule by applying its configuration.

","parent_name":"Rule"},"Protocols/Rule.html#/s:18SwiftLintFramework4RuleP8validate4file17compilerArgumentsSayAA14StyleViolationVGAA0aB4FileC_SaySSGtF":{"name":"validate(file:compilerArguments:)","abstract":"

Executes the rule on a file and returns any violations to the rule’s expectations.

","parent_name":"Rule"},"Protocols/Rule.html#/s:18SwiftLintFramework4RuleP8validate4fileSayAA14StyleViolationVGAA0aB4FileC_tF":{"name":"validate(file:)","abstract":"

Executes the rule on a file and returns any violations to the rule’s expectations.

","parent_name":"Rule"},"Protocols/Rule.html#/s:18SwiftLintFramework4RuleP9isEqualToySbAaB_pF":{"name":"isEqualTo(_:)","abstract":"

Whether or not the specified rule is equivalent to the current rule.

","parent_name":"Rule"},"Protocols/Rule.html#/s:18SwiftLintFramework4RuleP11collectInfo3for4into17compilerArgumentsyAA0aB4FileC_AA0D7StorageCSaySSGtF":{"name":"collectInfo(for:into:compilerArguments:)","abstract":"

Collects information for the specified file in a storage object, to be analyzed by a CollectedLinter.

","parent_name":"Rule"},"Protocols/Rule.html#/s:18SwiftLintFramework4RuleP8validate4file5using17compilerArgumentsSayAA14StyleViolationVGAA0aB4FileC_AA0D7StorageCSaySSGtF":{"name":"validate(file:using:compilerArguments:)","abstract":"

Executes the rule on a file after collecting file info for all files and returns any violations to the rule’s","parent_name":"Rule"},"Protocols/Reporter.html#/s:18SwiftLintFramework8ReporterP10identifierSSvpZ":{"name":"identifier","abstract":"

The unique identifier for this reporter.

","parent_name":"Reporter"},"Protocols/Reporter.html#/s:18SwiftLintFramework8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","abstract":"

Whether or not this reporter can output incrementally as violations are found or if all violations must be","parent_name":"Reporter"},"Protocols/Reporter.html#/s:18SwiftLintFramework8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","abstract":"

Return a string with the report for the specified violations.

","parent_name":"Reporter"},"Protocols/ASTRule.html#/s:18SwiftLintFramework7ASTRuleP8KindTypeQa":{"name":"KindType","abstract":"

The kind of token being recursed over.

","parent_name":"ASTRule"},"Protocols/ASTRule.html#/s:18SwiftLintFramework7ASTRuleP8validate4file4kind10dictionarySayAA14StyleViolationVGAA0aB4FileC_8KindTypeQzAA22SourceKittenDictionaryVtF":{"name":"validate(file:kind:dictionary:)","abstract":"

Executes the rule on a file and a subset of its AST structure, returnng any violations to the rule’s","parent_name":"ASTRule"},"Protocols/ASTRule.html#/s:18SwiftLintFramework7ASTRuleP4kind4from8KindTypeQzSgAA22SourceKittenDictionaryV_tF":{"name":"kind(from:)","abstract":"

Get the kind from the specified dictionary.

","parent_name":"ASTRule"},"Protocols/ASTRule.html#/s:18SwiftLintFramework4RuleP8validate4fileSayAA14StyleViolationVGAA0aB4FileC_tF":{"name":"validate(file:)","parent_name":"ASTRule"},"Protocols/ASTRule.html#/s:18SwiftLintFramework7ASTRulePAAE8validate4file10dictionarySayAA14StyleViolationVGAA0aB4FileC_AA22SourceKittenDictionaryVtF":{"name":"validate(file:dictionary:)","abstract":"

Executes the rule on a file and a subset of its AST structure, returnng any violations to the rule’s","parent_name":"ASTRule"},"Protocols/LintableFileManager.html#/s:18SwiftLintFramework19LintableFileManagerP07filesToB06inPath13rootDirectorySaySSGSS_SSSgtF":{"name":"filesToLint(inPath:rootDirectory:)","abstract":"

Returns all files that can be linted in the specified path. If the path is relative, it will be appended to the","parent_name":"LintableFileManager"},"Protocols/LintableFileManager.html#/s:18SwiftLintFramework19LintableFileManagerP16modificationDate03forE6AtPath10Foundation0H0VSgSS_tF":{"name":"modificationDate(forFileAtPath:)","abstract":"

Returns the date when the file at the specified path was last modified. Returns nil if the file cannot be","parent_name":"LintableFileManager"},"Protocols/LintableFileManager.html":{"name":"LintableFileManager","abstract":"

An interface for enumerating files that can be linted by SwiftLint.

"},"Protocols/ASTRule.html":{"name":"ASTRule","abstract":"

A rule that leverages the Swift source’s pre-typechecked Abstract Syntax Tree to recurse into the source’s"},"Protocols/Reporter.html":{"name":"Reporter","abstract":"

An interface for reporting violations as strings.

"},"Protocols/Rule.html":{"name":"Rule","abstract":"

An executable value that can identify issues (violations) in Swift source code.

"},"Protocols.html#/s:18SwiftLintFramework9OptInRuleP":{"name":"OptInRule","abstract":"

A rule that is not enabled by default. Rules conforming to this need to be explicitly enabled by users.

"},"Protocols.html#/s:18SwiftLintFramework21AutomaticTestableRuleP":{"name":"AutomaticTestableRule","abstract":"

A rule that has unit tests automatically generated using Sourcery.

"},"Protocols/ConfigurationProviderRule.html":{"name":"ConfigurationProviderRule","abstract":"

A rule that is user-configurable.

"},"Protocols/CorrectableRule.html":{"name":"CorrectableRule","abstract":"

A rule that can correct violations.

"},"Protocols/SubstitutionCorrectableRule.html":{"name":"SubstitutionCorrectableRule","abstract":"

A correctable rule that can apply its corrections by replacing the content of ranges in the offending file with"},"Protocols/SubstitutionCorrectableASTRule.html":{"name":"SubstitutionCorrectableASTRule","abstract":"

A SubstitutionCorrectableRule that is also an ASTRule.

"},"Protocols.html#/s:18SwiftLintFramework17SourceKitFreeRuleP":{"name":"SourceKitFreeRule","abstract":"

A rule that does not need SourceKit to operate and can still operate even after SourceKit has crashed.

"},"Protocols/AnalyzerRule.html":{"name":"AnalyzerRule","abstract":"

A rule that can operate on the post-typechecked AST using compiler arguments. Performs rules that are more like"},"Protocols.html#/s:18SwiftLintFramework17AnyCollectingRuleP":{"name":"AnyCollectingRule","abstract":"

Type-erased protocol used to check whether a rule is collectable.

"},"Protocols/CollectingRule.html":{"name":"CollectingRule","abstract":"

A rule that requires knowledge of all other files being linted.

"},"Protocols/CollectingCorrectableRule.html":{"name":"CollectingCorrectableRule","abstract":"

A CollectingRule that is also a CorrectableRule.

"},"Protocols/RuleConfiguration.html":{"name":"RuleConfiguration","abstract":"

A configuration value for a rule to allow users to modify its behavior.

"},"Functions.html#/s:18SwiftLintFramework11queuedPrintyyxlF":{"name":"queuedPrint(_:)","abstract":"

A thread-safe version of Swift’s standard print().

"},"Functions.html#/s:18SwiftLintFramework16queuedPrintErroryySSF":{"name":"queuedPrintError(_:)","abstract":"

A thread-safe, newline-terminated version of fputs(..., stderr).

"},"Functions.html#/s:18SwiftLintFramework16queuedFatalError_4file4lines5NeverOSS_s12StaticStringVSutF":{"name":"queuedFatalError(_:file:line:)","abstract":"

A thread-safe, newline-terminated version of fatalError(...) that doesn’t leak"},"Functions.html#/s:18SwiftLintFramework12reporterFrom10identifierAA8Reporter_pXpSS_tF":{"name":"reporterFrom(identifier:)","abstract":"

Returns the reporter with the specified identifier. Traps if the specified identifier doesn’t correspond to any"},"Extensions/String.html#/s:SS18SwiftLintFrameworkE24absolutePathStandardizedSSyF":{"name":"absolutePathStandardized()","abstract":"

Returns a new string, converting the path to a canonical absolute path.

","parent_name":"String"},"Extensions/String.html#/s:SS18SwiftLintFrameworkE16countOccurrences2ofSiSJ_tF":{"name":"countOccurrences(of:)","abstract":"

Count the number of occurrences of the given character in self

","parent_name":"String"},"Extensions/String.html#/s:SS18SwiftLintFrameworkE4path10relativeToS2S_tF":{"name":"path(relativeTo:)","abstract":"

If self is a path, this method can be used to get a path expression relative to a root directory

","parent_name":"String"},"Extensions/FileManager.html#/s:18SwiftLintFramework19LintableFileManagerP07filesToB06inPath13rootDirectorySaySSGSS_SSSgtF":{"name":"filesToLint(inPath:rootDirectory:)","parent_name":"FileManager"},"Extensions/FileManager.html#/s:18SwiftLintFramework19LintableFileManagerP16modificationDate03forE6AtPath10Foundation0H0VSgSS_tF":{"name":"modificationDate(forFileAtPath:)","parent_name":"FileManager"},"Extensions/FileManager.html":{"name":"FileManager"},"Extensions/String.html":{"name":"String"},"Enums/ViolationSeverity.html#/s:18SwiftLintFramework17ViolationSeverityO7warningyA2CmF":{"name":"warning","abstract":"

Non-fatal. If using SwiftLint as an Xcode build phase, Xcode will mark the build as having succeeded.

","parent_name":"ViolationSeverity"},"Enums/ViolationSeverity.html#/s:18SwiftLintFramework17ViolationSeverityO5erroryA2CmF":{"name":"error","abstract":"

Fatal. If using SwiftLint as an Xcode build phase, Xcode will mark the build as having failed.

","parent_name":"ViolationSeverity"},"Enums/ViolationSeverity.html#/s:SL1loiySbx_xtFZ":{"name":"<(_:_:)","parent_name":"ViolationSeverity"},"Enums/RuleListError.html#/s:18SwiftLintFramework13RuleListErrorO24duplicatedConfigurationsyAcA0D0_pXp_tcACmF":{"name":"duplicatedConfigurations(rule:)","abstract":"

The rule list contains more than one configuration for the specified rule.

","parent_name":"RuleListError"},"Enums/RuleKind.html#/s:18SwiftLintFramework8RuleKindO4lintyA2CmF":{"name":"lint","abstract":"

Describes rules that validate Swift source conventions.

","parent_name":"RuleKind"},"Enums/RuleKind.html#/s:18SwiftLintFramework8RuleKindO9idiomaticyA2CmF":{"name":"idiomatic","abstract":"

Describes rules that validate common practices in the Swift community.

","parent_name":"RuleKind"},"Enums/RuleKind.html#/s:18SwiftLintFramework8RuleKindO5styleyA2CmF":{"name":"style","abstract":"

Describes rules that validate stylistic choices.

","parent_name":"RuleKind"},"Enums/RuleKind.html#/s:18SwiftLintFramework8RuleKindO7metricsyA2CmF":{"name":"metrics","abstract":"

Describes rules that validate magnitudes or measurements of Swift source.

","parent_name":"RuleKind"},"Enums/RuleKind.html#/s:18SwiftLintFramework8RuleKindO11performanceyA2CmF":{"name":"performance","abstract":"

Describes rules that validate that code patterns with poor performance are avoided.

","parent_name":"RuleKind"},"Enums/RuleIdentifier.html#/s:18SwiftLintFramework14RuleIdentifierO3allyA2CmF":{"name":"all","abstract":"

Special identifier that should be treated as referring to ‘all’ SwiftLint rules. One helpful usecase is in","parent_name":"RuleIdentifier"},"Enums/RuleIdentifier.html#/s:18SwiftLintFramework14RuleIdentifierO6singleyACSS_tcACmF":{"name":"single(identifier:)","abstract":"

Represents a single SwiftLint rule with the specified identifier.

","parent_name":"RuleIdentifier"},"Enums/RuleIdentifier.html#/s:18SwiftLintFramework14RuleIdentifierO20stringRepresentationSSvp":{"name":"stringRepresentation","abstract":"

The spelling of the string for this idenfitier.

","parent_name":"RuleIdentifier"},"Enums/RuleIdentifier.html#/s:18SwiftLintFramework14RuleIdentifierOyACSScfc":{"name":"init(_:)","abstract":"

Creates a RuleIdentifier by its string representation.

","parent_name":"RuleIdentifier"},"Enums/RuleIdentifier.html#/s:s26ExpressibleByStringLiteralP06stringD0x0cD4TypeQz_tcfc":{"name":"init(stringLiteral:)","parent_name":"RuleIdentifier"},"Enums/ConfigurationError.html#/s:18SwiftLintFramework18ConfigurationErrorO07unknownD0yA2CmF":{"name":"unknownConfiguration","abstract":"

The configuration didn’t match internal expectations.

","parent_name":"ConfigurationError"},"Enums/ConfigurationError.html#/s:18SwiftLintFramework18ConfigurationErrorO28ambiguousMatchKindParametersyA2CmF":{"name":"ambiguousMatchKindParameters","abstract":"

The configuration had both match_kind and excluded_match_kind parameters.

","parent_name":"ConfigurationError"},"Enums/ConfigurationError.html#/s:18SwiftLintFramework18ConfigurationErrorO7genericyACSScACmF":{"name":"generic(_:)","abstract":"

A generic configuration error specified by a string.

","parent_name":"ConfigurationError"},"Enums/ConfigurationError.html#/s:18SwiftLintFramework18ConfigurationErrorO19initialFileNotFoundyACSS_tcACmF":{"name":"initialFileNotFound(path:)","abstract":"

The initial configuration file was not found.

","parent_name":"ConfigurationError"},"Enums/AccessControlLevel.html#/s:18SwiftLintFramework18AccessControlLevelO7privateyA2CmF":{"name":"private","abstract":"

Accessible by the declaration’s immediate lexical scope.

","parent_name":"AccessControlLevel"},"Enums/AccessControlLevel.html#/s:18SwiftLintFramework18AccessControlLevelO11fileprivateyA2CmF":{"name":"fileprivate","abstract":"

Accessible by the declaration’s same file.

","parent_name":"AccessControlLevel"},"Enums/AccessControlLevel.html#/s:18SwiftLintFramework18AccessControlLevelO8internalyA2CmF":{"name":"internal","abstract":"

Accessible by the declaration’s same module, or modules importing it with the @testable attribute.

","parent_name":"AccessControlLevel"},"Enums/AccessControlLevel.html#/s:18SwiftLintFramework18AccessControlLevelO6publicyA2CmF":{"name":"public","abstract":"

Accessible by the declaration’s same program.

","parent_name":"AccessControlLevel"},"Enums/AccessControlLevel.html#/s:18SwiftLintFramework18AccessControlLevelO4openyA2CmF":{"name":"open","abstract":"

Accessible and customizable (via subclassing or overrides) by the declaration’s same program.

","parent_name":"AccessControlLevel"},"Enums/AccessControlLevel.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"AccessControlLevel"},"Enums/AccessControlLevel.html#/s:SL1loiySbx_xtFZ":{"name":"<(_:_:)","parent_name":"AccessControlLevel"},"Enums/SwiftExpressionKind.html#/s:18SwiftLintFramework0A14ExpressionKindO4callyA2CmF":{"name":"call","abstract":"

A call to a named function or closure.

","parent_name":"SwiftExpressionKind"},"Enums/SwiftExpressionKind.html#/s:18SwiftLintFramework0A14ExpressionKindO8argumentyA2CmF":{"name":"argument","abstract":"

An argument value for a function or closure.

","parent_name":"SwiftExpressionKind"},"Enums/SwiftExpressionKind.html#/s:18SwiftLintFramework0A14ExpressionKindO5arrayyA2CmF":{"name":"array","abstract":"

An Array expression.

","parent_name":"SwiftExpressionKind"},"Enums/SwiftExpressionKind.html#/s:18SwiftLintFramework0A14ExpressionKindO10dictionaryyA2CmF":{"name":"dictionary","abstract":"

A Dictionary expression.

","parent_name":"SwiftExpressionKind"},"Enums/SwiftExpressionKind.html#/s:18SwiftLintFramework0A14ExpressionKindO13objectLiteralyA2CmF":{"name":"objectLiteral","abstract":"

An object literal expression. https://developer.apple.com/swift/blog/?id=33

","parent_name":"SwiftExpressionKind"},"Enums/SwiftExpressionKind.html#/s:18SwiftLintFramework0A14ExpressionKindO7closureyA2CmF":{"name":"closure","abstract":"

A closure expression. https://docs.swift.org/swift-book/LanguageGuide/Closures.html

","parent_name":"SwiftExpressionKind"},"Enums/SwiftExpressionKind.html#/s:18SwiftLintFramework0A14ExpressionKindO5tupleyA2CmF":{"name":"tuple","abstract":"

A tuple expression. https://docs.swift.org/swift-book/ReferenceManual/Types.html#ID448

","parent_name":"SwiftExpressionKind"},"Enums/SwiftExpressionKind.html":{"name":"SwiftExpressionKind","abstract":"

The kind of expression for a contiguous set of Swift source tokens.

"},"Enums/AccessControlLevel.html":{"name":"AccessControlLevel","abstract":"

The accessibility of a Swift source declaration.

"},"Enums/ConfigurationError.html":{"name":"ConfigurationError","abstract":"

All possible configuration errors.

"},"Enums/RuleIdentifier.html":{"name":"RuleIdentifier","abstract":"

An identifier representing a SwiftLint rule, or all rules.

"},"Enums/RuleKind.html":{"name":"RuleKind","abstract":"

All the possible rule kinds (categories).

"},"Enums/RuleListError.html":{"name":"RuleListError","abstract":"

All possible rule list configuration errors.

"},"Enums/ViolationSeverity.html":{"name":"ViolationSeverity","abstract":"

The magnitude of a StyleViolation.

"},"Global%20Variables.html#/s:18SwiftLintFramework15primaryRuleListAA0eF0Vvp":{"name":"primaryRuleList","abstract":"

The rule list containing all available rules built into SwiftLint.

"},"Classes/RuleStorage.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"RuleStorage"},"Classes/RuleStorage.html#/s:18SwiftLintFramework11RuleStorageCACycfc":{"name":"init()","abstract":"

Creates a RuleStorage with no initial stored data.

","parent_name":"RuleStorage"},"Classes/LinterCache.html#/s:18SwiftLintFramework11LinterCacheC13configuration11fileManagerAcA13ConfigurationV_AA012LintableFileH0_ptcfc":{"name":"init(configuration:fileManager:)","abstract":"

Creates a LinterCache by specifying a SwiftLint configuration and a file manager.

","parent_name":"LinterCache"},"Classes/LinterCache.html#/s:18SwiftLintFramework11LinterCacheC4saveyyKF":{"name":"save()","abstract":"

Persists the cache to disk.

","parent_name":"LinterCache"},"Classes/SwiftLintFile.html#/s:18SwiftLintFramework0aB4FileC4fileAC012SourceKittenC00D0C_tcfc":{"name":"init(file:)","abstract":"

Creates a SwiftLintFile with a SourceKitten File.

","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:18SwiftLintFramework0aB4FileC4pathACSgSS_tcfc":{"name":"init(path:)","abstract":"

Creates a SwiftLintFile by specifying its path on disk.","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:18SwiftLintFramework0aB4FileC20pathDeferringReadingACSS_tcfc":{"name":"init(pathDeferringReading:)","abstract":"

Creates a SwiftLintFile by specifying its path on disk. Unlike the SwiftLintFile(path:) initializer, this","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:18SwiftLintFramework0aB4FileC8contentsACSS_tcfc":{"name":"init(contents:)","abstract":"

Creates a SwiftLintFile that is not backed by a file on disk by specifying its contents.

","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:18SwiftLintFramework0aB4FileC4pathSSSgvp":{"name":"path","abstract":"

The path on disk for this file.

","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:18SwiftLintFramework0aB4FileC8contentsSSvp":{"name":"contents","abstract":"

The file’s contents.

","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:18SwiftLintFramework0aB4FileC10stringView012SourceKittenC006StringF0Vvp":{"name":"stringView","abstract":"

A string view into the contents of this file optimized for string manipulation operations.

","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:18SwiftLintFramework0aB4FileC5linesSay012SourceKittenC04LineVGvp":{"name":"lines","abstract":"

The parsed lines for this file’s contents.

","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:18SwiftLintFramework0aB4FileC15invalidateCacheyyF":{"name":"invalidateCache()","abstract":"

Invalidates all cached data for this file.

","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html":{"name":"SwiftLintFile","abstract":"

A unit of Swift source code, either on disk or in memory.

"},"Classes/LinterCache.html":{"name":"LinterCache","abstract":"

A persisted cache for storing and retrieving linter results.

"},"Classes/RuleStorage.html":{"name":"RuleStorage","abstract":"

A storage mechanism for aggregating the results of CollectingRules.

"},"static_operator.html":{"name":"static_operator"},"anyobject_protocol.html":{"name":"anyobject_protocol"},"override_in_extension.html":{"name":"override_in_extension"},"fallthrough.html":{"name":"fallthrough"},"redundant_set_access_control.html":{"name":"redundant_set_access_control"},"nsobject_prefer_isequal.html":{"name":"nsobject_prefer_isequal"},"explicit_init.html":{"name":"explicit_init"},"function_body_length.html":{"name":"function_body_length"},"vertical_parameter_alignment_on_call.html":{"name":"vertical_parameter_alignment_on_call"},"flatmap_over_map_reduce.html":{"name":"flatmap_over_map_reduce"},"custom_rules.html":{"name":"custom_rules"},"nslocalizedstring_require_bundle.html":{"name":"nslocalizedstring_require_bundle"},"legacy_objc_type.html":{"name":"legacy_objc_type"},"line_length.html":{"name":"line_length"},"sorted_imports.html":{"name":"sorted_imports"},"sorted_first_last.html":{"name":"sorted_first_last"},"strict_fileprivate.html":{"name":"strict_fileprivate"},"let_var_whitespace.html":{"name":"let_var_whitespace"},"legacy_random.html":{"name":"legacy_random"},"function_parameter_count.html":{"name":"function_parameter_count"},"last_where.html":{"name":"last_where"},"operator_whitespace.html":{"name":"operator_whitespace"},"balanced_xctest_lifecycle.html":{"name":"balanced_xctest_lifecycle"},"valid_ibinspectable.html":{"name":"valid_ibinspectable"},"closure_end_indentation.html":{"name":"closure_end_indentation"},"nslocalizedstring_key.html":{"name":"nslocalizedstring_key"},"explicit_acl.html":{"name":"explicit_acl"},"file_length.html":{"name":"file_length"},"private_outlet.html":{"name":"private_outlet"},"reduce_into.html":{"name":"reduce_into"},"trailing_comma.html":{"name":"trailing_comma"},"discouraged_optional_collection.html":{"name":"discouraged_optional_collection"},"prohibited_super_call.html":{"name":"prohibited_super_call"},"untyped_error_in_catch.html":{"name":"untyped_error_in_catch"},"multiline_literal_brackets.html":{"name":"multiline_literal_brackets"},"unused_closure_parameter.html":{"name":"unused_closure_parameter"},"private_action.html":{"name":"private_action"},"opening_brace.html":{"name":"opening_brace"},"strong_iboutlet.html":{"name":"strong_iboutlet"},"quick_discouraged_call.html":{"name":"quick_discouraged_call"},"file_types_order.html":{"name":"file_types_order"},"extension_access_modifier.html":{"name":"extension_access_modifier"},"prefer_nimble.html":{"name":"prefer_nimble"},"object_literal.html":{"name":"object_literal"},"void_return.html":{"name":"void_return"},"trailing_whitespace.html":{"name":"trailing_whitespace"},"redundant_nil_coalescing.html":{"name":"redundant_nil_coalescing"},"prefer_self_in_static_references.html":{"name":"prefer_self_in_static_references"},"contains_over_filter_count.html":{"name":"contains_over_filter_count"},"pattern_matching_keywords.html":{"name":"pattern_matching_keywords"},"duplicate_enum_cases.html":{"name":"duplicate_enum_cases"},"inclusive_language.html":{"name":"inclusive_language"},"no_space_in_method_call.html":{"name":"no_space_in_method_call"},"explicit_top_level_acl.html":{"name":"explicit_top_level_acl"},"single_test_class.html":{"name":"single_test_class"},"unused_control_flow_label.html":{"name":"unused_control_flow_label"},"redundant_void_return.html":{"name":"redundant_void_return"},"cyclomatic_complexity.html":{"name":"cyclomatic_complexity"},"contains_over_first_not_nil.html":{"name":"contains_over_first_not_nil"},"unused_declaration.html":{"name":"unused_declaration"},"collection_alignment.html":{"name":"collection_alignment"},"discouraged_optional_boolean.html":{"name":"discouraged_optional_boolean"},"file_name.html":{"name":"file_name"},"required_deinit.html":{"name":"required_deinit"},"compiler_protocol_init.html":{"name":"compiler_protocol_init"},"explicit_self.html":{"name":"explicit_self"},"file_header.html":{"name":"file_header"},"legacy_cggeometry_functions.html":{"name":"legacy_cggeometry_functions"},"redundant_objc_attribute.html":{"name":"redundant_objc_attribute"},"generic_type_name.html":{"name":"generic_type_name"},"vertical_whitespace_closing_braces.html":{"name":"vertical_whitespace_closing_braces"},"legacy_constant.html":{"name":"legacy_constant"},"prefer_self_type_over_type_of_self.html":{"name":"prefer_self_type_over_type_of_self"},"private_over_fileprivate.html":{"name":"private_over_fileprivate"},"multiline_arguments_brackets.html":{"name":"multiline_arguments_brackets"},"redundant_type_annotation.html":{"name":"redundant_type_annotation"},"for_where.html":{"name":"for_where"},"closure_parameter_position.html":{"name":"closure_parameter_position"},"duplicate_imports.html":{"name":"duplicate_imports"},"prohibited_interface_builder.html":{"name":"prohibited_interface_builder"},"test_case_accessibility.html":{"name":"test_case_accessibility"},"no_extension_access_modifier.html":{"name":"no_extension_access_modifier"},"no_fallthrough_only.html":{"name":"no_fallthrough_only"},"literal_expression_end_indentation.html":{"name":"literal_expression_end_indentation"},"discarded_notification_center_observer.html":{"name":"discarded_notification_center_observer"},"joined_default_parameter.html":{"name":"joined_default_parameter"},"block_based_kvo.html":{"name":"block_based_kvo"},"closure_spacing.html":{"name":"closure_spacing"},"unused_setter_value.html":{"name":"unused_setter_value"},"multiline_parameters_brackets.html":{"name":"multiline_parameters_brackets"},"notification_center_detachment.html":{"name":"notification_center_detachment"},"redundant_string_enum_value.html":{"name":"redundant_string_enum_value"},"trailing_semicolon.html":{"name":"trailing_semicolon"},"multiple_closures_with_trailing_closure.html":{"name":"multiple_closures_with_trailing_closure"},"nimble_operator.html":{"name":"nimble_operator"},"class_delegate_protocol.html":{"name":"class_delegate_protocol"},"unused_capture_list.html":{"name":"unused_capture_list"},"todo.html":{"name":"todo"},"number_separator.html":{"name":"number_separator"},"multiline_function_chains.html":{"name":"multiline_function_chains"},"vertical_whitespace_between_cases.html":{"name":"vertical_whitespace_between_cases"},"private_unit_test.html":{"name":"private_unit_test"},"empty_count.html":{"name":"empty_count"},"lower_acl_than_parent.html":{"name":"lower_acl_than_parent"},"syntactic_sugar.html":{"name":"syntactic_sugar"},"vertical_whitespace.html":{"name":"vertical_whitespace"},"unneeded_break_in_switch.html":{"name":"unneeded_break_in_switch"},"discouraged_none_name.html":{"name":"discouraged_none_name"},"redundant_discardable_let.html":{"name":"redundant_discardable_let"},"toggle_bool.html":{"name":"toggle_bool"},"discouraged_direct_init.html":{"name":"discouraged_direct_init"},"required_enum_case.html":{"name":"required_enum_case"},"type_body_length.html":{"name":"type_body_length"},"unneeded_parentheses_in_closure_argument.html":{"name":"unneeded_parentheses_in_closure_argument"},"closing_brace.html":{"name":"closing_brace"},"missing_docs.html":{"name":"missing_docs"},"yoda_condition.html":{"name":"yoda_condition"},"type_name.html":{"name":"type_name"},"implicitly_unwrapped_optional.html":{"name":"implicitly_unwrapped_optional"},"overridden_super_call.html":{"name":"overridden_super_call"},"colon.html":{"name":"colon"},"xctfail_message.html":{"name":"xctfail_message"},"conditional_returns_on_newline.html":{"name":"conditional_returns_on_newline"},"inert_defer.html":{"name":"inert_defer"},"multiline_arguments.html":{"name":"multiline_arguments"},"comment_spacing.html":{"name":"comment_spacing"},"private_subject.html":{"name":"private_subject"},"indentation_width.html":{"name":"indentation_width"},"no_grouping_extension.html":{"name":"no_grouping_extension"},"function_default_parameter_at_end.html":{"name":"function_default_parameter_at_end"},"attributes.html":{"name":"attributes"},"nesting.html":{"name":"nesting"},"explicit_enum_raw_value.html":{"name":"explicit_enum_raw_value"},"vertical_whitespace_opening_braces.html":{"name":"vertical_whitespace_opening_braces"},"closure_body_length.html":{"name":"closure_body_length"},"quick_discouraged_pending_test.html":{"name":"quick_discouraged_pending_test"},"leading_whitespace.html":{"name":"leading_whitespace"},"type_contents_order.html":{"name":"type_contents_order"},"legacy_nsgeometry_functions.html":{"name":"legacy_nsgeometry_functions"},"prefer_zero_over_explicit_init.html":{"name":"prefer_zero_over_explicit_init"},"enum_case_associated_values_count.html":{"name":"enum_case_associated_values_count"},"mark.html":{"name":"mark"},"empty_parentheses_with_trailing_closure.html":{"name":"empty_parentheses_with_trailing_closure"},"prefixed_toplevel_constant.html":{"name":"prefixed_toplevel_constant"},"redundant_optional_initialization.html":{"name":"redundant_optional_initialization"},"anonymous_argument_in_multiline_closure.html":{"name":"anonymous_argument_in_multiline_closure"},"explicit_type_interface.html":{"name":"explicit_type_interface"},"force_try.html":{"name":"force_try"},"superfluous_disable_command.html":{"name":"superfluous_disable_command"},"force_cast.html":{"name":"force_cast"},"expiring_todo.html":{"name":"expiring_todo"},"discouraged_assert.html":{"name":"discouraged_assert"},"unused_import.html":{"name":"unused_import"},"empty_string.html":{"name":"empty_string"},"identifier_name.html":{"name":"identifier_name"},"self_in_property_initialization.html":{"name":"self_in_property_initialization"},"weak_delegate.html":{"name":"weak_delegate"},"ibinspectable_in_extension.html":{"name":"ibinspectable_in_extension"},"multiline_parameters.html":{"name":"multiline_parameters"},"return_arrow_whitespace.html":{"name":"return_arrow_whitespace"},"array_init.html":{"name":"array_init"},"switch_case_on_newline.html":{"name":"switch_case_on_newline"},"computed_accessors_order.html":{"name":"computed_accessors_order"},"empty_collection_literal.html":{"name":"empty_collection_literal"},"implicit_getter.html":{"name":"implicit_getter"},"capture_variable.html":{"name":"capture_variable"},"control_statement.html":{"name":"control_statement"},"orphaned_doc_comment.html":{"name":"orphaned_doc_comment"},"switch_case_alignment.html":{"name":"switch_case_alignment"},"contains_over_filter_is_empty.html":{"name":"contains_over_filter_is_empty"},"fatal_error_message.html":{"name":"fatal_error_message"},"legacy_hashing.html":{"name":"legacy_hashing"},"optional_enum_case_matching.html":{"name":"optional_enum_case_matching"},"contains_over_range_nil_comparison.html":{"name":"contains_over_range_nil_comparison"},"dynamic_inline.html":{"name":"dynamic_inline"},"duplicated_key_in_dictionary_literal.html":{"name":"duplicated_key_in_dictionary_literal"},"first_where.html":{"name":"first_where"},"empty_enum_arguments.html":{"name":"empty_enum_arguments"},"deployment_target.html":{"name":"deployment_target"},"legacy_multiple.html":{"name":"legacy_multiple"},"identical_operands.html":{"name":"identical_operands"},"unused_enumerated.html":{"name":"unused_enumerated"},"trailing_closure.html":{"name":"trailing_closure"},"comma.html":{"name":"comma"},"vertical_parameter_alignment.html":{"name":"vertical_parameter_alignment"},"is_disjoint.html":{"name":"is_disjoint"},"discouraged_object_literal.html":{"name":"discouraged_object_literal"},"operator_usage_whitespace.html":{"name":"operator_usage_whitespace"},"unused_optional_binding.html":{"name":"unused_optional_binding"},"xct_specific_matcher.html":{"name":"xct_specific_matcher"},"trailing_newline.html":{"name":"trailing_newline"},"raw_value_for_camel_cased_codable_enum.html":{"name":"raw_value_for_camel_cased_codable_enum"},"statement_position.html":{"name":"statement_position"},"empty_xctest_method.html":{"name":"empty_xctest_method"},"modifier_order.html":{"name":"modifier_order"},"force_unwrapping.html":{"name":"force_unwrapping"},"large_tuple.html":{"name":"large_tuple"},"implicit_return.html":{"name":"implicit_return"},"quick_discouraged_focused_test.html":{"name":"quick_discouraged_focused_test"},"reduce_boolean.html":{"name":"reduce_boolean"},"empty_parameters.html":{"name":"empty_parameters"},"unowned_variable_capture.html":{"name":"unowned_variable_capture"},"legacy_constructor.html":{"name":"legacy_constructor"},"file_name_no_space.html":{"name":"file_name_no_space"},"protocol_property_accessors_order.html":{"name":"protocol_property_accessors_order"},"shorthand_operator.html":{"name":"shorthand_operator"},"unavailable_function.html":{"name":"unavailable_function"},"convenience_type.html":{"name":"convenience_type"},"Structs/MarkdownReporter.html#/s:18SwiftLintFramework8ReporterP10identifierSSvpZ":{"name":"identifier","parent_name":"MarkdownReporter"},"Structs/MarkdownReporter.html#/s:18SwiftLintFramework8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","parent_name":"MarkdownReporter"},"Structs/MarkdownReporter.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"MarkdownReporter"},"Structs/MarkdownReporter.html#/s:18SwiftLintFramework8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","parent_name":"MarkdownReporter"},"Structs/JUnitReporter.html#/s:18SwiftLintFramework8ReporterP10identifierSSvpZ":{"name":"identifier","parent_name":"JUnitReporter"},"Structs/JUnitReporter.html#/s:18SwiftLintFramework8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","parent_name":"JUnitReporter"},"Structs/JUnitReporter.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"JUnitReporter"},"Structs/JUnitReporter.html#/s:18SwiftLintFramework8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","parent_name":"JUnitReporter"},"Structs/JSONReporter.html#/s:18SwiftLintFramework8ReporterP10identifierSSvpZ":{"name":"identifier","parent_name":"JSONReporter"},"Structs/JSONReporter.html#/s:18SwiftLintFramework8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","parent_name":"JSONReporter"},"Structs/JSONReporter.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"JSONReporter"},"Structs/JSONReporter.html#/s:18SwiftLintFramework8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","parent_name":"JSONReporter"},"Structs/HTMLReporter.html#/s:18SwiftLintFramework8ReporterP10identifierSSvpZ":{"name":"identifier","parent_name":"HTMLReporter"},"Structs/HTMLReporter.html#/s:18SwiftLintFramework8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","parent_name":"HTMLReporter"},"Structs/HTMLReporter.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"HTMLReporter"},"Structs/HTMLReporter.html#/s:18SwiftLintFramework8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","parent_name":"HTMLReporter"},"Structs/GitHubActionsLoggingReporter.html#/s:18SwiftLintFramework8ReporterP10identifierSSvpZ":{"name":"identifier","parent_name":"GitHubActionsLoggingReporter"},"Structs/GitHubActionsLoggingReporter.html#/s:18SwiftLintFramework8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","parent_name":"GitHubActionsLoggingReporter"},"Structs/GitHubActionsLoggingReporter.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"GitHubActionsLoggingReporter"},"Structs/GitHubActionsLoggingReporter.html#/s:18SwiftLintFramework8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","parent_name":"GitHubActionsLoggingReporter"},"Structs/EmojiReporter.html#/s:18SwiftLintFramework8ReporterP10identifierSSvpZ":{"name":"identifier","parent_name":"EmojiReporter"},"Structs/EmojiReporter.html#/s:18SwiftLintFramework8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","parent_name":"EmojiReporter"},"Structs/EmojiReporter.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"EmojiReporter"},"Structs/EmojiReporter.html#/s:18SwiftLintFramework8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","parent_name":"EmojiReporter"},"Structs/CheckstyleReporter.html#/s:18SwiftLintFramework8ReporterP10identifierSSvpZ":{"name":"identifier","parent_name":"CheckstyleReporter"},"Structs/CheckstyleReporter.html#/s:18SwiftLintFramework8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","parent_name":"CheckstyleReporter"},"Structs/CheckstyleReporter.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"CheckstyleReporter"},"Structs/CheckstyleReporter.html#/s:18SwiftLintFramework8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","parent_name":"CheckstyleReporter"},"Structs/CSVReporter.html#/s:18SwiftLintFramework8ReporterP10identifierSSvpZ":{"name":"identifier","parent_name":"CSVReporter"},"Structs/CSVReporter.html#/s:18SwiftLintFramework8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","parent_name":"CSVReporter"},"Structs/CSVReporter.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"CSVReporter"},"Structs/CSVReporter.html#/s:18SwiftLintFramework8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","parent_name":"CSVReporter"},"Structs/CSVReporter.html":{"name":"CSVReporter","abstract":"

Reports violations as a newline-separated string of comma-separated values (CSV).

"},"Structs/CheckstyleReporter.html":{"name":"CheckstyleReporter","abstract":"

Reports violations as XML conforming to the Checkstyle specification, as defined here:"},"Structs/EmojiReporter.html":{"name":"EmojiReporter","abstract":"

Reports violations in the format that’s both fun and easy to read.

"},"Structs/GitHubActionsLoggingReporter.html":{"name":"GitHubActionsLoggingReporter","abstract":"

Reports violations in the format GitHub-hosted virtual machine for Actions can recognize as messages.

"},"Structs/HTMLReporter.html":{"name":"HTMLReporter","abstract":"

Reports violations as HTML.

"},"Structs/JSONReporter.html":{"name":"JSONReporter","abstract":"

Reports violations as a JSON array.

"},"Structs/JUnitReporter.html":{"name":"JUnitReporter","abstract":"

Reports violations as JUnit XML.

"},"Structs/MarkdownReporter.html":{"name":"MarkdownReporter","abstract":"

Reports violations as markdown formated (with tables).

"},"rule-directory.html":{"name":"Rule Directory"},"Rules.html":{"name":"Rules"},"Reporters.html":{"name":"Reporters"},"Guides.html":{"name":"Guides","abstract":"

The following guides are available globally.

"},"Classes.html":{"name":"Classes","abstract":"

The following classes are available globally.

"},"Global%20Variables.html":{"name":"Global Variables","abstract":"

The following global variables are available globally.

"},"Enums.html":{"name":"Enumerations","abstract":"

The following enumerations are available globally.

"},"Extensions.html":{"name":"Extensions","abstract":"

The following extensions are available globally.

"},"Functions.html":{"name":"Functions","abstract":"

The following functions are available globally.

"},"Protocols.html":{"name":"Protocols","abstract":"

The following protocols are available globally.

"},"Structs.html":{"name":"Structures","abstract":"

The following structures are available globally.

"}} \ No newline at end of file diff --git a/self_in_property_initialization.html b/self_in_property_initialization.html deleted file mode 100644 index d5a2db4cb..000000000 --- a/self_in_property_initialization.html +++ /dev/null @@ -1,393 +0,0 @@ - - - - self_in_property_initialization Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Self in Property Initialization

- -

self refers to the unapplied NSObject.self() method, which is likely not expected. Make the variable lazy to be able to refer to the current instance or use ClassName.self.

- -
    -
  • Identifier: self_in_property_initialization
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class View: UIView {
-    let button: UIButton = {
-        return UIButton()
-    }()
-}
-
-
class View: UIView {
-    lazy var button: UIButton = {
-        let button = UIButton()
-        button.addTarget(self, action: #selector(didTapButton), for: .touchUpInside)
-        return button
-    }()
-}
-
-
class View: UIView {
-    var button: UIButton = {
-        let button = UIButton()
-        button.addTarget(otherObject, action: #selector(didTapButton), for: .touchUpInside)
-        return button
-    }()
-}
-
-
class View: UIView {
-    private let collectionView: UICollectionView = {
-        let layout = UICollectionViewFlowLayout()
-        let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout)
-        collectionView.registerReusable(Cell.self)
-
-        return collectionView
-    }()
-}
-
-

Triggering Examples

-
class View: UIView {
-    ↓var button: UIButton = {
-        let button = UIButton()
-        button.addTarget(self, action: #selector(didTapButton), for: .touchUpInside)
-        return button
-    }()
-}
-
-
class View: UIView {
-    ↓let button: UIButton = {
-        let button = UIButton()
-        button.addTarget(self, action: #selector(didTapButton), for: .touchUpInside)
-        return button
-    }()
-}
-
- -
-
- - -
-
- - - - diff --git a/shorthand_operator.html b/shorthand_operator.html deleted file mode 100644 index a152efa8f..000000000 --- a/shorthand_operator.html +++ /dev/null @@ -1,480 +0,0 @@ - - - - shorthand_operator Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Shorthand Operator

- -

Prefer shorthand operators (+=, -=, *=, /=) over doing the operation and assigning.

- -
    -
  • Identifier: shorthand_operator
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: error
  • -
-

Non Triggering Examples

-
foo -= 1
-
-
foo -= variable
-
-
foo -= bar.method()
-
-
self.foo = foo - 1
-
-
foo = self.foo - 1
-
-
page = ceilf(currentOffset - pageWidth)
-
-
foo = aMethod(foo - bar)
-
-
foo = aMethod(bar - foo)
-
-
foo /= 1
-
-
foo /= variable
-
-
foo /= bar.method()
-
-
self.foo = foo / 1
-
-
foo = self.foo / 1
-
-
page = ceilf(currentOffset / pageWidth)
-
-
foo = aMethod(foo / bar)
-
-
foo = aMethod(bar / foo)
-
-
foo += 1
-
-
foo += variable
-
-
foo += bar.method()
-
-
self.foo = foo + 1
-
-
foo = self.foo + 1
-
-
page = ceilf(currentOffset + pageWidth)
-
-
foo = aMethod(foo + bar)
-
-
foo = aMethod(bar + foo)
-
-
foo *= 1
-
-
foo *= variable
-
-
foo *= bar.method()
-
-
self.foo = foo * 1
-
-
foo = self.foo * 1
-
-
page = ceilf(currentOffset * pageWidth)
-
-
foo = aMethod(foo * bar)
-
-
foo = aMethod(bar * foo)
-
-
var helloWorld = "world!"
- helloWorld = "Hello, " + helloWorld
-
-
angle = someCheck ? angle : -angle
-
-
seconds = seconds * 60 + value
-
-

Triggering Examples

-
↓foo = foo - 1
-
-
-
↓foo = foo - aVariable
-
-
-
↓foo = foo - bar.method()
-
-
-
↓foo.aProperty = foo.aProperty - 1
-
-
-
↓self.aProperty = self.aProperty - 1
-
-
-
↓foo = foo / 1
-
-
-
↓foo = foo / aVariable
-
-
-
↓foo = foo / bar.method()
-
-
-
↓foo.aProperty = foo.aProperty / 1
-
-
-
↓self.aProperty = self.aProperty / 1
-
-
-
↓foo = foo + 1
-
-
-
↓foo = foo + aVariable
-
-
-
↓foo = foo + bar.method()
-
-
-
↓foo.aProperty = foo.aProperty + 1
-
-
-
↓self.aProperty = self.aProperty + 1
-
-
-
↓foo = foo * 1
-
-
-
↓foo = foo * aVariable
-
-
-
↓foo = foo * bar.method()
-
-
-
↓foo.aProperty = foo.aProperty * 1
-
-
-
↓self.aProperty = self.aProperty * 1
-
-
-
n = n + i / outputLength
-
-
n = n - i / outputLength
-
- -
-
- - -
-
- - - - diff --git a/single_test_class.html b/single_test_class.html deleted file mode 100644 index 7f4389145..000000000 --- a/single_test_class.html +++ /dev/null @@ -1,375 +0,0 @@ - - - - single_test_class Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Single Test Class

- -

Test files should contain a single QuickSpec or XCTestCase class.

- -
    -
  • Identifier: single_test_class
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class FooTests {  }
-
-
-
class FooTests: QuickSpec {  }
-
-
-
class FooTests: XCTestCase {  }
-
-
-

Triggering Examples

-
↓class FooTests: QuickSpec {  }
-↓class BarTests: QuickSpec {  }
-
-
↓class FooTests: QuickSpec {  }
-↓class BarTests: QuickSpec {  }
-↓class TotoTests: QuickSpec {  }
-
-
↓class FooTests: XCTestCase {  }
-↓class BarTests: XCTestCase {  }
-
-
↓class FooTests: XCTestCase {  }
-↓class BarTests: XCTestCase {  }
-↓class TotoTests: XCTestCase {  }
-
-
↓class FooTests: QuickSpec {  }
-↓class BarTests: XCTestCase {  }
-
-
↓class FooTests: QuickSpec {  }
-↓class BarTests: XCTestCase {  }
-class TotoTests {  }
-
- -
-
- - -
-
- - - - diff --git a/sorted_first_last.html b/sorted_first_last.html deleted file mode 100644 index daebd3dee..000000000 --- a/sorted_first_last.html +++ /dev/null @@ -1,415 +0,0 @@ - - - - sorted_first_last Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Min or Max over Sorted First or Last

- -

Prefer using min() or max() over sorted().first or sorted().last

- -
    -
  • Identifier: sorted_first_last
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let min = myList.min()
-
-
-
let min = myList.min(by: { $0 < $1 })
-
-
-
let min = myList.min(by: >)
-
-
-
let max = myList.max()
-
-
-
let max = myList.max(by: { $0 < $1 })
-
-
-
let message = messages.sorted(byKeyPath: #keyPath(Message.timestamp)).last
-
-
let message = messages.sorted(byKeyPath: "timestamp", ascending: false).first
-
-
myList.sorted().firstIndex(of: key)
-
-
myList.sorted().lastIndex(of: key)
-
-
myList.sorted().firstIndex(where: someFunction)
-
-
myList.sorted().lastIndex(where: someFunction)
-
-
myList.sorted().firstIndex { $0 == key }
-
-
myList.sorted().lastIndex { $0 == key }
-
-

Triggering Examples

-
↓myList.sorted().first
-
-
-
↓myList.sorted(by: { $0.description < $1.description }).first
-
-
-
↓myList.sorted(by: >).first
-
-
-
↓myList.map { $0 + 1 }.sorted().first
-
-
-
↓myList.sorted(by: someFunction).first
-
-
-
↓myList.map { $0 + 1 }.sorted { $0.description < $1.description }.first
-
-
-
↓myList.sorted().last
-
-
-
↓myList.sorted().last?.something()
-
-
-
↓myList.sorted(by: { $0.description < $1.description }).last
-
-
-
↓myList.map { $0 + 1 }.sorted().last
-
-
-
↓myList.sorted(by: someFunction).last
-
-
-
↓myList.map { $0 + 1 }.sorted { $0.description < $1.description }.last
-
-
-
↓myList.map { $0 + 1 }.sorted { $0.first < $1.first }.last
-
-
- -
-
- - -
-
- - - - diff --git a/sorted_imports.html b/sorted_imports.html deleted file mode 100644 index 7963645d7..000000000 --- a/sorted_imports.html +++ /dev/null @@ -1,407 +0,0 @@ - - - - sorted_imports Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Sorted Imports

- -

Imports should be sorted.

- -
    -
  • Identifier: sorted_imports
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
import AAA
-import BBB
-import CCC
-import DDD
-
-
import Alamofire
-import API
-
-
import labc
-import Ldef
-
-
import BBB
-// comment
-import AAA
-import CCC
-
-
@testable import AAA
-import   CCC
-
-
import AAA
-@testable import   CCC
-
-
import EEE.A
-import FFF.B
-#if os(Linux)
-import DDD.A
-import EEE.B
-#else
-import CCC
-import DDD.B
-#endif
-import AAA
-import BBB
-
-

Triggering Examples

-
import AAA
-import ZZZ
-import ↓BBB
-import CCC
-
-
import DDD
-// comment
-import CCC
-import ↓AAA
-
-
@testable import CCC
-import   ↓AAA
-
-
import CCC
-@testable import   ↓AAA
-
-
import FFF.B
-import ↓EEE.A
-#if os(Linux)
-import DDD.A
-import EEE.B
-#else
-import DDD.B
-import ↓CCC
-#endif
-import AAA
-import BBB
-
- -
-
- - -
-
- - - - diff --git a/statement_position.html b/statement_position.html deleted file mode 100644 index 7f7006243..000000000 --- a/statement_position.html +++ /dev/null @@ -1,373 +0,0 @@ - - - - statement_position Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Statement Position

- -

Else and catch should be on the same line, one space after the previous declaration.

- -
    -
  • Identifier: statement_position
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: (statement_mode) default, (severity) warning
  • -
-

Non Triggering Examples

-
} else if {
-
-
} else {
-
-
} catch {
-
-
"}else{"
-
-
struct A { let catchphrase: Int }
-let a = A(
- catchphrase: 0
-)
-
-
struct A { let `catch`: Int }
-let a = A(
- `catch`: 0
-)
-
-

Triggering Examples

-
↓}else if {
-
-
↓}  else {
-
-
↓}
-catch {
-
-
↓}
-      catch {
-
- -
-
- - -
-
- - - - diff --git a/static_operator.html b/static_operator.html deleted file mode 100644 index 50bd7425e..000000000 --- a/static_operator.html +++ /dev/null @@ -1,399 +0,0 @@ - - - - static_operator Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Static Operator

- -

Operators should be declared as static functions, not free functions.

- -
    -
  • Identifier: static_operator
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class A: Equatable {
-  static func == (lhs: A, rhs: A) -> Bool {
-    return false
-  }
-
-
class A<T>: Equatable {
-    static func == <T>(lhs: A<T>, rhs: A<T>) -> Bool {
-        return false
-    }
-
-
public extension Array where Element == Rule {
-  static func == (lhs: Array, rhs: Array) -> Bool {
-    if lhs.count != rhs.count { return false }
-    return !zip(lhs, rhs).contains { !$0.0.isEqualTo($0.1) }
-  }
-}
-
-
private extension Optional where Wrapped: Comparable {
-  static func < (lhs: Optional, rhs: Optional) -> Bool {
-    switch (lhs, rhs) {
-    case let (lhs?, rhs?):
-      return lhs < rhs
-    case (nil, _?):
-      return true
-    default:
-      return false
-    }
-  }
-}
-
-

Triggering Examples

-
↓func == (lhs: A, rhs: A) -> Bool {
-  return false
-}
-
-
↓func == <T>(lhs: A<T>, rhs: A<T>) -> Bool {
-  return false
-}
-
-
↓func == (lhs: [Rule], rhs: [Rule]) -> Bool {
-  if lhs.count != rhs.count { return false }
-  return !zip(lhs, rhs).contains { !$0.0.isEqualTo($0.1) }
-}
-
-
private ↓func < <T: Comparable>(lhs: T?, rhs: T?) -> Bool {
-  switch (lhs, rhs) {
-  case let (lhs?, rhs?):
-    return lhs < rhs
-  case (nil, _?):
-    return true
-  default:
-    return false
-  }
-}
-
- -
-
- - -
-
- - - - diff --git a/strict_fileprivate.html b/strict_fileprivate.html deleted file mode 100644 index 1973f6f2c..000000000 --- a/strict_fileprivate.html +++ /dev/null @@ -1,383 +0,0 @@ - - - - strict_fileprivate Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Strict fileprivate

- -

fileprivate should be avoided.

- -
    -
  • Identifier: strict_fileprivate
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
extension String {}
-
-
private extension String {}
-
-
public
-extension String {}
-
-
open extension
-  String {}
-
-
internal extension String {}
-
-

Triggering Examples

-
↓fileprivate extension String {}
-
-
↓fileprivate
-  extension String {}
-
-
↓fileprivate extension
-  String {}
-
-
extension String {
-  ↓fileprivate func Something(){}
-}
-
-
class MyClass {
-  ↓fileprivate let myInt = 4
-}
-
-
class MyClass {
-  ↓fileprivate(set) var myInt = 4
-}
-
-
struct Outter {
-  struct Inter {
-    ↓fileprivate struct Inner {}
-  }
-}
-
- -
-
- - -
-
- - - - diff --git a/strong_iboutlet.html b/strong_iboutlet.html deleted file mode 100644 index 8bbcf4fb4..000000000 --- a/strong_iboutlet.html +++ /dev/null @@ -1,365 +0,0 @@ - - - - strong_iboutlet Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Strong IBOutlet

- -

@IBOutlets shouldn’t be declared as weak.

- -
    -
  • Identifier: strong_iboutlet
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class ViewController: UIViewController {
-    @IBOutlet var label: UILabel?
-}
-
-
class ViewController: UIViewController {
-    weak var label: UILabel?
-}
-
-

Triggering Examples

-
class ViewController: UIViewController {
-    @IBOutlet ↓weak var label: UILabel?
-}
-
-
class ViewController: UIViewController {
-    @IBOutlet ↓unowned var label: UILabel!
-}
-
-
class ViewController: UIViewController {
-    @IBOutlet ↓weak var textField: UITextField?
-}
-
- -
-
- - -
-
- - - - diff --git a/superfluous_disable_command.html b/superfluous_disable_command.html deleted file mode 100644 index e35fdfbe7..000000000 --- a/superfluous_disable_command.html +++ /dev/null @@ -1,343 +0,0 @@ - - - - superfluous_disable_command Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Superfluous Disable Command

- -

SwiftLint ‘disable’ commands are superfluous when the disabled rule would not have triggered a violation in the disabled region. Use “ - ” if you wish to document a command.

- -
    -
  • Identifier: superfluous_disable_command
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
- -
-
- - -
-
- - - - diff --git a/switch_case_alignment.html b/switch_case_alignment.html deleted file mode 100644 index 0ff8ee319..000000000 --- a/switch_case_alignment.html +++ /dev/null @@ -1,421 +0,0 @@ - - - - switch_case_alignment Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Switch and Case Statement Alignment

- -

Case statements should vertically align with their enclosing switch statement, or indented if configured otherwise.

- -
    -
  • Identifier: switch_case_alignment
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, indented_cases: false
  • -
-

Non Triggering Examples

-
switch someBool {
-case true: // case 1
-    print('red')
-case false:
-    /*
-    case 2
-    */
-    if case let .someEnum(val) = someFunc() {
-        print('blue')
-    }
-}
-enum SomeEnum {
-    case innocent
-}
-
-
if aBool {
-    switch someBool {
-    case true:
-        print('red')
-    case false:
-        print('blue')
-    }
-}
-
-
switch someInt {
-// comments ignored
-case 0:
-    // zero case
-    print('Zero')
-case 1:
-    print('One')
-default:
-    print('Some other number')
-}
-
-

Triggering Examples

-
switch someBool {
-    ↓case true:
-        print("red")
-    ↓case false:
-        print("blue")
-}
-
-
if aBool {
-    switch someBool {
-        ↓case true:
-            print('red')
-        ↓case false:
-            print('blue')
-    }
-}
-
-
switch someInt {
-    ↓case 0:
-        print('Zero')
-    ↓case 1:
-        print('One')
-    ↓default:
-        print('Some other number')
-}
-
-
switch someBool {
-case true:
-    print('red')
-    ↓case false:
-        print('blue')
-}
-
-
if aBool {
-    switch someBool {
-        ↓case true:
-        print('red')
-    case false:
-    print('blue')
-    }
-}
-
- -
-
- - -
-
- - - - diff --git a/switch_case_on_newline.html b/switch_case_on_newline.html deleted file mode 100644 index 21d7cc502..000000000 --- a/switch_case_on_newline.html +++ /dev/null @@ -1,459 +0,0 @@ - - - - switch_case_on_newline Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Switch Case on Newline

- -

Cases inside a switch should always be on a newline

- -
    -
  • Identifier: switch_case_on_newline
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
/*case 1: */return true
-
-
//case 1:
- return true
-
-
let x = [caseKey: value]
-
-
let x = [key: .default]
-
-
if case let .someEnum(value) = aFunction([key: 2]) { }
-
-
guard case let .someEnum(value) = aFunction([key: 2]) { }
-
-
for case let .someEnum(value) = aFunction([key: 2]) { }
-
-
enum Environment {
- case development
-}
-
-
enum Environment {
- case development(url: URL)
-}
-
-
enum Environment {
- case development(url: URL) // staging
-}
-
-
switch foo {
-    case 1:
- return true
-}
-
-
switch foo {
-    default:
- return true
-}
-
-
switch foo {
-    case let value:
- return true
-}
-
-
switch foo {
-    case .myCase: // error from network
- return true
-}
-
-
switch foo {
-    case let .myCase(value) where value > 10:
- return false
-}
-
-
switch foo {
-    case let .myCase(value)
- where value > 10:
- return false
-}
-
-
switch foo {
-    case let .myCase(code: lhsErrorCode, description: _)
- where lhsErrorCode > 10:
-return false
-}
-
-
switch foo {
-    case #selector(aFunction(_:)):
- return false
-
-}
-
-
do {
-  let loadedToken = try tokenManager.decodeToken(from: response)
-  return loadedToken
-} catch { throw error }
-
-

Triggering Examples

-
switch foo {
-    ↓case 1: return true
-}
-
-
switch foo {
-    ↓case let value: return true
-}
-
-
switch foo {
-    ↓default: return true
-}
-
-
switch foo {
-    ↓case "a string": return false
-}
-
-
switch foo {
-    ↓case .myCase: return false // error from network
-}
-
-
switch foo {
-    ↓case let .myCase(value) where value > 10: return false
-}
-
-
switch foo {
-    ↓case #selector(aFunction(_:)): return false
-
-}
-
-
switch foo {
-    ↓case let .myCase(value)
- where value > 10: return false
-}
-
-
switch foo {
-    ↓case .first,
- .second: return false
-}
-
- -
-
- - -
-
- - - - diff --git a/syntactic_sugar.html b/syntactic_sugar.html deleted file mode 100644 index 4a0eaa135..000000000 --- a/syntactic_sugar.html +++ /dev/null @@ -1,424 +0,0 @@ - - - - syntactic_sugar Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Syntactic Sugar

- -

Shorthand syntactic sugar should be used, i.e. [Int] instead of Array.

- -
    -
  • Identifier: syntactic_sugar
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let x: [Int]
-
-
let x: [Int: String]
-
-
let x: Int?
-
-
func x(a: [Int], b: Int) -> [Int: Any]
-
-
let x: Int!
-
-
extension Array {
-  func x() { }
-}
-
-
extension Dictionary {
-  func x() { }
-}
-
-
let x: CustomArray<String>
-
-
var currentIndex: Array<OnboardingPage>.Index?
-
-
func x(a: [Int], b: Int) -> Array<Int>.Index
-
-
unsafeBitCast(nonOptionalT, to: Optional<T>.self)
-
-
unsafeBitCast(someType, to: Swift.Array<T>.self)
-
-
IndexingIterator<Array<Dictionary<String, AnyObject>>>.self
-
-
let y = Optional<String>.Type
-
-
type is Optional<String>.Type
-
-
let x: Foo.Optional<String>
-
-
let x = case Optional<Any>.none = obj
-
-
let a = Swift.Optional<String?>.none
-
-

Triggering Examples

-
let x: ↓Array<String>
-
-
let x: ↓Dictionary<Int, String>
-
-
let x: ↓Optional<Int>
-
-
let x: ↓ImplicitlyUnwrappedOptional<Int>
-
-
let x: ↓Swift.Array<String>
-
-
func x(a: ↓Array<Int>, b: Int) -> [Int: Any]
-
-
func x(a: ↓Swift.Array<Int>, b: Int) -> [Int: Any]
-
-
func x(a: [Int], b: Int) -> ↓Dictionary<Int, String>
-
-
let x = y as? ↓Array<[String: Any]>
-
-
let x = Box<Array<T>>()
-
-
func x() -> Box<↓Array<T>>
-
-
func x() -> ↓Dictionary<String, Any>?
-
-
typealias Document = ↓Dictionary<String, T?>
-
-
func x(_ y: inout ↓Array<T>)
-
-
let x:↓Dictionary<String, ↓Dictionary<Int, Int>>
-
-
func x() -> Any { return ↓Dictionary<Int, String>()}
-
-
let x = ↓Array<String>.array(of: object)
-
-
let x = ↓Swift.Array<String>.array(of: object)
-
-
@_specialize(where S == ↓Array<Character>)
-public init<S: Sequence>(_ elements: S)
-
- -
-
- - -
-
- - - - diff --git a/test_case_accessibility.html b/test_case_accessibility.html deleted file mode 100644 index fd10cffda..000000000 --- a/test_case_accessibility.html +++ /dev/null @@ -1,431 +0,0 @@ - - - - test_case_accessibility Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Test case accessibility

- -

Test cases should only contain private non-test members.

- -
    -
  • Identifier: test_case_accessibility
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, allowed_prefixes: [[]]
  • -
-

Non Triggering Examples

-
let foo: String?
-
-class FooTests: XCTestCase {
-    static let allTests: [String] = []
-
-    private let foo: String {
-        let nestedMember = "hi"
-        return nestedMember
-    }
-
-    override static func setUp() {
-        super.setUp()
-    }
-
-    override func setUp() {
-        super.setUp()
-    }
-
-    override func setUpWithError() throws {
-        try super.setUpWithError()
-    }
-
-    override static func tearDown() {
-        super.tearDown()
-    }
-
-    override func tearDown() {
-        super.tearDown()
-    }
-
-    override func tearDownWithError() {
-        try super.tearDownWithError()
-    }
-
-    override func someFutureXCTestFunction() {
-        super.someFutureXCTestFunction()
-    }
-
-    func testFoo() {
-        XCTAssertTrue(true)
-    }
-
-    func testBar() {
-        func nestedFunc() {}
-    }
-
-    private someFunc(hasParam: Bool) {}
-}
-
-
class FooTests: XCTestCase {
-    func allowedPrefixTestFoo() {}
-}
-
-
class Foobar {
-    func setUp() {}
-
-    func tearDown() {}
-
-    func testFoo() {}
-}
-
-

Triggering Examples

-
class FooTests: XCTestCase {
-    ↓var foo: String?
-    ↓let bar: String?
-
-    ↓static func foo() {}
-
-    ↓func setUp(withParam: String) {}
-
-    ↓func foobar() {}
-
-    ↓func not_testBar() {}
-
-    ↓enum Nested {}
-
-    ↓static func testFoo() {}
-
-    ↓static func allTests() {}
-
-    ↓func testFoo(hasParam: Bool) {}
-}
-
-final class BarTests: XCTestCase {
-    ↓class Nested {}
-}
-
- -
-
- - -
-
- - - - diff --git a/todo.html b/todo.html deleted file mode 100644 index 9fd3c03e5..000000000 --- a/todo.html +++ /dev/null @@ -1,375 +0,0 @@ - - - - todo Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Todo

- -

TODOs and FIXMEs should be resolved.

- -
    -
  • Identifier: todo
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
// notaTODO:
-
-
-
// notaFIXME:
-
-
-

Triggering Examples

-
// ↓TODO:
-
-
-
// ↓FIXME:
-
-
-
// ↓TODO(note)
-
-
-
// ↓FIXME(note)
-
-
-
/* ↓FIXME: */
-
-
-
/* ↓TODO: */
-
-
-
/** ↓FIXME: */
-
-
-
/** ↓TODO: */
-
-
- -
-
- - -
-
- - - - diff --git a/toggle_bool.html b/toggle_bool.html deleted file mode 100644 index dca8fc88f..000000000 --- a/toggle_bool.html +++ /dev/null @@ -1,369 +0,0 @@ - - - - toggle_bool Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Toggle Bool

- -

Prefer someBool.toggle() over someBool = !someBool.

- -
    -
  • Identifier: toggle_bool
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
isHidden.toggle()
-
-
-
view.clipsToBounds.toggle()
-
-
-
func foo() { abc.toggle() }
-
-
view.clipsToBounds = !clipsToBounds
-
-
-
disconnected = !connected
-
-
-
result = !result.toggle()
-
-

Triggering Examples

-
↓isHidden = !isHidden
-
-
-
↓view.clipsToBounds = !view.clipsToBounds
-
-
-
func foo() { ↓abc = !abc }
-
- -
-
- - -
-
- - - - diff --git a/trailing_closure.html b/trailing_closure.html deleted file mode 100644 index a3e763042..000000000 --- a/trailing_closure.html +++ /dev/null @@ -1,381 +0,0 @@ - - - - trailing_closure Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Trailing Closure

- -

Trailing closure syntax should be used whenever possible.

- -
    -
  • Identifier: trailing_closure
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, only_single_muted_parameter: false
  • -
-

Non Triggering Examples

-
foo.map { $0 + 1 }
-
-
-
foo.bar()
-
-
-
foo.reduce(0) { $0 + 1 }
-
-
-
if let foo = bar.map({ $0 + 1 }) { }
-
-
-
foo.something(param1: { $0 }, param2: { $0 + 1 })
-
-
-
offsets.sorted { $0.offset < $1.offset }
-
-
-
foo.something({ return 1 }())
-
-
foo.something({ return $0 }(1))
-
-
foo.something(0, { return 1 }())
-
-

Triggering Examples

-
↓foo.map({ $0 + 1 })
-
-
-
↓foo.reduce(0, combine: { $0 + 1 })
-
-
-
↓offsets.sorted(by: { $0.offset < $1.offset })
-
-
-
↓foo.something(0, { $0 + 1 })
-
-
- -
-
- - -
-
- - - - diff --git a/trailing_comma.html b/trailing_comma.html deleted file mode 100644 index 07dd9fa8c..000000000 --- a/trailing_comma.html +++ /dev/null @@ -1,407 +0,0 @@ - - - - trailing_comma Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Trailing Comma

- -

Trailing commas in arrays and dictionaries should be avoided/enforced.

- -
    -
  • Identifier: trailing_comma
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, mandatory_comma: false
  • -
-

Non Triggering Examples

-
let foo = [1, 2, 3]
-
-
-
let foo = []
-
-
-
let foo = [:]
-
-
-
let foo = [1: 2, 2: 3]
-
-
-
let foo = [Void]()
-
-
-
let example = [ 1,
- 2
- // 3,
-]
-
-
foo([1: "\(error)"])
-
-
-

Triggering Examples

-
let foo = [1, 2, 3↓,]
-
-
-
let foo = [1, 2, 3↓, ]
-
-
-
let foo = [1, 2, 3   ↓,]
-
-
-
let foo = [1: 2, 2: 3↓, ]
-
-
-
struct Bar {
- let foo = [1: 2, 2: 3↓, ]
-}
-
-
-
let foo = [1, 2, 3↓,] + [4, 5, 6↓,]
-
-
-
let example = [ 1,
-2↓,
- // 3,
-]
-
-
let foo = ["אבג", "αβγ", "🇺🇸"↓,]
-
-
-
class C {
- #if true
- func f() {
- let foo = [1, 2, 3↓,]
- }
- #endif
-}
-
-
foo([1: "\(error)"↓,])
-
-
- -
-
- - -
-
- - - - diff --git a/trailing_newline.html b/trailing_newline.html deleted file mode 100644 index 8e6f9d811..000000000 --- a/trailing_newline.html +++ /dev/null @@ -1,354 +0,0 @@ - - - - trailing_newline Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Trailing Newline

- -

Files should have a single trailing newline.

- -
    -
  • Identifier: trailing_newline
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let a = 0
-
-
-

Triggering Examples

-
let a = 0
-
-
let a = 0
-
-
-
- -
-
- - -
-
- - - - diff --git a/trailing_semicolon.html b/trailing_semicolon.html deleted file mode 100644 index 838d2edb5..000000000 --- a/trailing_semicolon.html +++ /dev/null @@ -1,357 +0,0 @@ - - - - trailing_semicolon Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Trailing Semicolon

- -

Lines should not have trailing semicolons.

- -
    -
  • Identifier: trailing_semicolon
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let a = 0
-
-
-
let a = 0; let b = 0
-
-

Triggering Examples

-
let a = 0↓;
-
-
-
let a = 0↓;
-let b = 1
-
-
- -
-
- - -
-
- - - - diff --git a/trailing_whitespace.html b/trailing_whitespace.html deleted file mode 100644 index 19a0ee94f..000000000 --- a/trailing_whitespace.html +++ /dev/null @@ -1,366 +0,0 @@ - - - - trailing_whitespace Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Trailing Whitespace

- -

Lines should not have trailing whitespace.

- -
    -
  • Identifier: trailing_whitespace
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, ignores_empty_lines: false, ignores_comments: true
  • -
-

Non Triggering Examples

-
let name: String
-
-
-
//
-
-
-
// 
-
-
-
let name: String //
-
-
-
let name: String // 
-
-
-

Triggering Examples

-
let name: String 
-
-
-
/* */ let name: String 
-
-
- -
-
- - -
-
- - - - diff --git a/type_body_length.html b/type_body_length.html deleted file mode 100644 index 1563af66d..000000000 --- a/type_body_length.html +++ /dev/null @@ -1,3420 +0,0 @@ - - - - type_body_length Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Type Body Length

- -

Type bodies should not span too many lines.

- -
    -
  • Identifier: type_body_length
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning: 200, error: 350
  • -
-

Non Triggering Examples

-
class Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-}
-
-
-
class Abc {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-}
-
-
-
class Abc {
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-}
-
-
-
class Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-
-/* this is
-a multiline comment
-*/
-}
-
-
-
struct Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-}
-
-
-
struct Abc {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-}
-
-
-
struct Abc {
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-}
-
-
-
struct Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-
-/* this is
-a multiline comment
-*/
-}
-
-
-
enum Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-}
-
-
-
enum Abc {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-}
-
-
-
enum Abc {
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-}
-
-
-
enum Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-
-/* this is
-a multiline comment
-*/
-}
-
-
-

Triggering Examples

-
↓class Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-}
-
-
-
↓struct Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-}
-
-
-
↓enum Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-}
-
-
- -
-
- - -
-
- - - - diff --git a/type_contents_order.html b/type_contents_order.html deleted file mode 100644 index b0a8ed6ea..000000000 --- a/type_contents_order.html +++ /dev/null @@ -1,559 +0,0 @@ - - - - type_contents_order Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Type Contents Order

- -

Specifies the order of subtypes, properties, methods & more within a type.

- -
    -
  • Identifier: type_contents_order
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, order: [[SwiftLintFramework.TypeContent.case], [SwiftLintFramework.TypeContent.typeAlias, SwiftLintFramework.TypeContent.associatedType], [SwiftLintFramework.TypeContent.subtype], [SwiftLintFramework.TypeContent.typeProperty], [SwiftLintFramework.TypeContent.instanceProperty], [SwiftLintFramework.TypeContent.ibInspectable], [SwiftLintFramework.TypeContent.ibOutlet], [SwiftLintFramework.TypeContent.initializer], [SwiftLintFramework.TypeContent.typeMethod], [SwiftLintFramework.TypeContent.viewLifeCycleMethod], [SwiftLintFramework.TypeContent.ibAction], [SwiftLintFramework.TypeContent.otherMethod], [SwiftLintFramework.TypeContent.subscript], [SwiftLintFramework.TypeContent.deinitializer]]
  • -
-

Non Triggering Examples

-
class TestViewController: UIViewController {
-    // Type Aliases
-    typealias CompletionHandler = ((TestEnum) -> Void)
-
-    // Subtypes
-    class TestClass {
-        // 10 lines
-    }
-
-    struct TestStruct {
-        // 3 lines
-    }
-
-    enum TestEnum {
-        // 5 lines
-    }
-
-    // Type Properties
-    static let cellIdentifier: String = "AmazingCell"
-
-    // Instance Properties
-    var shouldLayoutView1: Bool!
-    weak var delegate: TestViewControllerDelegate?
-    private var hasLayoutedView1: Bool = false
-    private var hasLayoutedView2: Bool = false
-
-    private var hasAnyLayoutedView: Bool {
-         return hasLayoutedView1 || hasLayoutedView2
-    }
-
-    // IBOutlets
-    @IBOutlet private var view1: UIView!
-    @IBOutlet private var view2: UIView!
-
-    // Initializers
-    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
-        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
-    }
-
-    required init?(coder aDecoder: NSCoder) {
-        fatalError("init(coder:) has not been implemented")
-    }
-
-    // Type Methods
-    static func makeViewController() -> TestViewController {
-        // some code
-    }
-
-    // View Life-Cycle Methods
-    override func viewDidLoad() {
-        super.viewDidLoad()
-
-        view1.setNeedsLayout()
-        view1.layoutIfNeeded()
-        hasLayoutedView1 = true
-    }
-
-    override func viewDidLayoutSubviews() {
-        super.viewDidLayoutSubviews()
-
-        view2.setNeedsLayout()
-        view2.layoutIfNeeded()
-        hasLayoutedView2 = true
-    }
-
-    // IBActions
-    @IBAction func goNextButtonPressed() {
-        goToNextVc()
-        delegate?.didPressTrackedButton()
-    }
-
-    // Other Methods
-    func goToNextVc() { /* TODO */ }
-
-    func goToInfoVc() { /* TODO */ }
-
-    func goToRandomVc() {
-        let viewCtrl = getRandomVc()
-        present(viewCtrl, animated: true)
-    }
-
-    private func getRandomVc() -> UIViewController { return UIViewController() }
-
-    // Subscripts
-    subscript(_ someIndexThatIsNotEvenUsed: Int) -> String {
-        get {
-            return "This is just a test"
-        }
-
-        set {
-            log.warning("Just a test", newValue)
-        }
-    }
-
-    deinit {
-        log.debug("deinit")
-    },
-}
-
-

Triggering Examples

-
class TestViewController: UIViewController {
-    // Subtypes
-    ↓class TestClass {
-        // 10 lines
-    }
-
-    // Type Aliases
-    typealias CompletionHandler = ((TestEnum) -> Void)
-}
-
-
class TestViewController: UIViewController {
-    // Stored Type Properties
-    ↓static let cellIdentifier: String = "AmazingCell"
-
-    // Subtypes
-    class TestClass {
-        // 10 lines
-    }
-}
-
-
class TestViewController: UIViewController {
-    // Stored Instance Properties
-    ↓var shouldLayoutView1: Bool!
-
-    // Stored Type Properties
-    static let cellIdentifier: String = "AmazingCell"
-}
-
-
class TestViewController: UIViewController {
-    // IBOutlets
-    @IBOutlet private ↓var view1: UIView!
-
-    // Computed Instance Properties
-    private var hasAnyLayoutedView: Bool {
-         return hasLayoutedView1 || hasLayoutedView2
-    }
-}
-
-
class TestViewController: UIViewController {
-
-    // deinitializer
-    ↓deinit {
-        log.debug("deinit")
-    }
-
-    // Initializers
-    override ↓init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
-        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
-    }
-
-    // IBOutlets
-    @IBOutlet private var view1: UIView!
-    @IBOutlet private var view2: UIView!
-}
-
-
class TestViewController: UIViewController {
-    // View Life-Cycle Methods
-    override ↓func viewDidLoad() {
-        super.viewDidLoad()
-
-        view1.setNeedsLayout()
-        view1.layoutIfNeeded()
-        hasLayoutedView1 = true
-    }
-
-    // Type Methods
-    static func makeViewController() -> TestViewController {
-        // some code
-    }
-}
-
-
class TestViewController: UIViewController {
-    // IBActions
-    @IBAction ↓func goNextButtonPressed() {
-        goToNextVc()
-        delegate?.didPressTrackedButton()
-    }
-
-    // View Life-Cycle Methods
-    override func viewDidLoad() {
-        super.viewDidLoad()
-
-        view1.setNeedsLayout()
-        view1.layoutIfNeeded()
-        hasLayoutedView1 = true
-    }
-}
-
-
class TestViewController: UIViewController {
-    // Other Methods
-    ↓func goToNextVc() { /* TODO */ }
-
-    // IBActions
-    @IBAction func goNextButtonPressed() {
-        goToNextVc()
-        delegate?.didPressTrackedButton()
-    }
-}
-
-
class TestViewController: UIViewController {
-    // Subscripts
-    ↓subscript(_ someIndexThatIsNotEvenUsed: Int) -> String {
-        get {
-            return "This is just a test"
-        }
-
-        set {
-            log.warning("Just a test", newValue)
-        }
-    }
-
-    // MARK: Other Methods
-    func goToNextVc() { /* TODO */ }
-}
-
- -
-
- - -
-
- - - - diff --git a/type_name.html b/type_name.html deleted file mode 100644 index 75b13a5fd..000000000 --- a/type_name.html +++ /dev/null @@ -1,459 +0,0 @@ - - - - type_name Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Type Name

- -

Type name should only contain alphanumeric characters, start with an uppercase character and span between 3 and 40 characters in length.

- -
    -
  • Identifier: type_name
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: (min_length) w/e: 3/0, (max_length) w/e: 40/1000, excluded: [], allowed_symbols: [], validates_start_with_lowercase: true
  • -
-

Non Triggering Examples

-
class MyType {}
-
-
private class _MyType {}
-
-
class AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA {}
-
-
class MyView_Previews: PreviewProvider
-
-
private class _MyView_Previews: PreviewProvider
-
-
struct MyType {}
-
-
private struct _MyType {}
-
-
struct AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA {}
-
-
struct MyView_Previews: PreviewProvider
-
-
private struct _MyView_Previews: PreviewProvider
-
-
enum MyType {}
-
-
private enum _MyType {}
-
-
enum AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA {}
-
-
enum MyView_Previews: PreviewProvider
-
-
private enum _MyView_Previews: PreviewProvider
-
-
typealias Foo = Void
-
-
private typealias Foo = Void
-
-
protocol Foo {
-  associatedtype Bar
-}
-
-
protocol Foo {
-  associatedtype Bar: Equatable
-}
-
-
enum MyType {
-case value
-}
-
-

Triggering Examples

-
class ↓myType {}
-
-
class ↓_MyType {}
-
-
private class ↓MyType_ {}
-
-
class ↓My {}
-
-
class ↓AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA {}
-
-
class ↓MyView_Previews
-
-
private class ↓_MyView_Previews
-
-
class ↓MyView_Previews_Previews: PreviewProvider
-
-
struct ↓myType {}
-
-
struct ↓_MyType {}
-
-
private struct ↓MyType_ {}
-
-
struct ↓My {}
-
-
struct ↓AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA {}
-
-
struct ↓MyView_Previews
-
-
private struct ↓_MyView_Previews
-
-
struct ↓MyView_Previews_Previews: PreviewProvider
-
-
enum ↓myType {}
-
-
enum ↓_MyType {}
-
-
private enum ↓MyType_ {}
-
-
enum ↓My {}
-
-
enum ↓AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA {}
-
-
enum ↓MyView_Previews
-
-
private enum ↓_MyView_Previews
-
-
enum ↓MyView_Previews_Previews: PreviewProvider
-
-
typealias ↓X = Void
-
-
private typealias ↓Foo_Bar = Void
-
-
private typealias ↓foo = Void
-
-
typealias ↓AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA = Void
-
-
protocol Foo {
-  associatedtype ↓X
-}
-
-
protocol Foo {
-  associatedtype ↓Foo_Bar: Equatable
-}
-
-
protocol Foo {
-  associatedtype ↓AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-}
-
- -
-
- - -
-
- - - - diff --git a/unavailable_function.html b/unavailable_function.html deleted file mode 100644 index d070e41b6..000000000 --- a/unavailable_function.html +++ /dev/null @@ -1,394 +0,0 @@ - - - - unavailable_function Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unavailable Function

- -

Unimplemented functions should be marked as unavailable.

- -
    -
  • Identifier: unavailable_function
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class ViewController: UIViewController {
-  @available(*, unavailable)
-  public required init?(coder aDecoder: NSCoder) {
-    preconditionFailure("init(coder:) has not been implemented")
-  }
-}
-
-
func jsonValue(_ jsonString: String) -> NSObject {
-   let data = jsonString.data(using: .utf8)!
-   let result = try! JSONSerialization.jsonObject(with: data, options: [])
-   if let dict = (result as? [String: Any])?.bridge() {
-    return dict
-   } else if let array = (result as? [Any])?.bridge() {
-    return array
-   }
-   fatalError()
-}
-
-
func resetOnboardingStateAndCrash() -> Never {
-    resetUserDefaults()
-    // Crash the app to re-start the onboarding flow.
-    fatalError("Onboarding re-start crash.")
-}
-
-

Triggering Examples

-
class ViewController: UIViewController {
-  public required ↓init?(coder aDecoder: NSCoder) {
-    fatalError("init(coder:) has not been implemented")
-  }
-}
-
-
class ViewController: UIViewController {
-  public required ↓init?(coder aDecoder: NSCoder) {
-    let reason = "init(coder:) has not been implemented"
-    fatalError(reason)
-  }
-}
-
-
class ViewController: UIViewController {
-  public required ↓init?(coder aDecoder: NSCoder) {
-    preconditionFailure("init(coder:) has not been implemented")
-  }
-}
-
-
func resetOnboardingStateAndCrash() {
-    resetUserDefaults()
-    // Crash the app to re-start the onboarding flow.
-    fatalError("Onboarding re-start crash.")
-}
-
- -
-
- - -
-
- - - - diff --git a/undocumented.json b/undocumented.json deleted file mode 100644 index ec7e65616..000000000 --- a/undocumented.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "warnings": [ - - ], - "source_directory": "/Users/runner/work/1/s" -} \ No newline at end of file diff --git a/unneeded_break_in_switch.html b/unneeded_break_in_switch.html deleted file mode 100644 index df964c7e5..000000000 --- a/unneeded_break_in_switch.html +++ /dev/null @@ -1,406 +0,0 @@ - - - - unneeded_break_in_switch Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unneeded Break in Switch

- -

Avoid using unneeded break statements.

- -
    -
  • Identifier: unneeded_break_in_switch
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
switch foo {
-case .bar:
-    break
-}
-
-
switch foo {
-default:
-    break
-}
-
-
switch foo {
-case .bar:
-    for i in [0, 1, 2] { break }
-}
-
-
switch foo {
-case .bar:
-    if true { break }
-}
-
-
switch foo {
-case .bar:
-    something()
-}
-
-
let items = [Int]()
-for item in items {
-    if bar() {
-        do {
-            try foo()
-        } catch {
-            bar()
-            break
-        }
-    }
-}
-
-

Triggering Examples

-
switch foo {
-case .bar:
-    something()
-    ↓break
-}
-
-
switch foo {
-case .bar:
-    something()
-    ↓break // comment
-}
-
-
switch foo {
-default:
-    something()
-    ↓break
-}
-
-
switch foo {
-case .foo, .foo2 where condition:
-    something()
-    ↓break
-}
-
- -
-
- - -
-
- - - - diff --git a/unneeded_parentheses_in_closure_argument.html b/unneeded_parentheses_in_closure_argument.html deleted file mode 100644 index 0cff6eb59..000000000 --- a/unneeded_parentheses_in_closure_argument.html +++ /dev/null @@ -1,392 +0,0 @@ - - - - unneeded_parentheses_in_closure_argument Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unneeded Parentheses in Closure Argument

- -

Parentheses are not needed when declaring closure arguments.

- -
    -
  • Identifier: unneeded_parentheses_in_closure_argument
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let foo = { (bar: Int) in }
-
-
-
let foo = { bar, _  in }
-
-
-
let foo = { bar in }
-
-
-
let foo = { bar -> Bool in return true }
-
-
-

Triggering Examples

-
call(arg: { ↓(bar) in })
-
-
-
call(arg: { ↓(bar, _) in })
-
-
-
let foo = { ↓(bar) -> Bool in return true }
-
-
-
foo.map { ($0, $0) }.forEach { ↓(x, y) in }
-
-
foo.bar { [weak self] ↓(x, y) in }
-
-
[].first { ↓(temp) in
-    [].first { ↓(temp) in
-        [].first { ↓(temp) in
-            _ = temp
-            return false
-        }
-        return false
-    }
-    return false
-}
-
-
[].first { temp in
-    [].first { ↓(temp) in
-        [].first { ↓(temp) in
-            _ = temp
-            return false
-        }
-        return false
-    }
-    return false
-}
-
- -
-
- - -
-
- - - - diff --git a/unowned_variable_capture.html b/unowned_variable_capture.html deleted file mode 100644 index 0e70ac87c..000000000 --- a/unowned_variable_capture.html +++ /dev/null @@ -1,363 +0,0 @@ - - - - unowned_variable_capture Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unowned Variable Capture

- -

Prefer capturing references as weak to avoid potential crashes.

- -
    -
  • Identifier: unowned_variable_capture
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
foo { [weak self] in _ }
-
-
foo { [weak self] param in _ }
-
-
foo { [weak bar] in _ }
-
-
foo { [weak bar] param in _ }
-
-
foo { bar in _ }
-
-
foo { $0 }
-
-

Triggering Examples

-
foo { [↓unowned self] in _ }
-
-
foo { [↓unowned bar] in _ }
-
-
foo { [bar, ↓unowned self] in _ }
-
- -
-
- - -
-
- - - - diff --git a/untyped_error_in_catch.html b/untyped_error_in_catch.html deleted file mode 100644 index a95956c3c..000000000 --- a/untyped_error_in_catch.html +++ /dev/null @@ -1,392 +0,0 @@ - - - - untyped_error_in_catch Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Untyped Error in Catch

- -

Catch statements should not declare error variables without type casting.

- -
    -
  • Identifier: untyped_error_in_catch
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
do {
-  try foo()
-} catch {}
-
-
do {
-  try foo()
-} catch Error.invalidOperation {
-} catch {}
-
-
do {
-  try foo()
-} catch let error as MyError {
-} catch {}
-
-
do {
-  try foo()
-} catch var error as MyError {
-} catch {}
-
-

Triggering Examples

-
do {
-  try foo()
-} ↓catch var error {}
-
-
do {
-  try foo()
-} ↓catch let error {}
-
-
do {
-  try foo()
-} ↓catch let someError {}
-
-
do {
-  try foo()
-} ↓catch var someError {}
-
-
do {
-  try foo()
-} ↓catch let e {}
-
-
do {
-  try foo()
-} ↓catch(let error) {}
-
-
do {
-  try foo()
-} ↓catch (let error) {}
-
- -
-
- - -
-
- - - - diff --git a/unused_capture_list.html b/unused_capture_list.html deleted file mode 100644 index 4f2af937e..000000000 --- a/unused_capture_list.html +++ /dev/null @@ -1,435 +0,0 @@ - - - - unused_capture_list Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unused Capture List

- -

Unused reference in a capture list should be removed.

- -
    -
  • Identifier: unused_capture_list
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
[1, 2].map {
-    [ weak
-      delegate,
-      unowned
-      self
-    ] num in
-    delegate.handle(num)
-}
-
-
[1, 2].map { [weak self] num in
-    self?.handle(num)
-}
-
-
let failure: Failure = { [weak self, unowned delegate = self.delegate!] foo in
-    delegate.handle(foo, self)
-}
-
-
numbers.forEach({
-    [weak handler] in
-    handler?.handle($0)
-})
-
-
withEnvironment(apiService: MockService(fetchProjectResponse: project)) {
-    [Device.phone4_7inch, Device.phone5_8inch, Device.pad].forEach { device in
-        device.handle()
-    }
-}
-
-
{ [foo] _ in foo.bar() }()
-
-
sizes.max().flatMap { [(offset: offset, size: $0)] } ?? []
-
-
[1, 2].map { [self] num in
-    handle(num)
-}
-
-
[1, 2].map { [unowned self] num in
-    handle(num)
-}
-
-
[1, 2].map { [self, unowned delegate = self.delegate!] num in
-    delegate.handle(num)
-}
-
-
[1, 2].map { [unowned self, unowned delegate = self.delegate!] num in
-    delegate.handle(num)
-}
-
-
[1, 2].map {
-    [ weak
-      delegate,
-      self
-    ] num in
-    delegate.handle(num)
-}
-
-
rx.onViewDidAppear.subscribe(onNext: { [unowned self] in
-      doSomething()
-}).disposed(by: disposeBag)
-
-

Triggering Examples

-
[1, 2].map { [↓weak self] num in
-    print(num)
-}
-
-
let failure: Failure = { [weak self, ↓unowned delegate = self.delegate!] foo in
-    self?.handle(foo)
-}
-
-
let failure: Failure = { [↓weak self, ↓unowned delegate = self.delegate!] foo in
-    print(foo)
-}
-
-
numbers.forEach({
-    [weak handler] in
-    print($0)
-})
-
-
numbers.forEach({
-    [self, weak handler] in
-    print($0)
-})
-
-
withEnvironment(apiService: MockService(fetchProjectResponse: project)) { [↓foo] in
-    [Device.phone4_7inch, Device.phone5_8inch, Device.pad].forEach { device in
-        device.handle()
-    }
-}
-
-
{ [↓foo] in _ }()
-
- -
-
- - -
-
- - - - diff --git a/unused_closure_parameter.html b/unused_closure_parameter.html deleted file mode 100644 index c87c6bb53..000000000 --- a/unused_closure_parameter.html +++ /dev/null @@ -1,474 +0,0 @@ - - - - unused_closure_parameter Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unused Closure Parameter

- -

Unused parameter in a closure should be replaced with _.

- -
    -
  • Identifier: unused_closure_parameter
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
[1, 2].map { $0 + 1 }
-
-
-
[1, 2].map({ $0 + 1 })
-
-
-
[1, 2].map { number in
- number + 1 
-}
-
-
-
[1, 2].map { _ in
- 3 
-}
-
-
-
[1, 2].something { number, idx in
- return number * idx
-}
-
-
-
let isEmpty = [1, 2].isEmpty()
-
-
-
violations.sorted(by: { lhs, rhs in 
- return lhs.location > rhs.location
-})
-
-
-
rlmConfiguration.migrationBlock.map { rlmMigration in
-return { migration, schemaVersion in
-rlmMigration(migration.rlmMigration, schemaVersion)
-}
-}
-
-
genericsFunc { (a: Type, b) in
-a + b
-}
-
-
-
var label: UILabel = { (lbl: UILabel) -> UILabel in
-   lbl.backgroundColor = .red
-   return lbl
-}(UILabel())
-
-
-
hoge(arg: num) { num in
-  return num
-}
-
-
-
({ (manager: FileManager) in
-  print(manager)
-})(FileManager.default)
-
-
withPostSideEffect { input in
-    if true { print("\(input)") }
-}
-
-
viewModel?.profileImage.didSet(weak: self) { (self, profileImage) in
-    self.profileImageView.image = profileImage
-}
-
-
let failure: Failure = { task, error in
-    observer.sendFailed(error, task)
-}
-
-
List($names) { $name in
-    Text(name)
-}
-
-
List($names) { $name in
-    TextField($name)
-}
-
-

Triggering Examples

-
[1, 2].map { ↓number in
- return 3
-}
-
-
-
[1, 2].map { ↓number in
- return numberWithSuffix
-}
-
-
-
[1, 2].map { ↓number in
- return 3 // number
-}
-
-
-
[1, 2].map { ↓number in
- return 3 "number"
-}
-
-
-
[1, 2].something { number, ↓idx in
- return number
-}
-
-
-
genericsFunc { (↓number: TypeA, idx: TypeB) in return idx
-}
-
-
-
hoge(arg: num) { ↓num in
-}
-
-
-
fooFunc { ↓아 in
- }
-
-
func foo () {
- bar { ↓number in
- return 3
-}
-
-
-
viewModel?.profileImage.didSet(weak: self) { (↓self, profileImage) in
-    profileImageView.image = profileImage
-}
-
-
let failure: Failure = { ↓task, error in
-    observer.sendFailed(error)
-}
-
-
List($names) { ↓$name in
-    Text("Foo")
-}
-
- -
-
- - -
-
- - - - diff --git a/unused_control_flow_label.html b/unused_control_flow_label.html deleted file mode 100644 index f73a6bd23..000000000 --- a/unused_control_flow_label.html +++ /dev/null @@ -1,388 +0,0 @@ - - - - unused_control_flow_label Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unused Control Flow Label

- -

Unused control flow label should be removed.

- -
    -
  • Identifier: unused_control_flow_label
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
loop: while true { break loop }
-
-
loop: while true { continue loop }
-
-
loop:
-    while true { break loop }
-
-
while true { break }
-
-
loop: for x in array { break loop }
-
-
label: switch number {
-case 1: print("1")
-case 2: print("2")
-default: break label
-}
-
-
loop: repeat {
-    if x == 10 {
-        break loop
-    }
-} while true
-
-

Triggering Examples

-
↓loop: while true { break }
-
-
↓loop: while true { break loop1 }
-
-
↓loop: while true { break outerLoop }
-
-
↓loop: for x in array { break }
-
-
↓label: switch number {
-case 1: print("1")
-case 2: print("2")
-default: break
-}
-
-
↓loop: repeat {
-    if x == 10 {
-        break
-    }
-} while true
-
- -
-
- - -
-
- - - - diff --git a/unused_declaration.html b/unused_declaration.html deleted file mode 100644 index abf660465..000000000 --- a/unused_declaration.html +++ /dev/null @@ -1,577 +0,0 @@ - - - - unused_declaration Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unused Declaration

- -

Declarations should be referenced at least once within all files linted.

- -
    -
  • Identifier: unused_declaration
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: Yes
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: severity: error, include_public_and_open: false, related_usrs_to_skip: [“s:7SwiftUI15PreviewProviderP”]
  • -
-

Non Triggering Examples

-
let kConstant = 0
-_ = kConstant
-
-
enum Change<T> {
-  case insert(T)
-  case delete(T)
-}
-
-extension Sequence {
-  func deletes<T>() -> [T] where Element == Change<T> {
-    return compactMap { operation in
-      if case .delete(let value) = operation {
-        return value
-      } else {
-        return nil
-      }
-    }
-  }
-}
-
-let changes = [Change.insert(0), .delete(0)]
-_ = changes.deletes()
-
-
struct Item: Codable {}
-struct ResponseModel: Codable {
-    let items: [Item]
-
-    enum CodingKeys: String, CodingKey {
-        case items = "ResponseItems"
-    }
-}
-
-_ = ResponseModel(items: [Item()]).items
-
-
class ResponseModel {
-    @objc func foo() {
-    }
-}
-_ = ResponseModel()
-
-
public func foo() {}
-
-
protocol Foo {}
-
-extension Foo {
-    func bar() {}
-}
-
-struct MyStruct: Foo {}
-MyStruct().bar()
-
-
import XCTest
-class MyTests: XCTestCase {
-    func testExample() {}
-}
-
-
import XCTest
-open class BestTestCase: XCTestCase {}
-class MyTests: BestTestCase {
-    func testExample() {}
-}
-
-
enum Component {
-  case string(StaticString)
-  indirect case array([Component])
-  indirect case optional(Component?)
-}
-
-@resultBuilder
-struct ComponentBuilder {
-  static func buildExpression(_ string: StaticString) -> Component {
-    return .string(string)
-  }
-
-  static func buildBlock(_ components: Component...) -> Component {
-    return .array(components)
-  }
-
-  static func buildIf(_ value: Component?) -> Component {
-    return .optional(value)
-  }
-}
-
-func acceptComponentBuilder(@ComponentBuilder _ body: () -> Component) {
-  print(body())
-}
-
-acceptComponentBuilder {
-  "hello"
-}
-
-
import Cocoa
-
-@NSApplicationMain
-final class AppDelegate: NSObject, NSApplicationDelegate {
-    func applicationWillFinishLaunching(_ notification: Notification) {}
-    func applicationWillBecomeActive(_ notification: Notification) {}
-}
-
-
import Foundation
-
-public final class Foo: NSObject {
-    @IBAction private func foo() {}
-}
-
-
import Foundation
-
-public final class Foo: NSObject {
-    @objc func foo() {}
-}
-
-
import Foundation
-
-public final class Foo: NSObject {
-    @IBInspectable private var innerPaddingWidth: Int {
-        set { self.backgroundView.innerPaddingWidth = newValue }
-        get { return self.backgroundView.innerPaddingWidth }
-    }
-}
-
-
import Foundation
-
-public final class Foo: NSObject {
-    @IBOutlet private var bar: NSObject! {
-        set { fatalError() }
-        get { fatalError() }
-    }
-
-    @IBOutlet private var baz: NSObject! {
-        willSet { print("willSet") }
-    }
-
-    @IBOutlet private var buzz: NSObject! {
-        didSet { print("didSet") }
-    }
-}
-
-

Triggering Examples

-
let ↓kConstant = 0
-
-
struct Item {}
-struct ↓ResponseModel: Codable {
-    let ↓items: [Item]
-
-    enum ↓CodingKeys: String {
-        case items = "ResponseItems"
-    }
-}
-
-
class ↓ResponseModel {
-    func ↓foo() {
-    }
-}
-
-
public func ↓foo() {}
-
-
protocol Foo {
-    func ↓bar1()
-}
-
-extension Foo {
-    func bar1() {}
-    func ↓bar2() {}
-}
-
-struct MyStruct: Foo {}
-_ = MyStruct()
-
-
import XCTest
-class ↓MyTests: NSObject {
-    func ↓testExample() {}
-}
-
-
enum Component {
-  case string(StaticString)
-  indirect case array([Component])
-  indirect case optional(Component?)
-}
-
-struct ComponentBuilder {
-  func ↓buildExpression(_ string: StaticString) -> Component {
-    return .string(string)
-  }
-
-  func ↓buildBlock(_ components: Component...) -> Component {
-    return .array(components)
-  }
-
-  func ↓buildIf(_ value: Component?) -> Component {
-    return .optional(value)
-  }
-
-  static func ↓buildABear(_ components: Component...) -> Component {
-    return .array(components)
-  }
-}
-
-_ = ComponentBuilder()
-
-
import Cocoa
-
-@NSApplicationMain
-final class AppDelegate: NSObject, NSApplicationDelegate {
-    func ↓appWillFinishLaunching(_ notification: Notification) {}
-    func applicationWillBecomeActive(_ notification: Notification) {}
-}
-
-
import Cocoa
-
-final class ↓AppDelegate: NSObject, NSApplicationDelegate {
-    func applicationWillFinishLaunching(_ notification: Notification) {}
-    func applicationWillBecomeActive(_ notification: Notification) {}
-}
-
-
import Foundation
-
-public final class Foo: NSObject {
-    @IBOutlet var ↓bar: NSObject!
-}
-
-
import Foundation
-
-public final class Foo: NSObject {
-    @IBInspectable var ↓bar: String!
-}
-
-
import Foundation
-
-final class Foo: NSObject {}
-final class ↓Bar {
-    var ↓foo = Foo()
-}
-
- -
-
- - -
-
- - - - diff --git a/unused_enumerated.html b/unused_enumerated.html deleted file mode 100644 index 8ea9acf61..000000000 --- a/unused_enumerated.html +++ /dev/null @@ -1,384 +0,0 @@ - - - - unused_enumerated Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unused Enumerated

- -

When the index or the item is not used, .enumerated() can be removed.

- -
    -
  • Identifier: unused_enumerated
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
for (idx, foo) in bar.enumerated() { }
-
-
-
for (_, foo) in bar.enumerated().something() { }
-
-
-
for (_, foo) in bar.something() { }
-
-
-
for foo in bar.enumerated() { }
-
-
-
for foo in bar { }
-
-
-
for (idx, _) in bar.enumerated().something() { }
-
-
-
for (idx, _) in bar.something() { }
-
-
-
for idx in bar.indices { }
-
-
-
for (section, (event, _)) in data.enumerated() {}
-
-
-

Triggering Examples

-
for (↓_, foo) in bar.enumerated() { }
-
-
-
for (↓_, foo) in abc.bar.enumerated() { }
-
-
-
for (↓_, foo) in abc.something().enumerated() { }
-
-
-
for (idx, ↓_) in bar.enumerated() { }
-
-
- -
-
- - -
-
- - - - diff --git a/unused_import.html b/unused_import.html deleted file mode 100644 index 881a124e2..000000000 --- a/unused_import.html +++ /dev/null @@ -1,392 +0,0 @@ - - - - unused_import Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unused Import

- -

All imported modules should be required to make the file compile.

- -
    -
  • Identifier: unused_import
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: Yes
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: severity: warning, require_explicit_imports: false, allowed_transitive_imports: [], always_keep_imports: []
  • -
-

Non Triggering Examples

-
import Dispatch // This is used
-dispatchMain()
-
-
@testable import Dispatch
-dispatchMain()
-
-
import Foundation
-@objc
-class A {}
-
-
import UnknownModule
-func foo(error: Swift.Error) {}
-
-
import Foundation
-import ObjectiveC
-let 👨‍👩‍👧‍👦 = #selector(NSArray.contains(_:))
-👨‍👩‍👧‍👦 == 👨‍👩‍👧‍👦
-
-

Triggering Examples

-
↓import Dispatch
-struct A {
-  static func dispatchMain() {}
-}
-A.dispatchMain()
-
-
↓import Foundation // This is unused
-struct A {
-  static func dispatchMain() {}
-}
-A.dispatchMain()
-↓import Dispatch
-
-
-
↓import Foundation
-dispatchMain()
-
-
↓import Foundation
-// @objc
-class A {}
-
-
↓import Foundation
-import UnknownModule
-func foo(error: Swift.Error) {}
-
-
↓import Swift
-↓import SwiftShims
-func foo(error: Swift.Error) {}
-
- -
-
- - -
-
- - - - diff --git a/unused_optional_binding.html b/unused_optional_binding.html deleted file mode 100644 index 28888a0b1..000000000 --- a/unused_optional_binding.html +++ /dev/null @@ -1,402 +0,0 @@ - - - - unused_optional_binding Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unused Optional Binding

- -

Prefer != nil over let _ =

- -
    -
  • Identifier: unused_optional_binding
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, ignore_optional_try: false
  • -
-

Non Triggering Examples

-
if let bar = Foo.optionalValue {
-}
-
-
-
if let (_, second) = getOptionalTuple() {
-}
-
-
-
if let (_, asd, _) = getOptionalTuple(), let bar = Foo.optionalValue {
-}
-
-
-
if foo() { let _ = bar() }
-
-
-
if foo() { _ = bar() }
-
-
-
if case .some(_) = self {}
-
-
if let point = state.find({ _ in true }) {}
-
-

Triggering Examples

-
if let ↓_ = Foo.optionalValue {
-}
-
-
-
if let a = Foo.optionalValue, let ↓_ = Foo.optionalValue2 {
-}
-
-
-
guard let a = Foo.optionalValue, let ↓_ = Foo.optionalValue2 {
-}
-
-
-
if let (first, second) = getOptionalTuple(), let ↓_ = Foo.optionalValue {
-}
-
-
-
if let (first, _) = getOptionalTuple(), let ↓_ = Foo.optionalValue {
-}
-
-
-
if let (_, second) = getOptionalTuple(), let ↓_ = Foo.optionalValue {
-}
-
-
-
if let ↓(_, _, _) = getOptionalTuple(), let bar = Foo.optionalValue {
-}
-
-
-
func foo() {
-if let ↓_ = bar {
-}
-
-
-
if case .some(let ↓_) = self {}
-
- -
-
- - -
-
- - - - diff --git a/unused_setter_value.html b/unused_setter_value.html deleted file mode 100644 index b1b58a05e..000000000 --- a/unused_setter_value.html +++ /dev/null @@ -1,434 +0,0 @@ - - - - unused_setter_value Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unused Setter Value

- -

Setter value is not used.

- -
    -
  • Identifier: unused_setter_value
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
var aValue: String {
-    get {
-        return Persister.shared.aValue
-    }
-    set {
-        Persister.shared.aValue = newValue
-    }
-}
-
-
var aValue: String {
-    set {
-        Persister.shared.aValue = newValue
-    }
-    get {
-        return Persister.shared.aValue
-    }
-}
-
-
var aValue: String {
-    get {
-        return Persister.shared.aValue
-    }
-    set(value) {
-        Persister.shared.aValue = value
-    }
-}
-
-
override var aValue: String {
- get {
-     return Persister.shared.aValue
- }
- set() { }
-}
-
-

Triggering Examples

-
var aValue: String {
-    get {
-        return Persister.shared.aValue
-    }
-    ↓set {
-        Persister.shared.aValue = aValue
-    }
-}
-
-
var aValue: String {
-    ↓set {
-        Persister.shared.aValue = aValue
-    }
-    get {
-        return Persister.shared.aValue
-    }
-}
-
-
var aValue: String {
-    get {
-        return Persister.shared.aValue
-    }
-    ↓set {
-        Persister.shared.aValue = aValue
-    }
-}
-
-
var aValue: String {
-    get {
-        let newValue = Persister.shared.aValue
-        return newValue
-    }
-    ↓set {
-        Persister.shared.aValue = aValue
-    }
-}
-
-
var aValue: String {
-    get {
-        return Persister.shared.aValue
-    }
-    ↓set(value) {
-        Persister.shared.aValue = aValue
-    }
-}
-
-
override var aValue: String {
-    get {
-        return Persister.shared.aValue
-    }
-    ↓set {
-        Persister.shared.aValue = aValue
-    }
-}
-
- -
-
- - -
-
- - - - diff --git a/valid_ibinspectable.html b/valid_ibinspectable.html deleted file mode 100644 index ccc21d6f5..000000000 --- a/valid_ibinspectable.html +++ /dev/null @@ -1,421 +0,0 @@ - - - - valid_ibinspectable Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Valid IBInspectable

- -

@IBInspectable should be applied to variables only, have its type explicit and be of a supported type

- -
    -
  • Identifier: valid_ibinspectable
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class Foo {
-  @IBInspectable private var x: Int
-}
-
-
class Foo {
-  @IBInspectable private var x: String?
-}
-
-
class Foo {
-  @IBInspectable private var x: String!
-}
-
-
class Foo {
-  @IBInspectable private var count: Int = 0
-}
-
-
class Foo {
-  private var notInspectable = 0
-}
-
-
class Foo {
-  private let notInspectable: Int
-}
-
-
class Foo {
-  private let notInspectable: UInt8
-}
-
-
extension Foo {
-    @IBInspectable var color: UIColor {
-        set {
-            self.bar.textColor = newValue
-        }
-
-        get {
-            return self.bar.textColor
-        }
-    }
-}
-
-

Triggering Examples

-
class Foo {
-  @IBInspectable private ↓let count: Int
-}
-
-
class Foo {
-  @IBInspectable private ↓var insets: UIEdgeInsets
-}
-
-
class Foo {
-  @IBInspectable private ↓var count = 0
-}
-
-
class Foo {
-  @IBInspectable private ↓var count: Int?
-}
-
-
class Foo {
-  @IBInspectable private ↓var count: Int!
-}
-
-
class Foo {
-  @IBInspectable private ↓var x: ImplicitlyUnwrappedOptional<Int>
-}
-
-
class Foo {
-  @IBInspectable private ↓var count: Optional<Int>
-}
-
-
class Foo {
-  @IBInspectable private ↓var x: Optional<String>
-}
-
-
class Foo {
-  @IBInspectable private ↓var x: ImplicitlyUnwrappedOptional<String>
-}
-
- -
-
- - -
-
- - - - diff --git a/vertical_parameter_alignment.html b/vertical_parameter_alignment.html deleted file mode 100644 index 03d84e61b..000000000 --- a/vertical_parameter_alignment.html +++ /dev/null @@ -1,396 +0,0 @@ - - - - vertical_parameter_alignment Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Vertical Parameter Alignment

- -

Function parameters should be aligned vertically if they’re in multiple lines in a declaration.

- -
    -
  • Identifier: vertical_parameter_alignment
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
func validateFunction(_ file: SwiftLintFile, kind: SwiftDeclarationKind,
-                      dictionary: SourceKittenDictionary) { }
-
-
func validateFunction(_ file: SwiftLintFile, kind: SwiftDeclarationKind,
-                      dictionary: SourceKittenDictionary) -> [StyleViolation]
-
-
func foo(bar: Int)
-
-
func foo(bar: Int) -> String
-
-
func validateFunction(_ file: SwiftLintFile, kind: SwiftDeclarationKind,
-                      dictionary: SourceKittenDictionary)
-                      -> [StyleViolation]
-
-
func validateFunction(
-   _ file: SwiftLintFile, kind: SwiftDeclarationKind,
-   dictionary: SourceKittenDictionary) -> [StyleViolation]
-
-
func validateFunction(
-   _ file: SwiftLintFile, kind: SwiftDeclarationKind,
-   dictionary: SourceKittenDictionary
-) -> [StyleViolation]
-
-
func regex(_ pattern: String,
-           options: NSRegularExpression.Options = [.anchorsMatchLines,
-                                                   .dotMatchesLineSeparators]) -> NSRegularExpression
-
-
func foo(a: Void,
-         b: [String: String] =
-         [:]) {
-}
-
-
func foo(data: (size: CGSize,
-                identifier: String)) {}
-
-
func foo(data: Data,
-         @ViewBuilder content: @escaping (Data.Element.IdentifiedValue) -> Content) {}
-
-

Triggering Examples

-
func validateFunction(_ file: SwiftLintFile, kind: SwiftDeclarationKind,
-                  ↓dictionary: SourceKittenDictionary) { }
-
-
func validateFunction(_ file: SwiftLintFile, kind: SwiftDeclarationKind,
-                       ↓dictionary: SourceKittenDictionary) { }
-
-
func validateFunction(_ file: SwiftLintFile,
-                  ↓kind: SwiftDeclarationKind,
-                  ↓dictionary: SourceKittenDictionary) { }
-
-
func foo(data: Data,
-            ↓@ViewBuilder content: @escaping (Data.Element.IdentifiedValue) -> Content) {}
-
- -
-
- - -
-
- - - - diff --git a/vertical_parameter_alignment_on_call.html b/vertical_parameter_alignment_on_call.html deleted file mode 100644 index feb620607..000000000 --- a/vertical_parameter_alignment_on_call.html +++ /dev/null @@ -1,414 +0,0 @@ - - - - vertical_parameter_alignment_on_call Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Vertical Parameter Alignment On Call

- -

Function parameters should be aligned vertically if they’re in multiple lines in a method call.

- -
    -
  • Identifier: vertical_parameter_alignment_on_call
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
foo(param1: 1, param2: bar
-    param3: false, param4: true)
-
-
foo(param1: 1, param2: bar)
-
-
foo(param1: 1, param2: bar
-    param3: false,
-    param4: true)
-
-
foo(
-   param1: 1
-) { _ in }
-
-
UIView.animate(withDuration: 0.4, animations: {
-    blurredImageView.alpha = 1
-}, completion: { _ in
-    self.hideLoading()
-})
-
-
UIView.animate(withDuration: 0.4, animations: {
-    blurredImageView.alpha = 1
-},
-completion: { _ in
-    self.hideLoading()
-})
-
-
foo(param1: 1, param2: { _ in },
-    param3: false, param4: true)
-
-
foo({ _ in
-       bar()
-   },
-   completion: { _ in
-       baz()
-   }
-)
-
-
foo(param1: 1, param2: [
-   0,
-   1
-], param3: 0)
-
-
myFunc(foo: 0,
-       bar: baz == 0)
-
-

Triggering Examples

-
foo(param1: 1, param2: bar
-                ↓param3: false, param4: true)
-
-
foo(param1: 1, param2: bar
- ↓param3: false, param4: true)
-
-
foo(param1: 1, param2: bar
-       ↓param3: false,
-       ↓param4: true)
-
-
foo(param1: 1,
-       ↓param2: { _ in })
-
-
foo(param1: 1,
-    param2: { _ in
-}, param3: 2,
- ↓param4: 0)
-
-
foo(param1: 1, param2: { _ in },
-       ↓param3: false, param4: true)
-
-
myFunc(foo: 0,
-        ↓bar: baz == 0)
-
- -
-
- - -
-
- - - - diff --git a/vertical_whitespace.html b/vertical_whitespace.html deleted file mode 100644 index a325e42b5..000000000 --- a/vertical_whitespace.html +++ /dev/null @@ -1,378 +0,0 @@ - - - - vertical_whitespace Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Vertical Whitespace

- -

Limit vertical whitespace to a single empty line.

- -
    -
  • Identifier: vertical_whitespace
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning, max_empty_lines: 1
  • -
-

Non Triggering Examples

-
let abc = 0
-
-
-
let abc = 0
-
-
-
-
/* bcs 
-
-
-
-*/
-
-
// bca 
-
-
-
-

Triggering Examples

-
let aaaa = 0
-
-
-
-
-
struct AAAA {}
-
-
-
-
-
-
class BBBB {}
-
-
-
-
- -
-
- - -
-
- - - - diff --git a/vertical_whitespace_between_cases.html b/vertical_whitespace_between_cases.html deleted file mode 100644 index e325104cd..000000000 --- a/vertical_whitespace_between_cases.html +++ /dev/null @@ -1,432 +0,0 @@ - - - - vertical_whitespace_between_cases Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Vertical Whitespace Between Cases

- -

Include a single empty line between switch cases.

- -
    -
  • Identifier: vertical_whitespace_between_cases
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
    switch x {
-    case .valid:
-        print("multiple ...")
-        print("... lines")
-
-    case .invalid:
-        print("multiple ...")
-        print("... lines")
-    }
-
-
    switch x {
-    case .valid:
-        print("x is valid")
-
-    case .invalid:
-        print("x is invalid")
-    }
-
-
    switch x {
-    case 0..<5:
-        print("x is valid")
-
-    default:
-        print("x is invalid")
-    }
-
-
switch x {
-
-case 0..<5:
-    print("x is low")
-
-case 5..<10:
-    print("x is high")
-
-default:
-    print("x is invalid")
-
-}
-
-
switch x {
-case 0..<5:
-    print("x is low")
-
-case 5..<10:
-    print("x is high")
-
-default:
-    print("x is invalid")
-}
-
-
switch x {
-case 0..<5: print("x is low")
-case 5..<10: print("x is high")
-default: print("x is invalid")
-}
-
-
switch x {    
-case 1:    
-    print("one")    
-
-default:    
-    print("not one")    
-}    
-
-

Triggering Examples

-
    switch x {
-    case .valid:
-        print("multiple ...")
-        print("... lines")
-↓    case .invalid:
-        print("multiple ...")
-        print("... lines")
-    }
-
-
    switch x {
-    case .valid:
-        print("x is valid")
-↓    case .invalid:
-        print("x is invalid")
-    }
-
-
    switch x {
-    case 0..<5:
-        print("x is valid")
-↓    default:
-        print("x is invalid")
-    }
-
- -
-
- - -
-
- - - - diff --git a/vertical_whitespace_closing_braces.html b/vertical_whitespace_closing_braces.html deleted file mode 100644 index 7f2092de9..000000000 --- a/vertical_whitespace_closing_braces.html +++ /dev/null @@ -1,423 +0,0 @@ - - - - vertical_whitespace_closing_braces Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Vertical Whitespace before Closing Braces

- -

Don’t include vertical whitespace (empty line) before closing braces.

- -
    -
  • Identifier: vertical_whitespace_closing_braces
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: N/A
  • -
-

Non Triggering Examples

-
/*
-    class X {
-
-        let x = 5
-
-    }
-*/
-
-
[
-1,
-2,
-3
-]
-
-
[1, 2].map { $0 }.filter { num in true }
-
-
[1, 2].map { $0 }.filter { true }
-
-
do {
-  print("x is 5")
-}
-
-
do {
-  print("x is 5")
-}
-
-
do {
-  print("x is 5")
-}
-
-
foo(
-    x: 5,
-    y:6
-)
-
-
func foo() {
-  run(5) { x in
-    print(x)
-  }
-}
-
-

Triggering Examples

-
[
-1,
-2,
-3
-↓
-]
-
-
do {
-  print("x is 5")
-↓
-
-}
-
-
do {
-  print("x is 5")
-↓
-
-}
-
-
do {
-  print("x is 5")
-↓
-}
-
-
foo(
-    x: 5,
-    y:6
-↓
-)
-
-
func foo() {
-  run(5) { x in
-    print(x)
-  }
-↓
-}
-
- -
-
- - -
-
- - - - diff --git a/vertical_whitespace_opening_braces.html b/vertical_whitespace_opening_braces.html deleted file mode 100644 index e14a57c0f..000000000 --- a/vertical_whitespace_opening_braces.html +++ /dev/null @@ -1,459 +0,0 @@ - - - - vertical_whitespace_opening_braces Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Vertical Whitespace after Opening Braces

- -

Don’t include vertical whitespace (empty line) after opening braces.

- -
    -
  • Identifier: vertical_whitespace_opening_braces
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: N/A
  • -
-

Non Triggering Examples

-
/*
-    class X {
-
-        let x = 5
-
-    }
-*/
-
-
// [1, 2].map { $0 }.filter { num in true }
-
-
KingfisherManager.shared.retrieveImage(with: url, options: nil, progressBlock: nil) { image, _, _, _ in
-    guard let img = image else { return }
-}
-
-
[
-1,
-2,
-3
-]
-
-
[1, 2].map { $0 }.filter { num in true }
-
-
[1, 2].map { $0 }.foo()
-
-
class X {
-  struct Y {
-    class Z {
-    }
-  }
-}
-
-
foo(
-  x: 5,
-  y:6
-)
-
-
foo({ }) { _ in
-  self.dismiss(animated: false, completion: {
-  })
-}
-
-
func foo() {
-  run(5) { x in
-    print(x)
-  }
-}
-
-
if x == 5 {
-  print("x is 5")
-}
-
-
if x == 5 {
-  print("x is 5")
-}
-
-
struct MyStruct {
-  let x = 5
-}
-
-

Triggering Examples

-
KingfisherManager.shared.retrieveImage(with: url, options: nil, progressBlock: nil) { image, _, _, _ in
-↓
-    guard let img = image else { return }
-}
-
-
[
-↓
-1,
-2,
-3
-]
-
-
class X {
-  struct Y {
-↓
-    class Z {
-    }
-  }
-}
-
-
foo(
-↓
-  x: 5,
-  y:6
-)
-
-
foo({ }) { _ in
-↓
-  self.dismiss(animated: false, completion: {
-  })
-}
-
-
func foo() {
-↓
-  run(5) { x in
-    print(x)
-  }
-}
-
-
if x == 5 {
-↓
-
-  print("x is 5")
-}
-
-
if x == 5 {
-↓
-  print("x is 5")
-}
-
-
struct MyStruct {
-↓
-  let x = 5
-}
-
- -
-
- - -
-
- - - - diff --git a/void_return.html b/void_return.html deleted file mode 100644 index 2c6d89527..000000000 --- a/void_return.html +++ /dev/null @@ -1,387 +0,0 @@ - - - - void_return Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Void Return

- -

Prefer -> Void over -> ().

- -
    -
  • Identifier: void_return
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
let abc: () -> Void = {}
-
-
-
let abc: () -> (VoidVoid) = {}
-
-
-
func foo(completion: () -> Void)
-
-
-
let foo: (ConfigurationTests) -> () throws -> Void
-
-
-
let foo: (ConfigurationTests) ->   () throws -> Void
-
-
-
let foo: (ConfigurationTests) ->() throws -> Void
-
-
-
let foo: (ConfigurationTests) -> () -> Void
-
-
-

Triggering Examples

-
let abc: () -> ↓() = {}
-
-
-
let abc: () -> ↓(Void) = {}
-
-
-
let abc: () -> ↓(   Void ) = {}
-
-
-
func foo(completion: () -> ↓())
-
-
-
func foo(completion: () -> ↓(   ))
-
-
-
func foo(completion: () -> ↓(Void))
-
-
-
let foo: (ConfigurationTests) -> () throws -> ↓()
-
-
- -
-
- - -
-
- - - - diff --git a/weak_delegate.html b/weak_delegate.html deleted file mode 100644 index 3caa00c5a..000000000 --- a/weak_delegate.html +++ /dev/null @@ -1,407 +0,0 @@ - - - - weak_delegate Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Weak Delegate

- -

Delegates should be weak to avoid reference cycles.

- -
    -
  • Identifier: weak_delegate
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
class Foo {
-  weak var delegate: SomeProtocol?
-}
-
-
-
class Foo {
-  weak var someDelegate: SomeDelegateProtocol?
-}
-
-
-
class Foo {
-  weak var delegateScroll: ScrollDelegate?
-}
-
-
-
class Foo {
-  var scrollHandler: ScrollDelegate?
-}
-
-
-
func foo() {
-  var delegate: SomeDelegate
-}
-
-
-
class Foo {
-  var delegateNotified: Bool?
-}
-
-
-
protocol P {
- var delegate: AnyObject? { get set }
-}
-
-
-
class Foo {
- protocol P {
- var delegate: AnyObject? { get set }
-}
-}
-
-
-
class Foo {
- var computedDelegate: ComputedDelegate {
- return bar() 
-} 
-}
-
-
struct Foo {
- @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate 
-}
-
-

Triggering Examples

-
class Foo {
-  ↓var delegate: SomeProtocol?
-}
-
-
-
class Foo {
-  ↓var scrollDelegate: ScrollDelegate?
-}
-
-
- -
-
- - -
-
- - - - diff --git a/xct_specific_matcher.html b/xct_specific_matcher.html deleted file mode 100644 index 7397b80de..000000000 --- a/xct_specific_matcher.html +++ /dev/null @@ -1,489 +0,0 @@ - - - - xct_specific_matcher Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

XCTest Specific Matcher

- -

Prefer specific XCTest matchers over XCTAssertEqual and XCTAssertNotEqual

- -
    -
  • Identifier: xct_specific_matcher
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
XCTAssertFalse(foo)
-
-
XCTAssertTrue(foo)
-
-
XCTAssertNil(foo)
-
-
XCTAssertNotNil(foo)
-
-
XCTAssertEqual(foo, 2)
-
-
XCTAssertNotEqual(foo, "false")
-
-
XCTAssertEqual(foo, [1, 2, 3, true])
-
-
XCTAssertEqual(foo, [1, 2, 3, false])
-
-
XCTAssertEqual(foo, [1, 2, 3, nil])
-
-
XCTAssertEqual(foo, [true, nil, true, nil])
-
-
XCTAssertEqual([1, 2, 3, true], foo)
-
-
XCTAssertEqual([1, 2, 3, false], foo)
-
-
XCTAssertEqual([1, 2, 3, nil], foo)
-
-
XCTAssertEqual([true, nil, true, nil], foo)
-
-
XCTAssertEqual(2, foo)
-
-
XCTAssertNotEqual("false"), foo)
-
-
XCTAssertEqual(false, foo?.bar)
-
-
XCTAssertEqual(true, foo?.bar)
-
-
XCTAssertFalse(  foo  )
-
-
XCTAssertTrue(  foo  )
-
-
XCTAssertNil(  foo  )
-
-
XCTAssertNotNil(  foo  )
-
-
XCTAssertEqual(  foo  , 2  )
-
-
XCTAssertNotEqual(  foo, "false")
-
-
XCTAssertEqual(foo?.bar, false)
-
-
XCTAssertEqual(foo?.bar, true)
-
-
XCTAssertNil(foo?.bar)
-
-
XCTAssertNotNil(foo?.bar)
-
-
XCTAssertEqual(foo?.bar, 2)
-
-
XCTAssertNotEqual(foo?.bar, "false")
-
-
XCTAssertEqual(foo?.bar, toto())
-
-
XCTAssertEqual(foo?.bar, .toto(.zoo))
-
-
XCTAssertEqual(toto(), foo?.bar)
-
-
XCTAssertEqual(.toto(.zoo), foo?.bar)
-
-

Triggering Examples

-
↓XCTAssertEqual(foo, true)
-
-
↓XCTAssertEqual(foo, false)
-
-
↓XCTAssertEqual(foo, nil)
-
-
↓XCTAssertNotEqual(foo, true)
-
-
↓XCTAssertNotEqual(foo, false)
-
-
↓XCTAssertNotEqual(foo, nil)
-
-
↓XCTAssertEqual(true, foo)
-
-
↓XCTAssertEqual(false, foo)
-
-
↓XCTAssertEqual(nil, foo)
-
-
↓XCTAssertNotEqual(true, foo)
-
-
↓XCTAssertNotEqual(false, foo)
-
-
↓XCTAssertNotEqual(nil, foo)
-
-
↓XCTAssertEqual(foo, true, "toto")
-
-
↓XCTAssertEqual(foo, false, "toto")
-
-
↓XCTAssertEqual(foo, nil, "toto")
-
-
↓XCTAssertNotEqual(foo, true, "toto")
-
-
↓XCTAssertNotEqual(foo, false, "toto")
-
-
↓XCTAssertNotEqual(foo, nil, "toto")
-
-
↓XCTAssertEqual(true, foo, "toto")
-
-
↓XCTAssertEqual(false, foo, "toto")
-
-
↓XCTAssertEqual(nil, foo, "toto")
-
-
↓XCTAssertNotEqual(true, foo, "toto")
-
-
↓XCTAssertNotEqual(false, foo, "toto")
-
-
↓XCTAssertNotEqual(nil, foo, "toto")
-
-
↓XCTAssertEqual(foo,true)
-
-
↓XCTAssertEqual( foo , false )
-
-
↓XCTAssertEqual(  foo  ,  nil  )
-
-
↓XCTAssertEqual(true, [1, 2, 3, true].hasNumbers())
-
-
↓XCTAssertEqual([1, 2, 3, true].hasNumbers(), true)
-
-
↓XCTAssertEqual(foo?.bar, nil)
-
-
↓XCTAssertNotEqual(foo?.bar, nil)
-
-
↓XCTAssertEqual(nil, true)
-
-
↓XCTAssertEqual(nil, false)
-
-
↓XCTAssertEqual(true, nil)
-
-
↓XCTAssertEqual(false, nil)
-
-
↓XCTAssertEqual(nil, nil)
-
-
↓XCTAssertEqual(true, true)
-
-
↓XCTAssertEqual(false, false)
-
- -
-
- - -
-
- - - - diff --git a/xctfail_message.html b/xctfail_message.html deleted file mode 100644 index b1ae0991c..000000000 --- a/xctfail_message.html +++ /dev/null @@ -1,361 +0,0 @@ - - - - xctfail_message Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

XCTFail Message

- -

An XCTFail call should include a description of the assertion.

- -
    -
  • Identifier: xctfail_message
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
func testFoo() {
-  XCTFail("bar")
-}
-
-
func testFoo() {
-  XCTFail(bar)
-}
-
-

Triggering Examples

-
func testFoo() {
-  ↓XCTFail()
-}
-
-
func testFoo() {
-  ↓XCTFail("")
-}
-
- -
-
- - -
-
- - - - diff --git a/yoda_condition.html b/yoda_condition.html deleted file mode 100644 index 5e46d5e07..000000000 --- a/yoda_condition.html +++ /dev/null @@ -1,385 +0,0 @@ - - - - yoda_condition Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintFramework 0.47.0 Docs - - (100% documented) -

- -

-

- -
-

- -

- - - View on GitHub - -

- -

- - - Install in Dash - -

-
- - - -
- -
- -
-
- -

Yoda condition rule

- -

The variable should be placed on the left, the constant on the right of a comparison operator.

- -
    -
  • Identifier: yoda_condition
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: warning
  • -
-

Non Triggering Examples

-
if foo == 42 {}
-
-
-
if foo <= 42.42 {}
-
-
-
guard foo >= 42 else { return }
-
-
-
guard foo != "str str" else { return }
-
-
while foo < 10 { }
-
-
-
while foo > 1 { }
-
-
-
while foo + 1 == 2 {}
-
-
if optionalValue?.property ?? 0 == 2 {}
-
-
if foo == nil {}
-
-

Triggering Examples

-
↓if 42 == foo {}
-
-
-
↓if 42.42 >= foo {}
-
-
-
↓guard 42 <= foo else { return }
-
-
-
↓guard "str str" != foo else { return }
-
-
↓while 10 > foo { }
-
-
↓while 1 < foo { }
-
-
↓if nil == foo {}
-
- -
-
- - -
-
- - - -