Open Alexqwesa opened 1 week ago
Summary: The dart fix -n
command crashes when run on a project containing a string with an unnecessary escape character. The crash occurs due to an error in the RemoveUnnecessaryStringEscape
fix, which attempts to create both a Dart file edit and a generic file edit for the same file, leading to a state conflict.
@keertip
i also got nasty bug, possible related: dart analyzer server crash every few second, but after i delete .dartServer directory, I can't reproduce it anymore...
1718517096267:Ex:Analysis failed:: /home/alex/AndroidStudioProjects/VSP_QA_BD/vsp_qa_bd/lib/global_helpers.dart context:: exception_20240616_125136_251
Bad state:: Expected existing element:: root::::package::flutter_gen/gen_l10n/app_localizations.dart::::@unit::::package::flutter_gen/gen_l10n/app_localizations.dart::::@class::::AppLocalizations::::@def::::1
#0 LinkedElementFactory.elementOfReference (package::analyzer/src/summary2/linked_element_factory.dart::231::7)
#1 ResolutionReader._readRawElement (package::analyzer/src/summary2/bundle_reader.dart::2395::28)
#2 ResolutionReader.readElement (package::analyzer/src/summary2/bundle_reader.dart::1953::19)
#3 ResolutionReader.readType (package::analyzer/src/summary2/bundle_reader.dart::2061::21)
#4 ResolutionReader.readRequiredType (package::analyzer/src/summary2/bundle_reader.dart::2029::12)
#5 ResolutionReader._readFunctionType (package::analyzer/src/summary2/bundle_reader.dart::2282::22)
#6 ResolutionReader.readType (package::analyzer/src/summary2/bundle_reader.dart::2048::18)
#7 ResolutionReader.readRequiredType (package::analyzer/src/summary2/bundle_reader.dart::2029::12)
#8 TopLevelVariableElementLinkedData._read (package::analyzer/src/summary2/bundle_reader.dart::2487::27)
#9 ElementLinkedData.read (package::analyzer/src/summary2/bundle_reader.dart::254::5)
#10 PropertyInducingElementImpl.type (package::analyzer/src/dart/element/element.dart::6386::17)
#11 PropertyAccessorElementImpl_ImplicitGetter.returnType (package::analyzer/src/dart/element/element.dart::6224::39)
#12 MethodInvocationResolver._resolveReceiverNull (package::analyzer/src/dart/resolver/method_invocation_resolver.dart::569::69)
#13 MethodInvocationResolver.resolve (package::analyzer/src/dart/resolver/method_invocation_resolver.dart::92::7)
#14 ElementResolver.visitMethodInvocation (package::analyzer/src/generated/element_resolver.dart::276::31)
#15 ResolverVisitor.visitMethodInvocation (package::analyzer/src/generated/resolver.dart::2938::21)
#16 MethodInvocationImpl.resolveExpression (package::analyzer/src/dart/ast/ast.dart::12343::14)
#17 ResolverVisitor.dispatchExpression (package::analyzer/src/generated/resolver.dart::776::16)
#18 TypeAnalyzer.analyzeExpression (package::_fe_analyzer_shared/src/type_inference/type_analyzer.dart::531::9)
#19 BinaryExpressionResolver._resolveIfNull (package::analyzer/src/dart/resolver/binary_expression_resolver.dart::188::15)
#20 BinaryExpressionResolver.resolve (package::analyzer/src/dart/resolver/binary_expression_resolver.dart::64::7)
#21 ResolverVisitor.visitBinaryExpression (package::analyzer/src/generated/resolver.dart::1912::31)
#22 BinaryExpressionImpl.resolveExpression (package::analyzer/src/dart/ast/ast.dart::1824::14)
#23 ResolverVisitor.dispatchExpression (package::analyzer/src/generated/resolver.dart::776::16)
#24 TypeAnalyzer.analyzeExpression (package::_fe_analyzer_shared/src/type_inference/type_analyzer.dart::531::9)
#25 ResolverVisitor.visitExpressionFunctionBody (package::analyzer/src/generated/resolver.dart::2390::7)
#26 ExpressionFunctionBodyImpl.resolve (package::analyzer/src/dart/ast/ast.dart::6202::16)
#27 ResolverVisitor.visitMethodDeclaration (package::analyzer/src/generated/resolver.dart::2896::17)
#28 MethodDeclarationImpl.accept (package::analyzer/src/dart/ast/ast.dart::12141::50)
#29 NodeListImpl.accept (package::analyzer/src/dart/ast/ast.dart::13022::20)
#30 ExtensionDeclarationImpl.visitChildren (package::analyzer/src/dart/ast/ast.dart::6593::14)
#31 ResolverVisitor.visitExtensionDeclaration (package::analyzer/src/generated/resolver.dart::2424::12)
#32 ExtensionDeclarationImpl.accept (package::analyzer/src/dart/ast/ast.dart::6586::15)
#33 ResolverVisitor.visitCompilationUnit (package::analyzer/src/generated/resolver.dart::2049::23)
#34 CompilationUnitImpl.accept (package::analyzer/src/dart/ast/ast.dart::3655::50)
#35 LibraryAnalyzer._resolveFile (package::analyzer/src/dart/analysis/library_analyzer.dart::825::10)
#36 LibraryAnalyzer._parseAndResolve.<anonymous closure> (package::analyzer/src/dart/analysis/library_analyzer.dart::603::7)
#37 _LinkedHashMapMixin.forEach (dart::collection-patch/compact_hash.dart::633::13)
#38 LibraryAnalyzer._parseAndResolve (package::analyzer/src/dart/analysis/library_analyzer.dart::602::11)
#39 LibraryAnalyzer.analyze (package::analyzer/src/dart/analysis/library_analyzer.dart::98::17)
#40 AnalysisDriver._computeAnalysisResult.<anonymous closure> (package::analyzer/src/dart/analysis/driver.dart::1391::11)
<asynchronous suspension>
#41 PerformanceLog.runAsync (package::analyzer/src/dart/analysis/performance_logger.dart::50::14)
<asynchronous suspension>
#42 AnalysisDriver.performWork (package::analyzer/src/dart/analysis/driver.dart::1181::26)
<asynchronous suspension>
#43 AnalysisDriverScheduler._run (package::analyzer/src/dart/analysis/driver.dart::2239::7)
<asynchronous suspension>
#0 new SilentException.wrapInMessage (package::analyzer/exception/exception.dart::105::45)
#1 AnalysisServer.logExceptionResult (package::analysis_server/src/analysis_server.dart::683::23)
#2 _rootRunUnary (dart::async/zone.dart::1415::13)
#3 _CustomZone.runUnary (dart::async/zone.dart::1308::19)
#4 _CustomZone.runUnaryGuarded (dart::async/zone.dart::1217::7)
#5 _BufferingStreamSubscription._sendData (dart::async/stream_impl.dart::339::11)
#6 _DelayedData.perform (dart::async/stream_impl.dart::515::14)
#7 _PendingEvents.handleNext (dart::async/stream_impl.dart::620::11)
#8 _PendingEvents.schedule.<anonymous closure> (dart::async/stream_impl.dart::591::7)
#9 _rootRun (dart::async/zone.dart::1391::47)
#10 _CustomZone.run (dart::async/zone.dart::1301::19)
#11 _CustomZone.runGuarded (dart::async/zone.dart::1209::7)
#12 _CustomZone.bindCallbackGuarded.<anonymous closure> (dart::async/zone.dart::1249::23)
#13 _rootRun (dart::async/zone.dart::1399::13)
#14 _CustomZone.run (dart::async/zone.dart::1301::19)
#15 _CustomZone.runGuarded (dart::async/zone.dart::1209::7)
#16 _CustomZone.bindCallbackGuarded.<anonymous closure> (dart::async/zone.dart::1249::23)
#17 _microtaskLoop (dart::async/schedule_microtask.dart::40::21)
#18 _startMicrotaskLoop (dart::async/schedule_microtask.dart::49::5)
#19 _runPendingImmediateCallback (dart::isolate-patch/isolate_patch.dart::118::13)
#20 _RawReceivePort._handleMessage (dart::isolate-patch/isolate_patch.dart::185::5)
Steps to reproduce
dart fix -n
Expected results
dart fix -n Shouldn't crash
Actual results
dart fix -n Crash
Code sample
Code sample
```dart abstract class AppLocalizations { AppLocalizations(String locale); String get aboutApp; } /// The translations for English (`en`). class AppLocalizationsEn extends AppLocalizations { AppLocalizationsEn([String locale = 'en']) : super(locale); @override String get aboutApp => 'Hello \"World\", to break dart fix.'; } ```Screenshots or Video
Screenshots / Video demonstration
[Upload media here]Logs
Logs of dart fix -n
```console dart fix -n Computing fixes in bug_dart_fix (dry run)... Error from the analysis server: Exception while getting bulk fixes: Exception generating fix for unnecessary_string_escapes in /home/alex/AndroidStudioProjects/bug_dart_fix/lib/main.dart Bad state: Can't create both a dart file edit and a generic file edit for the same file #0 ChangeBuilderImpl.addGenericFileEdit (package:analyzer_plugin/src/utilities/change_builder/change_builder_core.dart:166:7) #1 RemoveUnnecessaryStringEscape.compute (package:analysis_server/src/services/correction/dart/remove_unnecessary_string_escape.dart:32:19) #2 BulkFixProcessor._applyProducer (package:analysis_server/src/services/correction/bulk_fix_processor.dart:309:22) #3 BulkFixProcessor._generateFix (package:analysis_server/src/services/correction/bulk_fix_processor.dart:824:11) #4 BulkFixProcessor._bulkApply (package:analysis_server/src/services/correction/bulk_fix_processor.dart:325:15) #5 BulkFixProcessor._fixSingleError (package:analysis_server/src/services/correction/bulk_fix_processor.dart:708:15) #6 BulkFixProcessor._fixErrorsInLibraryUnit (package:analysis_server/src/services/correction/bulk_fix_processor.dart:612:13)dart info
dart info
```console dart info If providing this information as part of reporting a bug, please review the information below to ensure it only contains things you're comfortable posting publicly. #### General info - Dart 3.3.4 (stable) (Tue Apr 16 19:56:12 2024 +0000) on "linux_x64" - on linux / Linux 5.14.21-150500.55.65-default #1 SMP PREEMPT_DYNAMIC Thu May 23 04:57:11 UTC 2024 (a46829d) - locale is en_US.UTF-8 ```