Flutter-intellij: Switch statement cases not showing syntax error if a case is already present

Created on 24 Mar 2019  Â·  5Comments  Â·  Source: flutter/flutter-intellij

Steps to Reproduce

void test(){
  int a = 10;
  switch(a) {
    case 0: // looks OK
      break;
    case 0: // not OK, it should show syntax error
      break;
  }
}

Version info

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel dev, v1.3.13, on Mac OS X 10.14 18A389, locale en-GB)
[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
[✓] iOS toolchain - develop for iOS devices (Xcode 10.1)
[✓] Android Studio (version 3.3)
[✓] Connected device (1 available)

• No issues found!

Most helpful comment

Perfect. If you add a line to the rules: list,

- no_duplicate_case_values

you should be good to go!

All 5 comments

In Dart, that's not a syntax error... The no_duplicate_case_values lint flags the issue though.

Do you have any lints enabled in your project analysis_options.yaml? (Some details in the analysis options docs.)

@pq I don't have anything like no_duplicate_case_values in my analysis_options_user.yaml file. Please take a look here.

analyzer:
  errors:
    # treat missing required parameters as a warning (not a hint)
    missing_required_param: warning

linter:
  rules:
    # these rules are documented on and in the same order as
    # the Dart Lint rules page to make maintenance easier
    # https://github.com/dart-lang/linter/blob/master/example/all.yaml
    # - always_declare_return_types
    # - always_specify_types
    # - annotate_overrides
    # - avoid_as
    - avoid_empty_else
    - avoid_init_to_null
    - avoid_return_types_on_setters
    - await_only_futures
    - camel_case_types
    - cancel_subscriptions
    - close_sinks
    # - comment_references # we do not presume as to what people want to reference in their dartdocs
    # - constant_identifier_names # https://github.com/dart-lang/linter/issues/204
    - control_flow_in_finally
    - empty_constructor_bodies
    - empty_statements
    - hash_and_equals
    - implementation_imports
    # - invariant_booleans
    # - iterable_contains_unrelated_type
    - library_names
    # - library_prefixes
    # - list_remove_unrelated_type
    # - literal_only_boolean_expressions
    - non_constant_identifier_names
    # - one_member_abstracts
    # - only_throw_errors
    # - overridden_fields
    - package_api_docs
    - package_names
    - package_prefixed_library_names
    - prefer_is_not_empty
    # - prefer_mixin # https://github.com/dart-lang/language/issues/32
    # - public_member_api_docs
    - slash_for_doc_comments
    # - sort_constructors_first
    # - sort_unnamed_constructors_first
    # - super_goes_last # no longer needed w/ Dart 2
    - test_types_in_equals
    - throw_in_finally
    # - type_annotate_public_apis # subset of always_specify_types
    - type_init_formals
    # - unawaited_futures
#    - unnecessary_brace_in_string_interps
    - unnecessary_getters_setters
    - unnecessary_statements
    - unrelated_type_equality_checks
    - valid_regexps

Perfect. If you add a line to the rules: list,

- no_duplicate_case_values

you should be good to go!

Did the trick. Thank you :)

Edit: I wonder why it wasn't included in the file by default, and if I need to find more rules like this, where can I find them?

You're welcome!

Edit: I wonder why it wasn't included in the file by default, and if I need to find more rules like this, where can I find them?

It looks like you derived your rules from Flutter project defaults. That list is curated by the Flutter team and is based off the lints available a while back. My guess is it's just fallen behind.

/cc @a14n

Was this page helpful?
0 / 5 - 0 ratings

Related issues

daniel-v picture daniel-v  Â·  4Comments

koudle picture koudle  Â·  3Comments

DaveShuckerow picture DaveShuckerow  Â·  3Comments

brianegan picture brianegan  Â·  3Comments

YunanChen picture YunanChen  Â·  3Comments