dart-lang / sdk

The Dart SDK, including the VM, dart2js, core libraries, and more.
https://dart.dev
BSD 3-Clause "New" or "Revised" License
9.94k stars 1.53k forks source link

A simple code that break dart fix #56055

Open Alexqwesa opened 1 week ago

Alexqwesa commented 1 week ago

Steps to reproduce

  1. Create new flutter project (or any exist project)
  2. Paste code below:
  3. Run 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) #7 BulkFixProcessor._fixErrorsInLibrary (package:analysis_server/src/services/correction/bulk_fix_processor.dart:567:7) #8 BulkFixProcessor._computeFixes (package:analysis_server/src/services/correction/bulk_fix_processor.dart:456:11) #9 EditBulkFixes.handle (package:analysis_server/src/handler/legacy/edit_bulk_fixes.dart:50:22) #10 LegacyAnalysisServer.handleRequest.. (package:analysis_server/src/legacy_analysis_server.dart:552:11) #11 OperationPerformanceImpl.runAsync (package:analyzer/src/util/performance/operation_performance.dart:172:14) #12 LegacyAnalysisServer.handleRequest. (package:analysis_server/src/legacy_analysis_server.dart:533:7) #0 BulkFixProcessor._fixSingleError (package:analysis_server/src/services/correction/bulk_fix_processor.dart:743:7) #1 BulkFixProcessor._fixErrorsInLibraryUnit (package:analysis_server/src/services/correction/bulk_fix_processor.dart:612:7) #2 BulkFixProcessor._fixErrorsInLibrary (package:analysis_server/src/services/correction/bulk_fix_processor.dart:567:7) #3 BulkFixProcessor._computeFixes (package:analysis_server/src/services/correction/bulk_fix_processor.dart:456:11) #4 EditBulkFixes.handle (package:analysis_server/src/handler/legacy/edit_bulk_fixes.dart:50:22) #5 LegacyAnalysisServer.handleRequest.. (package:analysis_server/src/legacy_analysis_server.dart:552:11) #6 OperationPerformanceImpl.runAsync (package:analyzer/src/util/performance/operation_performance.dart:172:14) #7 LegacyAnalysisServer.handleRequest. (package:analysis_server/src/legacy_analysis_server.dart:533:7) #0 BulkFixProcessor._fixSingleError (package:analysis_server/src/services/correction/bulk_fix_processor.dart:743:7) #1 BulkFixProcessor._fixErrorsInLibraryUnit (package:analysis_server/src/services/correction/bulk_fix_processor.dart:612:7) #2 BulkFixProcessor._fixErrorsInLibrary (package:analysis_server/src/services/correction/bulk_fix_processor.dart:567:7) #3 BulkFixProcessor._computeFixes (package:analysis_server/src/services/correction/bulk_fix_processor.dart:456:11) #4 EditBulkFixes.handle (package:analysis_server/src/handler/legacy/edit_bulk_fixes.dart:50:22) #5 LegacyAnalysisServer.handleRequest.. (package:analysis_server/src/legacy_analysis_server.dart:552:11) #6 OperationPerformanceImpl.runAsync (package:analyzer/src/util/performance/operation_performance.dart:172:14) #7 LegacyAnalysisServer.handleRequest. (package:analysis_server/src/legacy_analysis_server.dart:533:7) ```

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 ```
dart-github-bot commented 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.

bwilkerson commented 1 week ago

@keertip

Alexqwesa commented 1 week ago

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)