Skip to content

[analyzer] Bad state in _assertLegacyType with a String type #51185

Open
@asashour

Description

@asashour

On trying to add some null safety expectations to a test (as part of #51144), there is a state error:

Bad state: Expected all legacy types, but got String (InterfaceTypeImpl)

I wonder what _assertLegacyType should do when encountered with a String type, because changing the last condition to be

    var nullabilitySuffix = type.nullabilitySuffix;
    if (nullabilitySuffix == NullabilitySuffix.star ||
        nullabilitySuffix == NullabilitySuffix.none) {
      return;
    }

would fail LegacyTypeAsserterTest

Stacktrace
Bad state: Expected all legacy types, but got String (InterfaceTypeImpl)
#0      LegacyTypeAsserter._assertLegacyType (package:analyzer/src/dart/resolver/legacy_type_asserter.dart:163:5)
#1      LegacyTypeAsserter.visitExpression (package:analyzer/src/dart/resolver/legacy_type_asserter.dart:75:5)
#2      GeneralizingAstVisitor.visitLiteral (package:analyzer/dart/ast/visitor.dart:478:36)
#3      GeneralizingAstVisitor.visitStringLiteral (package:analyzer/dart/ast/visitor.dart:669:48)
#4      GeneralizingAstVisitor.visitSingleStringLiteral (package:analyzer/dart/ast/visitor.dart:658:7)
#5      GeneralizingAstVisitor.visitSimpleStringLiteral (package:analyzer/dart/ast/visitor.dart:655:7)
#6      SimpleStringLiteralImpl.accept (package:analyzer/src/dart/ast/ast.dart:12073:50)
#7      PartOfDirectiveImpl.visitChildren (package:analyzer/src/dart/ast/ast.dart:10313:11)
#8      GeneralizingAstVisitor.visitNode (package:analyzer/dart/ast/visitor.dart:526:10)
#9      GeneralizingAstVisitor.visitAnnotatedNode (package:analyzer/dart/ast/visitor.dart:135:48)
#10     GeneralizingAstVisitor.visitDirective (package:analyzer/dart/ast/visitor.dart:271:40)
#11     GeneralizingAstVisitor.visitPartOfDirective (package:analyzer/dart/ast/visitor.dart:560:52)
#12     PartOfDirectiveImpl.accept (package:analyzer/src/dart/ast/ast.dart:10307:50)
#13     NodeListImpl.accept (package:analyzer/src/dart/ast/ast.dart:9589:20)
#14     CompilationUnitImpl.visitChildren (package:analyzer/src/dart/ast/ast.dart:2572:19)
#15     GeneralizingAstVisitor.visitNode (package:analyzer/dart/ast/visitor.dart:526:10)
#16     GeneralizingAstVisitor.visitCompilationUnit (package:analyzer/dart/ast/visitor.dart:217:52)
#17     LegacyTypeAsserter.visitCompilationUnit (package:analyzer/src/dart/resolver/legacy_type_asserter.dart:63:13)
#18     LegacyTypeAsserter.assertLegacyTypes (package:analyzer/src/dart/resolver/legacy_type_asserter.dart:169:26)
#19     Iterable.every (dart:core/iterable.dart:403:16)
#20     LibraryAnalyzer._computeDiagnostics (package:analyzer/src/dart/analysis/library_analyzer.dart:304:25)
#21     LibraryAnalyzer.analyze (package:analyzer/src/dart/analysis/library_analyzer.dart:92:5)
#22     AnalysisDriver._computeAnalysisResult.<anonymous closure> (package:analyzer/src/dart/analysis/driver.dart:1347:11)
<asynchronous suspension>
#23     PerformanceLog.runAsync (package:analyzer/src/dart/analysis/performance_logger.dart:50:14)
<asynchronous suspension>
#24     AnalysisDriver.performWork (package:analyzer/src/dart/analysis/driver.dart:1055:24)
<asynchronous suspension>
#25     AnalysisDriverScheduler._run (package:analyzer/src/dart/analysis/driver.dart:2139:7)
<asynchronous suspension>

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3A lower priority bug or feature requestarea-dart-modelFor issues related to conformance to the language spec in the parser, compilers or the CLI analyzer.type-code-healthInternal changes to our tools and workflows to make them cleaner, simpler, or more maintainable

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions