Skip to content

enhanced enums support for annotate_overrides #58585

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
Tracked by #58582
pq opened this issue Dec 6, 2021 · 4 comments · Fixed by dart-archive/linter#3245
Closed
Tracked by #58582

enhanced enums support for annotate_overrides #58585

pq opened this issue Dec 6, 2021 · 4 comments · Fixed by dart-archive/linter#3245
Labels
devexp-linter Issues with the analyzer's support for the linter package legacy-area-analyzer Use area-devexp instead. linter-new-language-feature

Comments

@pq
Copy link
Member

pq commented Dec 6, 2021

No description provided.

@pq
Copy link
Member Author

pq commented Jan 27, 2022

dart-archive/linter#3186 adds tests but with the latest published analyzer the test_ok case is erroring:

package:analyzer/src/dart/analysis/driver.dart 1476:9             AnalysisDriver._computeAnalysisResult.<fn>
package:analyzer/src/dart/analysis/performance_logger.dart 32:15  PerformanceLog.run
package:analyzer/src/dart/analysis/driver.dart 1424:20            AnalysisDriver._computeAnalysisResult
package:analyzer/src/dart/analysis/driver.dart 1050:22            AnalysisDriver.performWork
package:analyzer/src/dart/analysis/driver.dart 2127:24            AnalysisDriverScheduler._run

Null check operator used on a null value
#0      AnnotationResolver._resolve (package:analyzer/src/dart/resolver/annotation_resolver.dart:309:43)
dart-lang/sdk#57147      AnnotationResolver.resolve (package:analyzer/src/dart/resolver/annotation_resolver.dart:34:5)
dart-lang/sdk#57148      ResolverVisitor.visitAnnotation (package:analyzer/src/generated/resolver.dart:1074:25)
dart-lang/sdk#57149      AnnotationImpl.accept (package:analyzer/src/dart/ast/ast.dart:297:50)
dart-lang/sdk#57150      NodeListImpl.accept (package:analyzer/src/dart/ast/ast.dart:7813:20)
dart-lang/sdk#57151      AnnotatedNodeImpl.visitChildren (package:analyzer/src/dart/ast/ast.dart:144:17)
dart-lang/sdk#57152      MethodDeclarationImpl.visitChildren (package:analyzer/src/dart/ast/ast.dart:7181:11)
dart-lang/sdk#57153      ResolverVisitor.visitNode (package:analyzer/src/generated/resolver.dart:1931:10)
dart-lang/sdk#57154      UnifyingAstVisitor.visitMethodDeclaration (package:analyzer/dart/ast/visitor.dart:3561:56)
dart-lang/sdk#57155      ResolverVisitor.visitMethodDeclaration (package:analyzer/src/generated/resolver.dart:1834:13)
dart-lang/sdk#57156     MethodDeclarationImpl.accept (package:analyzer/src/dart/ast/ast.dart:7177:50)
dart-lang/sdk#57157     NodeListImpl.accept (package:analyzer/src/dart/ast/ast.dart:7813:20)
dart-lang/sdk#57158     EnumDeclarationImpl.visitChildren (package:analyzer/src/dart/ast/ast.dart:3415:14)
dart-lang/sdk#57159     ResolverVisitor.visitNode (package:analyzer/src/generated/resolver.dart:1931:10)
dart-lang/sdk#57160     UnifyingAstVisitor.visitEnumDeclaration (package:analyzer/dart/ast/visitor.dart:3419:52)
dart-lang/sdk#57161     ResolverVisitor.visitEnumDeclaration (package:analyzer/src/generated/resolver.dart:1502:13)
dart-lang/sdk#57162     EnumDeclarationImpl.accept (package:analyzer/src/dart/ast/ast.dart:3405:50)
dart-lang/sdk#57163     ResolverVisitor.visitCompilationUnit (package:analyzer/src/generated/resolver.dart:1314:23)
dart-lang/sdk#57164     CompilationUnitImpl.accept (package:analyzer/src/dart/ast/ast.dart:2098:50)
dart-lang/sdk#57165     LibraryAnalyzer._resolveFile (package:analyzer/src/dart/analysis/library_analyzer.dart:779:10)
dart-lang/sdk#57166     LibraryAnalyzer._parseAndResolve.<anonymous closure> (package:analyzer/src/dart/analysis/library_analyzer.dart:597:7)
dart-lang/sdk#57167     _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:574:13)
dart-lang/sdk#57168     LibraryAnalyzer._parseAndResolve (package:analyzer/src/dart/analysis/library_analyzer.dart:596:11)
dart-lang/sdk#57169     LibraryAnalyzer.analyze (package:analyzer/src/dart/analysis/library_analyzer.dart:105:17)
dart-lang/sdk#57170     AnalysisDriver._computeAnalysisResult.<anonymous closure> (package:analyzer/src/dart/analysis/driver.dart:1447:11)
dart-lang/sdk#57171     PerformanceLog.run (package:analyzer/src/dart/analysis/performance_logger.dart:32:15)
dart-lang/sdk#57172     AnalysisDriver._computeAnalysisResult (package:analyzer/src/dart/analysis/driver.dart:1424:20)
dart-lang/sdk#57173     AnalysisDriver.performWork (package:analyzer/src/dart/analysis/driver.dart:1050:22)
dart-lang/sdk#57174     AnalysisDriverScheduler._run (package:analyzer/src/dart/analysis/driver.dart:2127:24)
<asynchronous suspension>

@scheglov, FWIW, this fails for different reasons against tip of tree:

Found but did not expect:
  HintCode.OVERRIDE_ON_NON_OVERRIDING_GETTER [40, 8, The getter doesn't override an inherited getter.]
  HintCode.OVERRIDE_ON_NON_OVERRIDING_METHOD [76, 8, The method doesn't override an inherited method.]

Here's the test source:

  test_ok() async {
    await assertNoDiagnostics(r'''
enum A {
  a,b,c;
  @override
  int get hashCode => 0;
  @override
  String toString() => '';
}
''');
  }

@pq
Copy link
Member Author

pq commented Feb 24, 2022

New test source:

class O {
  int get x => 0;
}
    
enum A implements O {    
  a,b,c;
  @override
  int get x => 0;
  @override
  String toString() => '';
}

Error:

Found but did not expect:
  HintCode.OVERRIDE_ON_NON_OVERRIDING_METHOD [121, 8, The method doesn't override an inherited method.]
  HintCode.OVERRIDE_ON_NON_OVERRIDING_GETTER [92, 1, The getter doesn't override an inherited getter.]

@scheglov: does this seem right to you? (I was expecting the overrides to be valid.)

@pq
Copy link
Member Author

pq commented Feb 24, 2022

RE: HintCode.OVERRIDE_ON_NON_OVERRIDING_METHOD, see also dart-archive/linter#3188.

@scheglov
Copy link
Contributor

https://dart-review.googlesource.com/c/sdk/+/234221

copybara-service bot referenced this issue Feb 24, 2022
Bug: https://github.com/dart-lang/linter/issues/3093
Change-Id: Ie59b366250db069f40236491eb705e291b7bb3fe
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/234221
Reviewed-by: Brian Wilkerson <[email protected]>
Reviewed-by: Phil Quitslund <[email protected]>
Commit-Queue: Konstantin Shcheglov <[email protected]>
@devoncarew devoncarew added devexp-linter Issues with the analyzer's support for the linter package legacy-area-analyzer Use area-devexp instead. labels Nov 19, 2024
@devoncarew devoncarew transferred this issue from dart-archive/linter Nov 19, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
devexp-linter Issues with the analyzer's support for the linter package legacy-area-analyzer Use area-devexp instead. linter-new-language-feature
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants