Skip to content
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

A simple code that break dart fix #56055

Open
Alexqwesa opened this issue Jun 20, 2024 · 3 comments
Open

A simple code that break dart fix #56055

Alexqwesa opened this issue Jun 20, 2024 · 3 comments
Labels
analyzer-dartfix Issues with the dartfix package area-analyzer Use area-analyzer for Dart analyzer issues, including the analysis server and code completion. P2 A bug or feature request we're likely to work on triage-automation Issues triaged by automation (see https://github.com/dart-lang/sdk/wiki/Triage-automation) type-bug Incorrect behavior (everything from a crash to more subtle misbehavior)

Comments

@Alexqwesa
Copy link

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
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
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)
<asynchronous suspension>
#7      BulkFixProcessor._fixErrorsInLibrary (package:analysis_server/src/services/correction/bulk_fix_processor.dart:567:7)
<asynchronous suspension>
#8      BulkFixProcessor._computeFixes (package:analysis_server/src/services/correction/bulk_fix_processor.dart:456:11)
<asynchronous suspension>
#9      EditBulkFixes.handle (package:analysis_server/src/handler/legacy/edit_bulk_fixes.dart:50:22)
<asynchronous suspension>
#10     LegacyAnalysisServer.handleRequest.<anonymous closure>.<anonymous closure> (package:analysis_server/src/legacy_analysis_server.dart:552:11)
<asynchronous suspension>
#11     OperationPerformanceImpl.runAsync (package:analyzer/src/util/performance/operation_performance.dart:172:14)
<asynchronous suspension>
#12     LegacyAnalysisServer.handleRequest.<anonymous closure> (package:analysis_server/src/legacy_analysis_server.dart:533:7)
<asynchronous suspension>


#0      BulkFixProcessor._fixSingleError (package:analysis_server/src/services/correction/bulk_fix_processor.dart:743:7)
<asynchronous suspension>
#1      BulkFixProcessor._fixErrorsInLibraryUnit (package:analysis_server/src/services/correction/bulk_fix_processor.dart:612:7)
<asynchronous suspension>
#2      BulkFixProcessor._fixErrorsInLibrary (package:analysis_server/src/services/correction/bulk_fix_processor.dart:567:7)
<asynchronous suspension>
#3      BulkFixProcessor._computeFixes (package:analysis_server/src/services/correction/bulk_fix_processor.dart:456:11)
<asynchronous suspension>
#4      EditBulkFixes.handle (package:analysis_server/src/handler/legacy/edit_bulk_fixes.dart:50:22)
<asynchronous suspension>
#5      LegacyAnalysisServer.handleRequest.<anonymous closure>.<anonymous closure> (package:analysis_server/src/legacy_analysis_server.dart:552:11)
<asynchronous suspension>
#6      OperationPerformanceImpl.runAsync (package:analyzer/src/util/performance/operation_performance.dart:172:14)
<asynchronous suspension>
#7      LegacyAnalysisServer.handleRequest.<anonymous closure> (package:analysis_server/src/legacy_analysis_server.dart:533:7)
<asynchronous suspension>


#0      BulkFixProcessor._fixSingleError (package:analysis_server/src/services/correction/bulk_fix_processor.dart:743:7)
<asynchronous suspension>
#1      BulkFixProcessor._fixErrorsInLibraryUnit (package:analysis_server/src/services/correction/bulk_fix_processor.dart:612:7)
<asynchronous suspension>
#2      BulkFixProcessor._fixErrorsInLibrary (package:analysis_server/src/services/correction/bulk_fix_processor.dart:567:7)
<asynchronous suspension>
#3      BulkFixProcessor._computeFixes (package:analysis_server/src/services/correction/bulk_fix_processor.dart:456:11)
<asynchronous suspension>
#4      EditBulkFixes.handle (package:analysis_server/src/handler/legacy/edit_bulk_fixes.dart:50:22)
<asynchronous suspension>
#5      LegacyAnalysisServer.handleRequest.<anonymous closure>.<anonymous closure> (package:analysis_server/src/legacy_analysis_server.dart:552:11)
<asynchronous suspension>
#6      OperationPerformanceImpl.runAsync (package:analyzer/src/util/performance/operation_performance.dart:172:14)
<asynchronous suspension>
#7      LegacyAnalysisServer.handleRequest.<anonymous closure> (package:analysis_server/src/legacy_analysis_server.dart:533:7)
<asynchronous suspension>


dart info

dart info
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
Copy link
Collaborator

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.

@dart-github-bot dart-github-bot added area-analyzer Use area-analyzer for Dart analyzer issues, including the analysis server and code completion. triage-automation Issues triaged by automation (see https://github.com/dart-lang/sdk/wiki/Triage-automation) type-bug Incorrect behavior (everything from a crash to more subtle misbehavior) labels Jun 20, 2024
@bwilkerson
Copy link
Member

@keertip

@Alexqwesa
Copy link
Author

Alexqwesa commented Jun 21, 2024

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)

@scheglov scheglov added P2 A bug or feature request we're likely to work on analyzer-dartfix Issues with the dartfix package labels Jun 21, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
analyzer-dartfix Issues with the dartfix package area-analyzer Use area-analyzer for Dart analyzer issues, including the analysis server and code completion. P2 A bug or feature request we're likely to work on triage-automation Issues triaged by automation (see https://github.com/dart-lang/sdk/wiki/Triage-automation) type-bug Incorrect behavior (everything from a crash to more subtle misbehavior)
Projects
None yet
Development

No branches or pull requests

4 participants