Rename symbol (shortcut key F2) in my flutter projects is really slow. Not sure if flutter is relevant of if this is a general dart problem. I think it is a dart problem so I'm posting here. When I have syntax/build errors I find it common that rename never finishes, the "infinite progress" in VS Code just keeps spinning what seems to be forever.
If I create a brand new (flutter) project: flutter create slow_refactor and then open the project, let everything initialize, pub get packages and let that complete as well. After this I go to main.dart, rename title to myTitle. This takes ... 10? 15? seconds to complete. If I rename it to myTitle2 it takes a split second.
Can I mitigate this issue somehow? It's really tedious to rename symbols and most often I just hit replace all feature instead because I'm convinced that the rename won't work. Rename is such a common (simple) refactor that I expect it to work at all times.
I can't find any known issues regarding this but I know that other members in my team have the same issue.
I'm running Windows 10, stable VS Code, flutter 1.13 and 1.14 (beta and master), dart 2.8.0-dev.3.0. My computer specs are category "great" so this is not due to slow cpu, disk or memory issues.
This has been happening for me for some time. Once in a while the refactor goes off into lala land. You can actually do another refactor while it is thinking and it should do the second refactor only. That's if you know it's hung up and not because it's a complex refactor in a huge project.
I'm struggling to repro this. The first refactor is a little slower (but only maybe 1-2 seconds) and from the logs looks like it was because the analyzer will still busy doing startup stuff (pre-loading code completions).
Is anyone able to capture a log of it being really slow?
Note: The log my contain contents from your files, so please do this on a trivial project.
Sorry for the (very) late response here. I find it to work better now but not great. I can repro this easily but the delay is more like 10 seconds now and it seems to work in most cases now. I haven't been able to repro that it fails completely. So I reproed like this:
I opened my project and let VS Code "initialize" for around 30 seconds. Then I opened a file (AppButton) and I started capture logs (anayzer only) and then I pressed F2 on the class name and renamed it to "MyButton". It spans over 15 dart files. That rename took 10 seconds. The log is too big to post here so I've created a gist.
Thanks for the log! The relevant parts are here:
[15:55:48] [Analyzer] [Info] ==> {"id":"34","method":"edit.getRefactoring","params":{"file":"C:\\git\\my-project\\lib\\widgets\\app_button\\app_button.dart","kind":"RENAME","length":1,"offset":143,"options":{"newName":"MyButton"},"validateOnly":false},"clientRequestTime":1581432948177}
[15:55:53] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1805,"uri":"package:file/record_replay.dart","items":[{"label":"InvocationException","declaringLibraryUri":"package:file/src/backends/record_replay/errors.dart","element":{"kind":"CLASS","name":"InvocationException","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\file-5.1.0\\lib\\src\\backends\\record_replay\\errors.dart","offset":1663,"length":0,"startLine":49,"startColumn":7},"flags":0},"relevanceTags":["package:file/src/backends/record_replay/errors.dart::InvocationException","InvocationException"]},{"label":"InvocationException","declaringLibraryUri":"package:file/src/backends/record_replay/errors.dart","element":{"kind":"CONSTRUCTOR","name":"","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\file-5.1.0\\lib\\src\\backends\\record_replay\\errors.dart","offset":4294967295,"length":0,"startLine":0,"startColumn":0},"flags":0,"parameters":"()","returnType":"InvocationException"},"parameterNames":[],"parameterTypes":[],"relevanceTags":["package:file/src/backends/record_replay/errors.dart::InvocationException",""],"requiredParameterCount":0},{"label":"InvocationEvent","declaringLibraryUri":"package:file/src/backends/record_replay/events.dart","element":{"kind":"CLASS","name":"InvocationEvent","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\file-5.1.0\\lib\\src\\backends\\record_replay\\events.dart","offset":485,"length":0,"startLine":15,"startColumn":16},"flags":1},"relevanceTags":["package:file/src/backends/record_replay/events.dart::InvocationEvent","InvocationEvent"]},{"label":"object","declaringLibraryUri":"package:file/src/backends/record_replay/events.dart","element":{"kind":"GETTER","name":"object","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\file-5.1.0\\lib\\src\\backends\\record_replay\\events.dart","offset":595,"length":0,"startLine":17,"startColumn":14},"f…
[15:55:53] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1811,"uri":"package:file/chroot.dart","items":[{"label":"ChrootFileSystem","declaringLibraryUri":"package:file/src/backends/chroot.dart","element":{"kind":"CLASS","name":"ChrootFileSystem","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\file-5.1.0\\lib\\src\\backends\\chroot\\chroot_file_system.dart","offset":1573,"length":0,"startLine":37,"startColumn":7},"flags":0},"relevanceTags":["package:file/src/backends/chroot.dart::ChrootFileSystem","ChrootFileSystem"]},{"label":"ChrootFileSystem","declaringLibraryUri":"package:file/src/backends/chroot.dart","element":{"kind":"CONSTRUCTOR","name":"","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\file-5.1.0\\lib\\src\\backends\\chroot\\chroot_file_system.dart","offset":1777,"length":0,"startLine":41,"startColumn":3},"flags":0,"parameters":"(this.delegate, this.root)","returnType":"ChrootFileSystem"},"defaultArgumentListString":"delegate, root","defaultArgumentListTextRanges":[0,8,10,4],"parameterNames":["delegate","root"],"parameterTypes":["",""],"relevanceTags":["package:file/src/backends/chroot.dart::ChrootFileSystem",""],"requiredParameterCount":2},{"label":"delegate","declaringLibraryUri":"package:file/src/backends/chroot.dart","element":{"kind":"FIELD","name":"delegate","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\file-5.1.0\\lib\\src\\backends\\chroot\\chroot_file_system.dart","offset":2030,"length":0,"startLine":49,"startColumn":20},"flags":4,"returnType":"FileSystem"}},{"label":"root","declaringLibraryUri":"package:file/src/backends/chroot.dart","element":{"kind":"FIELD","name":"root","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\file-5.1.0\\lib\\src\\backends\\chroot\\chroot_file_system.dart","offset":2132,"length":0,"startLine":52,"startColumn":16},"flags":4,"returnType":"String"}},{"label":"directory","declari…
[15:55:54] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1818,"uri":"package:vm_service/vm_service.dart","items":[{"label":"StepOption","declaringLibraryUri":"package:vm_service/src/vm_service.dart","element":{"kind":"CLASS","name":"StepOption","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\vm_service-2.3.1\\lib\\src\\vm_service.dart","offset":76983,"length":0,"startLine":2249,"startColumn":7},"flags":0},"relevanceTags":["package:vm_service/src/vm_service.dart::StepOption","StepOption"]},{"label":"kInto","declaringLibraryUri":"package:vm_service/src/vm_service.dart","element":{"kind":"FIELD","name":"kInto","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\vm_service-2.3.1\\lib\\src\\vm_service.dart","offset":77037,"length":0,"startLine":2252,"startColumn":23},"flags":2,"returnType":"String"},"relevanceTags":["dart:core::String","kInto"]},{"label":"kOver","declaringLibraryUri":"package:vm_service/src/vm_service.dart","element":{"kind":"FIELD","name":"kOver","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\vm_service-2.3.1\\lib\\src\\vm_service.dart","offset":77075,"length":0,"startLine":2253,"startColumn":23},"flags":2,"returnType":"String"},"relevanceTags":["dart:core::String","kOver"]},{"label":"kOverAsyncSuspension","declaringLibraryUri":"package:vm_service/src/vm_service.dart","element":{"kind":"FIELD","name":"kOverAsyncSuspension","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\vm_service-2.3.1\\lib\\src\\vm_service.dart","offset":77113,"length":0,"startLine":2254,"startColumn":23},"flags":2,"returnType":"String"},"relevanceTags":["dart:core::String","kOverAsyncSuspension"]},{"label":"kOut","declaringLibraryUri":"package:vm_service/src/vm_service.dart","element":{"kind":"FIELD","name":"kOut","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\vm_service-2.3.1\\lib\\src\\vm_service.dart","offset"…
[15:55:54] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1823,"uri":"package:source_maps/builder.dart","items":[{"label":"Entry","declaringLibraryUri":"package:source_maps/builder.dart","element":{"kind":"CLASS","name":"Entry","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\builder.dart","offset":2208,"length":0,"startLine":62,"startColumn":7},"flags":0},"relevanceTags":["package:source_maps/builder.dart::Entry","Entry"]},{"label":"source","declaringLibraryUri":"package:source_maps/builder.dart","element":{"kind":"FIELD","name":"source","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\builder.dart","offset":2335,"length":0,"startLine":64,"startColumn":24},"flags":4,"returnType":"SourceLocation"}},{"label":"target","declaringLibraryUri":"package:source_maps/builder.dart","element":{"kind":"FIELD","name":"target","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\builder.dart","offset":2436,"length":0,"startLine":67,"startColumn":24},"flags":4,"returnType":"SourceLocation"}},{"label":"identifierName","declaringLibraryUri":"package:source_maps/builder.dart","element":{"kind":"FIELD","name":"identifierName","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\builder.dart","offset":2536,"length":0,"startLine":70,"startColumn":16},"flags":4,"returnType":"String"}},{"label":"Entry","declaringLibraryUri":"package:source_maps/builder.dart","element":{"kind":"CONSTRUCTOR","name":"","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\builder.dart","offset":2613,"length":0,"startLine":73,"startColumn":3},"flags":0,"parameters":"(this.source, this.target, this.identifierName)","returnType":"Entry"},"defaultArgumentListString":"source, target, identifierName","defaultArgumentListTextRanges":[0,6,…
[15:55:54] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1824,"uri":"package:source_maps/parser.dart","items":[{"label":"TargetEntry","declaringLibraryUri":"package:source_maps/parser.dart","element":{"kind":"CLASS","name":"TargetEntry","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\parser.dart","offset":21718,"length":0,"startLine":610,"startColumn":7},"flags":0},"relevanceTags":["package:source_maps/parser.dart::TargetEntry","TargetEntry"]},{"label":"column","declaringLibraryUri":"package:source_maps/parser.dart","element":{"kind":"FIELD","name":"column","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\parser.dart","offset":21744,"length":0,"startLine":611,"startColumn":13},"flags":4,"returnType":"int"}},{"label":"sourceUrlId","declaringLibraryUri":"package:source_maps/parser.dart","element":{"kind":"FIELD","name":"sourceUrlId","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\parser.dart","offset":21764,"length":0,"startLine":612,"startColumn":13},"flags":4,"returnType":"int"}},{"label":"sourceLine","declaringLibraryUri":"package:source_maps/parser.dart","element":{"kind":"FIELD","name":"sourceLine","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\parser.dart","offset":21789,"length":0,"startLine":613,"startColumn":13},"flags":4,"returnType":"int"}},{"label":"sourceColumn","declaringLibraryUri":"package:source_maps/parser.dart","element":{"kind":"FIELD","name":"sourceColumn","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\parser.dart","offset":21813,"length":0,"startLine":614,"startColumn":13},"flags":4,"returnType":"int"}},{"label":"sourceNameId","declaringLibraryUri":"package:source_maps/parser.dart","element":{"kind":"FIELD","name":"sourceNameId","location":{"file":"C…
[15:55:54] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1825,"uri":"package:coverage/coverage.dart","items":[{"label":"StdoutLog","declaringLibraryUri":"package:coverage/src/collect.dart","element":{"kind":"CLASS","name":"StdoutLog","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\coverage-0.13.4\\lib\\src\\collect.dart","offset":7915,"length":0,"startLine":225,"startColumn":7},"flags":0},"relevanceTags":["package:coverage/src/collect.dart::StdoutLog","StdoutLog"]},{"label":"warning","declaringLibraryUri":"package:coverage/src/collect.dart","element":{"kind":"METHOD","name":"warning","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\coverage-0.13.4\\lib\\src\\collect.dart","offset":7958,"length":0,"startLine":227,"startColumn":8},"flags":0,"parameters":"(String message)","returnType":"void"},"defaultArgumentListString":"message","defaultArgumentListTextRanges":[0,7],"parameterNames":["message"],"parameterTypes":["String"],"requiredParameterCount":1},{"label":"severe","declaringLibraryUri":"package:coverage/src/collect.dart","element":{"kind":"METHOD","name":"severe","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\coverage-0.13.4\\lib\\src\\collect.dart","offset":8020,"length":0,"startLine":229,"startColumn":8},"flags":0,"parameters":"(String message)","returnType":"void"},"defaultArgumentListString":"message","defaultArgumentListTextRanges":[0,7],"parameterNames":["message"],"parameterTypes":["String"],"requiredParameterCount":1},{"label":"StdoutLog","declaringLibraryUri":"package:coverage/src/collect.dart","element":{"kind":"CONSTRUCTOR","name":"","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\coverage-0.13.4\\lib\\src\\collect.dart","offset":4294967295,"length":0,"startLine":0,"startColumn":0},"flags":0,"parameters":"()","returnType":"StdoutLog"},"parameterNames":[],"parameterTypes":[],"relevanceTags":["package:coverage/s…
[15:55:54] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1832,"uri":"package:collection/wrappers.dart","items":[{"label":"DelegatingSet","declaringLibraryUri":"package:collection/src/wrappers.dart","element":{"kind":"CLASS","name":"DelegatingSet","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\collection-1.14.11\\lib\\src\\wrappers.dart","offset":7485,"length":0,"startLine":253,"startColumn":7},"flags":0},"relevanceTags":["package:collection/src/wrappers.dart::DelegatingSet","DelegatingSet"]},{"label":"DelegatingSet","declaringLibraryUri":"package:collection/src/wrappers.dart","element":{"kind":"CONSTRUCTOR","name":"","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\collection-1.14.11\\lib\\src\\wrappers.dart","offset":7560,"length":0,"startLine":254,"startColumn":9},"flags":0,"parameters":"(Set<E> base)","returnType":"DelegatingSet"},"defaultArgumentListString":"base","defaultArgumentListTextRanges":[0,4],"parameterNames":["base"],"parameterTypes":["Set<E>"],"relevanceTags":["package:collection/src/wrappers.dart::DelegatingSet",""],"requiredParameterCount":1},{"label":"typed","declaringLibraryUri":"package:collection/src/wrappers.dart","element":{"kind":"METHOD","name":"typed","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\collection-1.14.11\\lib\\src\\wrappers.dart","offset":8229,"length":0,"startLine":268,"startColumn":17},"flags":32,"parameters":"(Set base)","returnType":"Set<E>","typeParameters":"<E>"},"defaultArgumentListString":"base","defaultArgumentListTextRanges":[0,4],"parameterNames":["base"],"parameterTypes":["Set"],"requiredParameterCount":1},{"label":"add","declaringLibraryUri":"package:collection/src/wrappers.dart","element":{"kind":"METHOD","name":"add","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\collection-1.14.11\\lib\\src\\wrappers.dart","offset":8308,"length":0,"startLine":272,"startColumn":8},"fla…
[15:55:54] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1833,"uri":"package:collection/priority_queue.dart","items":[{"label":"HeapPriorityQueue","declaringLibraryUri":"package:collection/src/priority_queue.dart","element":{"kind":"CLASS","name":"HeapPriorityQueue","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\collection-1.14.11\\lib\\src\\priority_queue.dart","offset":4201,"length":0,"startLine":119,"startColumn":7},"flags":0},"relevanceTags":["package:collection/src/priority_queue.dart::HeapPriorityQueue","HeapPriorityQueue"]},{"label":"comparison","declaringLibraryUri":"package:collection/src/priority_queue.dart","element":{"kind":"FIELD","name":"comparison","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\collection-1.14.11\\lib\\src\\priority_queue.dart","offset":4632,"length":0,"startLine":128,"startColumn":23},"flags":4,"returnType":"Comparator<E>"}},{"label":"HeapPriorityQueue","declaringLibraryUri":"package:collection/src/priority_queue.dart","element":{"kind":"CONSTRUCTOR","name":"","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\collection-1.14.11\\lib\\src\\priority_queue.dart","offset":5280,"length":0,"startLine":147,"startColumn":3},"flags":0,"parameters":"([int comparison(E e1, E e2)])","returnType":"HeapPriorityQueue"},"parameterNames":["comparison"],"parameterTypes":[""],"relevanceTags":["package:collection/src/priority_queue.dart::HeapPriorityQueue",""],"requiredParameterCount":0},{"label":"add","declaringLibraryUri":"package:collection/src/priority_queue.dart","element":{"kind":"METHOD","name":"add","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\collection-1.14.11\\lib\\src\\priority_queue.dart","offset":5392,"length":0,"startLine":150,"startColumn":8},"flags":0,"parameters":"(E element)","returnType":"void"},"defaultArgumentListString":"element","defaultArgumentListTextRanges":[0,7],"parameterNames":…
[15:55:54] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1834,"uri":"package:collection/iterable_zip.dart","items":[{"label":"IterableZip","declaringLibraryUri":"package:collection/src/iterable_zip.dart","element":{"kind":"CLASS","name":"IterableZip","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\collection-1.14.11\\lib\\src\\iterable_zip.dart","offset":703,"length":0,"startLine":16,"startColumn":7},"flags":0},"relevanceTags":["package:collection/src/iterable_zip.dart::IterableZip","IterableZip"]},{"label":"IterableZip","declaringLibraryUri":"package:collection/src/iterable_zip.dart","element":{"kind":"CONSTRUCTOR","name":"","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\collection-1.14.11\\lib\\src\\iterable_zip.dart","offset":795,"length":0,"startLine":19,"startColumn":3},"flags":0,"parameters":"(Iterable<Iterable<T>> iterables)","returnType":"IterableZip"},"defaultArgumentListString":"iterables","defaultArgumentListTextRanges":[0,9],"parameterNames":["iterables"],"parameterTypes":["Iterable<Iterable<T>>"],"relevanceTags":["package:collection/src/iterable_zip.dart::IterableZip",""],"requiredParameterCount":1},{"label":"iterator","declaringLibraryUri":"package:collection/src/iterable_zip.dart","element":{"kind":"GETTER","name":"iterator","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\collection-1.14.11\\lib\\src\\iterable_zip.dart","offset":1010,"length":0,"startLine":23,"startColumn":25},"flags":0,"returnType":"Iterator<List<T>>"}}]}],"removedLibraries":[]}}
[15:55:54] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1835,"uri":"package:collection/equality.dart","items":[{"label":"CaseInsensitiveEquality","declaringLibraryUri":"package:collection/src/equality.dart","element":{"kind":"CLASS","name":"CaseInsensitiveEquality","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\collection-1.14.11\\lib\\src\\equality.dart","offset":15045,"length":0,"startLine":455,"startColumn":7},"flags":0},"relevanceTags":["package:collection/src/equality.dart::CaseInsensitiveEquality","CaseInsensitiveEquality"]},{"label":"CaseInsensitiveEquality","declaringLibraryUri":"package:collection/src/equality.dart","element":{"kind":"CONSTRUCTOR","name":"","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\collection-1.14.11\\lib\\src\\equality.dart","offset":15107,"length":0,"startLine":456,"startColumn":9},"flags":0,"parameters":"()","returnType":"CaseInsensitiveEquality"},"parameterNames":[],"parameterTypes":[],"relevanceTags":["package:collection/src/equality.dart::CaseInsensitiveEquality",""],"requiredParameterCount":0},{"label":"equals","declaringLibraryUri":"package:collection/src/equality.dart","element":{"kind":"METHOD","name":"equals","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\collection-1.14.11\\lib\\src\\equality.dart","offset":15142,"length":0,"startLine":458,"startColumn":8},"flags":0,"parameters":"(String string1, String string2)","returnType":"bool"},"defaultArgumentListString":"string1, string2","defaultArgumentListTextRanges":[0,7,9,7],"parameterNames":["string1","string2"],"parameterTypes":["String","String"],"requiredParameterCount":2},{"label":"hash","declaringLibraryUri":"package:collection/src/equality.dart","element":{"kind":"METHOD","name":"hash","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\collection-1.14.11\\lib\\src\\equality.dart","offset":15238,"length":0,"startLine":461,"star…
[15:55:55] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1836,"uri":"package:webdriver/support/stdio_stepper.dart","items":[{"label":"LineReader","declaringLibraryUri":"package:webdriver/support/stdio_stepper.dart","element":{"kind":"CLASS","name":"LineReader","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\support\\stdio_stepper.dart","offset":2644,"length":0,"startLine":86,"startColumn":7},"flags":0},"relevanceTags":["package:webdriver/support/stdio_stepper.dart::LineReader","LineReader"]},{"label":"CR","declaringLibraryUri":"package:webdriver/support/stdio_stepper.dart","element":{"kind":"FIELD","name":"CR","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\support\\stdio_stepper.dart","offset":2672,"length":0,"startLine":87,"startColumn":16},"flags":2,"returnType":""},"relevanceTags":["dart:core::int","CR"]},{"label":"LF","declaringLibraryUri":"package:webdriver/support/stdio_stepper.dart","element":{"kind":"FIELD","name":"LF","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\support\\stdio_stepper.dart","offset":2696,"length":0,"startLine":88,"startColumn":16},"flags":2,"returnType":""},"relevanceTags":["dart:core::int","LF"]},{"label":"encoding","declaringLibraryUri":"package:webdriver/support/stdio_stepper.dart","element":{"kind":"FIELD","name":"encoding","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\support\\stdio_stepper.dart","offset":2838,"length":0,"startLine":94,"startColumn":18},"flags":4,"returnType":"Encoding"}},{"label":"LineReader","declaringLibraryUri":"package:webdriver/support/stdio_stepper.dart","element":{"kind":"CONSTRUCTOR","name":"","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\support\\stdio_stepper.dart","offset":2965,"length":0,"startLine":98,"startColumn":3…
[15:55:55] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1837,"uri":"package:webdriver/support/forwarder.dart","items":[{"label":"WebDriverForwarder","declaringLibraryUri":"package:webdriver/support/forwarder.dart","element":{"kind":"CLASS","name":"WebDriverForwarder","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\support\\forwarder.dart","offset":2758,"length":0,"startLine":57,"startColumn":7},"flags":0},"relevanceTags":["package:webdriver/support/forwarder.dart::WebDriverForwarder","WebDriverForwarder"]},{"label":"driver","declaringLibraryUri":"package:webdriver/support/forwarder.dart","element":{"kind":"FIELD","name":"driver","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\support\\forwarder.dart","offset":2848,"length":0,"startLine":59,"startColumn":19},"flags":4,"returnType":"WebDriver"}},{"label":"prefix","declaringLibraryUri":"package:webdriver/support/forwarder.dart","element":{"kind":"FIELD","name":"prefix","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\support\\forwarder.dart","offset":2930,"length":0,"startLine":62,"startColumn":17},"flags":4,"returnType":"Pattern"}},{"label":"outputDir","declaringLibraryUri":"package:webdriver/support/forwarder.dart","element":{"kind":"FIELD","name":"outputDir","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\support\\forwarder.dart","offset":3013,"length":0,"startLine":65,"startColumn":19},"flags":4,"returnType":"Directory"}},{"label":"useDeep","declaringLibraryUri":"package:webdriver/support/forwarder.dart","element":{"kind":"FIELD","name":"useDeep","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\support\\forwarder.dart","offset":3102,"length":0,"startLine":68,"startColumn":8},"flags":0,"returnType":"bool"}},{"label":"WebDriverForwarder"…
[15:55:55] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1838,"uri":"package:webdriver/support/firefox_profile.dart","items":[{"label":"defaultUserPrefs","declaringLibraryUri":"package:webdriver/support/firefox_profile.dart","element":{"kind":"TOP_LEVEL_VARIABLE","name":"defaultUserPrefs","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\support\\firefox_profile.dart","offset":4119,"length":0,"startLine":83,"startColumn":25},"flags":4,"returnType":"List<PrefsOption>"},"relevanceTags":["dart:core::List","defaultUserPrefs"]},{"label":"BooleanOption","declaringLibraryUri":"package:webdriver/support/firefox_profile.dart","element":{"kind":"CLASS","name":"BooleanOption","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\support\\firefox_profile.dart","offset":13613,"length":0,"startLine":343,"startColumn":7},"flags":0},"relevanceTags":["package:webdriver/support/firefox_profile.dart::BooleanOption","BooleanOption"]},{"label":"BooleanOption","declaringLibraryUri":"package:webdriver/support/firefox_profile.dart","element":{"kind":"CONSTRUCTOR","name":"","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\support\\firefox_profile.dart","offset":13657,"length":0,"startLine":344,"startColumn":3},"flags":0,"parameters":"(String name, bool value)","returnType":"BooleanOption"},"defaultArgumentListString":"name, value","defaultArgumentListTextRanges":[0,4,6,5],"parameterNames":["name","value"],"parameterTypes":["String","bool"],"relevanceTags":["package:webdriver/support/firefox_profile.dart::BooleanOption",""],"requiredParameterCount":2},{"label":"IntegerOption","declaringLibraryUri":"package:webdriver/support/firefox_profile.dart","element":{"kind":"CLASS","name":"IntegerOption","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\support\\firefox_profile.dart"…
[15:55:55] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1839,"uri":"package:webdriver/io.dart","items":[{"label":"UnknownException","declaringLibraryUri":"package:webdriver/src/common/exception.dart","element":{"kind":"CLASS","name":"UnknownException","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\src\\common\\exception.dart","offset":1278,"length":0,"startLine":43,"startColumn":7},"flags":0},"relevanceTags":["package:webdriver/src/common/exception.dart::UnknownException","UnknownException"]},{"label":"UnknownException","declaringLibraryUri":"package:webdriver/src/common/exception.dart","element":{"kind":"CONSTRUCTOR","name":"","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\src\\common\\exception.dart","offset":1332,"length":0,"startLine":44,"startColumn":9},"flags":0,"parameters":"(int statusCode, String message)","returnType":"UnknownException"},"defaultArgumentListString":"statusCode, message","defaultArgumentListTextRanges":[0,10,12,7],"parameterNames":["statusCode","message"],"parameterTypes":["int","String"],"relevanceTags":["package:webdriver/src/common/exception.dart::UnknownException",""],"requiredParameterCount":2},{"label":"MouseButton","declaringLibraryUri":"package:webdriver/src/common/mouse.dart","element":{"kind":"CLASS","name":"MouseButton","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\src\\common\\mouse.dart","offset":259,"length":0,"startLine":6,"startColumn":7},"flags":0},"relevanceTags":["package:webdriver/src/common/mouse.dart::MouseButton","MouseButton"]},{"label":"primary","declaringLibraryUri":"package:webdriver/src/common/mouse.dart","element":{"kind":"FIELD","name":"primary","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\src\\common\\mouse.dart","offset":467,"length":0,"startLine":10,"startColumn":28},"fl…
[15:55:55] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1842,"uri":"package:webdriver/core.dart","items":[{"label":"UnknownException","declaringLibraryUri":"package:webdriver/src/common/exception.dart","element":{"kind":"CLASS","name":"UnknownException","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\src\\common\\exception.dart","offset":1278,"length":0,"startLine":43,"startColumn":7},"flags":0},"relevanceTags":["package:webdriver/src/common/exception.dart::UnknownException","UnknownException"]},{"label":"UnknownException","declaringLibraryUri":"package:webdriver/src/common/exception.dart","element":{"kind":"CONSTRUCTOR","name":"","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\src\\common\\exception.dart","offset":1332,"length":0,"startLine":44,"startColumn":9},"flags":0,"parameters":"(int statusCode, String message)","returnType":"UnknownException"},"defaultArgumentListString":"statusCode, message","defaultArgumentListTextRanges":[0,10,12,7],"parameterNames":["statusCode","message"],"parameterTypes":["int","String"],"relevanceTags":["package:webdriver/src/common/exception.dart::UnknownException",""],"requiredParameterCount":2},{"label":"MouseButton","declaringLibraryUri":"package:webdriver/src/common/mouse.dart","element":{"kind":"CLASS","name":"MouseButton","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\src\\common\\mouse.dart","offset":259,"length":0,"startLine":6,"startColumn":7},"flags":0},"relevanceTags":["package:webdriver/src/common/mouse.dart::MouseButton","MouseButton"]},{"label":"primary","declaringLibraryUri":"package:webdriver/src/common/mouse.dart","element":{"kind":"FIELD","name":"primary","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\src\\common\\mouse.dart","offset":467,"length":0,"startLine":10,"startColumn":28},"…
[15:55:55] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1840,"uri":"package:webdriver/async_io.dart","items":[{"label":"UnknownException","declaringLibraryUri":"package:webdriver/src/common/exception.dart","element":{"kind":"CLASS","name":"UnknownException","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\src\\common\\exception.dart","offset":1278,"length":0,"startLine":43,"startColumn":7},"flags":0},"relevanceTags":["package:webdriver/src/common/exception.dart::UnknownException","UnknownException"]},{"label":"UnknownException","declaringLibraryUri":"package:webdriver/src/common/exception.dart","element":{"kind":"CONSTRUCTOR","name":"","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\src\\common\\exception.dart","offset":1332,"length":0,"startLine":44,"startColumn":9},"flags":0,"parameters":"(int statusCode, String message)","returnType":"UnknownException"},"defaultArgumentListString":"statusCode, message","defaultArgumentListTextRanges":[0,10,12,7],"parameterNames":["statusCode","message"],"parameterTypes":["int","String"],"relevanceTags":["package:webdriver/src/common/exception.dart::UnknownException",""],"requiredParameterCount":2},{"label":"MouseButton","declaringLibraryUri":"package:webdriver/src/common/mouse.dart","element":{"kind":"CLASS","name":"MouseButton","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\src\\common\\mouse.dart","offset":259,"length":0,"startLine":6,"startColumn":7},"flags":0},"relevanceTags":["package:webdriver/src/common/mouse.dart::MouseButton","MouseButton"]},{"label":"primary","declaringLibraryUri":"package:webdriver/src/common/mouse.dart","element":{"kind":"FIELD","name":"primary","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\src\\common\\mouse.dart","offset":467,"length":0,"startLine":10,"startColumn":2…
[15:55:55] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1843,"uri":"package:webdriver/async_html.dart","items":[{"label":"UnknownException","declaringLibraryUri":"package:webdriver/src/common/exception.dart","element":{"kind":"CLASS","name":"UnknownException","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\src\\common\\exception.dart","offset":1278,"length":0,"startLine":43,"startColumn":7},"flags":0},"relevanceTags":["package:webdriver/src/common/exception.dart::UnknownException","UnknownException"]},{"label":"UnknownException","declaringLibraryUri":"package:webdriver/src/common/exception.dart","element":{"kind":"CONSTRUCTOR","name":"","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\src\\common\\exception.dart","offset":1332,"length":0,"startLine":44,"startColumn":9},"flags":0,"parameters":"(int statusCode, String message)","returnType":"UnknownException"},"defaultArgumentListString":"statusCode, message","defaultArgumentListTextRanges":[0,10,12,7],"parameterNames":["statusCode","message"],"parameterTypes":["int","String"],"relevanceTags":["package:webdriver/src/common/exception.dart::UnknownException",""],"requiredParameterCount":2},{"label":"MouseButton","declaringLibraryUri":"package:webdriver/src/common/mouse.dart","element":{"kind":"CLASS","name":"MouseButton","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\src\\common\\mouse.dart","offset":259,"length":0,"startLine":6,"startColumn":7},"flags":0},"relevanceTags":["package:webdriver/src/common/mouse.dart::MouseButton","MouseButton"]},{"label":"primary","declaringLibraryUri":"package:webdriver/src/common/mouse.dart","element":{"kind":"FIELD","name":"primary","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\src\\common\\mouse.dart","offset":467,"length":0,"startLine":10,"startColumn"…
[15:55:55] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1845,"uri":"package:web_socket_channel/status.dart","items":[{"label":"tlsHandshakeFailed","declaringLibraryUri":"package:web_socket_channel/status.dart","element":{"kind":"TOP_LEVEL_VARIABLE","name":"tlsHandshakeFailed","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\web_socket_channel-1.1.0\\lib\\status.dart","offset":3301,"length":0,"startLine":90,"startColumn":7},"flags":2,"returnType":""},"relevanceTags":["dart:core::int","tlsHandshakeFailed"]},{"label":"protocolError","declaringLibraryUri":"package:web_socket_channel/status.dart","element":{"kind":"TOP_LEVEL_VARIABLE","name":"protocolError","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\web_socket_channel-1.1.0\\lib\\status.dart","offset":1009,"length":0,"startLine":31,"startColumn":7},"flags":2,"returnType":""},"relevanceTags":["dart:core::int","protocolError"]},{"label":"internalServerError","declaringLibraryUri":"package:web_socket_channel/status.dart","element":{"kind":"TOP_LEVEL_VARIABLE","name":"internalServerError","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\web_socket_channel-1.1.0\\lib\\status.dart","offset":3059,"length":0,"startLine":83,"startColumn":7},"flags":2,"returnType":""},"relevanceTags":["dart:core::int","internalServerError"]},{"label":"messageTooBig","declaringLibraryUri":"package:web_socket_channel/status.dart","element":{"kind":"TOP_LEVEL_VARIABLE","name":"messageTooBig","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\web_socket_channel-1.1.0\\lib\\status.dart","offset":2442,"length":0,"startLine":70,"startColumn":7},"flags":2,"returnType":""},"relevanceTags":["dart:core::int","messageTooBig"]},{"label":"goingAway","declaringLibraryUri":"package:web_socket_channel/status.dart","element":{"kind":"TOP_LEVEL_VARIABLE","name":"goingAway","location":{"file":"C:\\flutter\\.pub-cach…
[15:55:55] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1846,"uri":"package:web_socket_channel/html.dart","items":[{"label":"HtmlWebSocketChannel","declaringLibraryUri":"package:web_socket_channel/html.dart","element":{"kind":"CLASS","name":"HtmlWebSocketChannel","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\web_socket_channel-1.1.0\\lib\\html.dart","offset":547,"length":0,"startLine":18,"startColumn":7},"flags":0},"relevanceTags":["package:web_socket_channel/html.dart::HtmlWebSocketChannel","HtmlWebSocketChannel"]},{"label":"protocol","declaringLibraryUri":"package:web_socket_channel/html.dart","element":{"kind":"GETTER","name":"protocol","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\web_socket_channel-1.1.0\\lib\\html.dart","offset":719,"length":0,"startLine":23,"startColumn":14},"flags":0,"returnType":"String"}},{"label":"closeCode","declaringLibraryUri":"package:web_socket_channel/html.dart","element":{"kind":"GETTER","name":"closeCode","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\web_socket_channel-1.1.0\\lib\\html.dart","offset":763,"length":0,"startLine":25,"startColumn":11},"flags":0,"returnType":"int"}},{"label":"closeReason","declaringLibraryUri":"package:web_socket_channel/html.dart","element":{"kind":"GETTER","name":"closeReason","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\web_socket_channel-1.1.0\\lib\\html.dart","offset":820,"length":0,"startLine":28,"startColumn":14},"flags":0,"returnType":"String"}},{"label":"bufferedAmount","declaringLibraryUri":"package:web_socket_channel/html.dart","element":{"kind":"GETTER","name":"bufferedAmount","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\web_socket_channel-1.1.0\\lib\\html.dart","offset":985,"length":0,"startLine":33,"startColumn":11},"flags":0,"returnType":"int"}},{"label":"stream","declaringLibraryUri":"package:web_sock…
[15:55:55] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1847,"uri":"package:vm_service/utils.dart","items":[{"label":"convertToWebSocketUrl","declaringLibraryUri":"package:vm_service/utils.dart","element":{"kind":"FUNCTION","name":"convertToWebSocketUrl","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\vm_service-2.3.1\\lib\\utils.dart","offset":401,"length":0,"startLine":10,"startColumn":5},"flags":0,"parameters":"({@required Uri serviceProtocolUrl})","returnType":"Uri"},"defaultArgumentListString":"serviceProtocolUrl: null","defaultArgumentListTextRanges":[20,4],"parameterNames":["serviceProtocolUrl"],"parameterTypes":["Uri"],"requiredParameterCount":0}]}],"removedLibraries":[]}}
[15:55:55] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1848,"uri":"package:test_core/backend.dart","items":[{"label":"parseMetadata","declaringLibraryUri":"package:test_core/src/runner/parse_metadata.dart","element":{"kind":"FUNCTION","name":"parseMetadata","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\test_core-0.2.15\\lib\\src\\runner\\parse_metadata.dart","offset":1185,"length":0,"startLine":25,"startColumn":10},"flags":0,"parameters":"(String path, String contents, Set<String> platformVariables)","returnType":"Metadata"},"defaultArgumentListString":"path, contents, platformVariables","defaultArgumentListTextRanges":[0,4,6,8,16,17],"parameterNames":["path","contents","platformVariables"],"parameterTypes":["String","String","Set<String>"],"requiredParameterCount":3},{"label":"Runtime","declaringLibraryUri":"package:test_api/src/backend/runtime.dart","element":{"kind":"CLASS","name":"Runtime","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\test_api-0.2.11\\lib\\src\\backend\\runtime.dart","offset":286,"length":0,"startLine":6,"startColumn":7},"flags":0},"relevanceTags":["package:test_api/src/backend/runtime.dart::Runtime","Runtime"]},{"label":"vm","declaringLibraryUri":"package:test_api/src/backend/runtime.dart","element":{"kind":"FIELD","name":"vm","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\test_api-0.2.11\\lib\\src\\backend\\runtime.dart","offset":495,"length":0,"startLine":11,"startColumn":24},"flags":2,"returnType":"Runtime"}},{"label":"chrome","declaringLibraryUri":"package:test_api/src/backend/runtime.dart","element":{"kind":"FIELD","name":"chrome","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\test_api-0.2.11\\lib\\src\\backend\\runtime.dart","offset":582,"length":0,"startLine":14,"startColumn":24},"flags":2,"returnType":"Runtime"}},{"label":"phantomJS","declaringLibraryUri":"package:test_api/src/backend/…
[15:55:55] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1850,"uri":"package:vm_service/vm_service_io.dart","items":[{"label":"vmServiceConnectUri","declaringLibraryUri":"package:vm_service/vm_service_io.dart","element":{"kind":"FUNCTION","name":"vmServiceConnectUri","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\vm_service-2.3.1\\lib\\vm_service_io.dart","offset":1010,"length":0,"startLine":31,"startColumn":19},"flags":0,"parameters":"(String wsUri, {Log log})","returnType":"Future<VmService>"},"defaultArgumentListString":"wsUri","defaultArgumentListTextRanges":[0,5],"parameterNames":["wsUri","log"],"parameterTypes":["String","Log"],"requiredParameterCount":1},{"label":"vmServiceConnect","declaringLibraryUri":"package:vm_service/vm_service_io.dart","element":{"kind":"FUNCTION","name":"vmServiceConnect","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\vm_service-2.3.1\\lib\\vm_service_io.dart","offset":344,"length":0,"startLine":11,"startColumn":19},"flags":32,"parameters":"(String host, int port, {Log log})","returnType":"Future<VmService>"},"defaultArgumentListString":"host, port","defaultArgumentListTextRanges":[0,4,6,4],"parameterNames":["host","port","log"],"parameterTypes":["String","int","Log"],"requiredParameterCount":2}]}],"removedLibraries":[]}}
[15:55:55] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1851,"uri":"package:stream_channel/isolate_channel.dart","items":[{"label":"IsolateChannel","declaringLibraryUri":"package:stream_channel/src/isolate_channel.dart","element":{"kind":"CLASS","name":"IsolateChannel","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\stream_channel-2.0.0\\lib\\src\\isolate_channel.dart","offset":1133,"length":0,"startLine":26,"startColumn":7},"flags":0},"relevanceTags":["package:stream_channel/src/isolate_channel.dart::IsolateChannel","IsolateChannel"]},{"label":"stream","declaringLibraryUri":"package:stream_channel/src/isolate_channel.dart","element":{"kind":"FIELD","name":"stream","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\stream_channel-2.0.0\\lib\\src\\isolate_channel.dart","offset":1213,"length":0,"startLine":28,"startColumn":19},"flags":4,"returnType":"Stream<T>"}},{"label":"sink","declaringLibraryUri":"package:stream_channel/src/isolate_channel.dart","element":{"kind":"FIELD","name":"sink","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\stream_channel-2.0.0\\lib\\src\\isolate_channel.dart","offset":1255,"length":0,"startLine":30,"startColumn":23},"flags":4,"returnType":"StreamSink<T>"}},{"label":"IsolateChannel.connectReceive","declaringLibraryUri":"package:stream_channel/src/isolate_channel.dart","element":{"kind":"CONSTRUCTOR","name":"connectReceive","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\stream_channel-2.0.0\\lib\\src\\isolate_channel.dart","offset":1814,"length":0,"startLine":43,"startColumn":26},"flags":0,"parameters":"(ReceivePort receivePort)","returnType":"IsolateChannel"},"defaultArgumentListString":"receivePort","defaultArgumentListTextRanges":[0,11],"parameterNames":["receivePort"],"parameterTypes":["ReceivePort"],"relevanceTags":["package:stream_channel/src/isolate_channel.dart::IsolateChannel","connectRece…
[15:55:55] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1853,"uri":"package:source_maps/refactor.dart","items":[{"label":"guessIndent","declaringLibraryUri":"package:source_maps/refactor.dart","element":{"kind":"FUNCTION","name":"guessIndent","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\refactor.dart","offset":3655,"length":0,"startLine":108,"startColumn":8},"flags":0,"parameters":"(String code, int charOffset)","returnType":"String"},"defaultArgumentListString":"code, charOffset","defaultArgumentListTextRanges":[0,4,6,10],"parameterNames":["code","charOffset"],"parameterTypes":["String","int"],"requiredParameterCount":2},{"label":"TextEditTransaction","declaringLibraryUri":"package:source_maps/refactor.dart","element":{"kind":"CLASS","name":"TextEditTransaction","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\refactor.dart","offset":713,"length":0,"startLine":19,"startColumn":7},"flags":0},"relevanceTags":["package:source_maps/refactor.dart::TextEditTransaction","TextEditTransaction"]},{"label":"file","declaringLibraryUri":"package:source_maps/refactor.dart","element":{"kind":"FIELD","name":"file","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\refactor.dart","offset":754,"length":0,"startLine":20,"startColumn":20},"flags":4,"returnType":"SourceFile"}},{"label":"original","declaringLibraryUri":"package:source_maps/refactor.dart","element":{"kind":"FIELD","name":"original","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\refactor.dart","offset":775,"length":0,"startLine":21,"startColumn":16},"flags":4,"returnType":"String"}},{"label":"TextEditTransaction","declaringLibraryUri":"package:source_maps/refactor.dart","element":{"kind":"CONSTRUCTOR","name":"","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartl…
[15:55:55] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1854,"uri":"package:source_maps/printer.dart","items":[{"label":"Printer","declaringLibraryUri":"package:source_maps/printer.dart","element":{"kind":"CLASS","name":"Printer","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\printer.dart","offset":576,"length":0,"startLine":18,"startColumn":7},"flags":0},"relevanceTags":["package:source_maps/printer.dart::Printer","Printer"]},{"label":"filename","declaringLibraryUri":"package:source_maps/printer.dart","element":{"kind":"FIELD","name":"filename","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\printer.dart","offset":601,"length":0,"startLine":19,"startColumn":16},"flags":4,"returnType":"String"}},{"label":"text","declaringLibraryUri":"package:source_maps/printer.dart","element":{"kind":"GETTER","name":"text","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\printer.dart","offset":730,"length":0,"startLine":22,"startColumn":14},"flags":0,"returnType":"String"}},{"label":"map","declaringLibraryUri":"package:source_maps/printer.dart","element":{"kind":"GETTER","name":"map","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\printer.dart","offset":769,"length":0,"startLine":23,"startColumn":14},"flags":0,"returnType":"String"}},{"label":"Printer","declaringLibraryUri":"package:source_maps/printer.dart","element":{"kind":"CONSTRUCTOR","name":"","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\printer.dart","offset":974,"length":0,"startLine":34,"startColumn":3},"flags":0,"parameters":"(this.filename)","returnType":"Printer"},"defaultArgumentListString":"filename","defaultArgumentListTextRanges":[0,8],"parameterNames":["filename"],"parameterTypes":[""],"relevanceTags":["package:sour…
[15:55:55] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1855,"uri":"package:source_maps/source_maps.dart","items":[{"label":"TargetEntry","declaringLibraryUri":"package:source_maps/parser.dart","element":{"kind":"CLASS","name":"TargetEntry","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\parser.dart","offset":21718,"length":0,"startLine":610,"startColumn":7},"flags":0},"relevanceTags":["package:source_maps/parser.dart::TargetEntry","TargetEntry"]},{"label":"column","declaringLibraryUri":"package:source_maps/parser.dart","element":{"kind":"FIELD","name":"column","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\parser.dart","offset":21744,"length":0,"startLine":611,"startColumn":13},"flags":4,"returnType":"int"}},{"label":"sourceUrlId","declaringLibraryUri":"package:source_maps/parser.dart","element":{"kind":"FIELD","name":"sourceUrlId","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\parser.dart","offset":21764,"length":0,"startLine":612,"startColumn":13},"flags":4,"returnType":"int"}},{"label":"sourceLine","declaringLibraryUri":"package:source_maps/parser.dart","element":{"kind":"FIELD","name":"sourceLine","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\parser.dart","offset":21789,"length":0,"startLine":613,"startColumn":13},"flags":4,"returnType":"int"}},{"label":"sourceColumn","declaringLibraryUri":"package:source_maps/parser.dart","element":{"kind":"FIELD","name":"sourceColumn","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\parser.dart","offset":21813,"length":0,"startLine":614,"startColumn":13},"flags":4,"returnType":"int"}},{"label":"sourceNameId","declaringLibraryUri":"package:source_maps/parser.dart","element":{"kind":"FIELD","name":"sourceNameId","location":{"fil…
[15:55:55] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1857,"uri":"package:source_map_stack_trace/source_map_stack_trace.dart","items":[{"label":"mapStackTrace","declaringLibraryUri":"package:source_map_stack_trace/source_map_stack_trace.dart","element":{"kind":"FUNCTION","name":"mapStackTrace","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_map_stack_trace-1.1.5\\lib\\source_map_stack_trace.dart","offset":1182,"length":0,"startLine":25,"startColumn":12},"flags":0,"parameters":"(Mapping sourceMap, StackTrace stackTrace, {bool minified: false, SyncPackageResolver packageResolver, sdkRoot, @Deprecated(\"Use the packageResolver parameter instead.\") packageRoot})","returnType":"StackTrace"},"defaultArgumentListString":"sourceMap, stackTrace","defaultArgumentListTextRanges":[0,9,11,10],"parameterNames":["sourceMap","stackTrace","minified","packageResolver","sdkRoot","packageRoot"],"parameterTypes":["Mapping","StackTrace","bool","SyncPackageResolver","",""],"requiredParameterCount":2}]}],"removedLibraries":[]}}
[15:55:55] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1858,"uri":"package:source_gen/builder.dart","items":[{"label":"combiningBuilder","declaringLibraryUri":"package:source_gen/builder.dart","element":{"kind":"FUNCTION","name":"combiningBuilder","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_gen-0.9.4+7\\lib\\builder.dart","offset":903,"length":0,"startLine":26,"startColumn":9},"flags":0,"parameters":"([BuilderOptions options])","returnType":"Builder"},"parameterNames":["options"],"parameterTypes":["BuilderOptions"],"requiredParameterCount":0},{"label":"partCleanup","declaringLibraryUri":"package:source_gen/builder.dart","element":{"kind":"FUNCTION","name":"partCleanup","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_gen-0.9.4+7\\lib\\builder.dart","offset":1380,"length":0,"startLine":42,"startColumn":20},"flags":0,"parameters":"(BuilderOptions options)","returnType":"PostProcessBuilder"},"defaultArgumentListString":"options","defaultArgumentListTextRanges":[0,7],"parameterNames":["options"],"parameterTypes":["BuilderOptions"],"requiredParameterCount":1},{"label":"CombiningBuilder","declaringLibraryUri":"package:source_gen/builder.dart","element":{"kind":"CLASS","name":"CombiningBuilder","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_gen-0.9.4+7\\lib\\builder.dart","offset":1606,"length":0,"startLine":48,"startColumn":7},"flags":0},"relevanceTags":["package:source_gen/builder.dart::CombiningBuilder","CombiningBuilder"]},{"label":"buildExtensions","declaringLibraryUri":"package:source_gen/builder.dart","element":{"kind":"GETTER","name":"buildExtensions","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_gen-0.9.4+7\\lib\\builder.dart","offset":1720,"length":0,"startLine":52,"startColumn":33},"flags":0,"returnType":"Map<String, List<String>>"}},{"label":"CombiningBuilder","declaringLibraryUri":…
[15:55:55] [Analyzer] [Info] <== {"id":"34","result":{"initialProblems":[],"optionsProblems":[],"finalProblems":[],"feedback":{"offset":139,"length":9,"elementKindName":"class","oldName":"AppButton"},"change":{"message":"Rename Class 'AppButton' to 'MyButton'","edits":[{"file":"C:\\git\\my-project\\lib\\widgets\\app_button\\app_button.dart","fileStamp":0,"edits":[{"offset":1537,"length":9,"replacement":"MyButton"},{"offset":1507,"length":15,"replacement":"_MyButtonState"},{"offset":1476,"length":15,"replacement":"_MyButtonState"},{"offset":1443,"length":15,"replacement":"_MyButtonState"},{"offset":787,"length":9,"replacement":"MyButton"},{"offset":139,"length":9,"replacement":"MyButton"}]},{"file":"C:\\git\\my-project\\lib\\screens\\letter_practice\\letter_practice.dart","fileStamp":0,"edits":[{"offset":6024,"length":9,"replacement":"MyButton"}]},{"file":"C:\\git\\my-project\\lib\\widgets\\keyboard\\keyboard_button_builder.dart","fileStamp":0,"edits":[{"offset":357,"length":9,"replacement":"MyButton"}]},{"file":"C:\\git\\my-project\\lib\\screens\\profile_chooser\\widgets\\profile_edit_form.dart","fileStamp":0,"edits":[{"offset":4645,"length":9,"replacement":"MyButton"},{"offset":3882,"length":9,"replacement":"MyButton"}]},{"file":"C:\\git\\my-project\\test\\widget_tests\\widgets\\app_button\\app_button_test.dart","fileStamp":0,"edits":[{"offset":3000,"length":9,"replacement":"MyButton"},{"offset":2625,"length":9,"replacement":"MyButton"},{"offset":2197,"length":9,"replacement":"MyButton"},{"offset":2014,"length":9,"replacement":"MyButton"},{"offset":1825,"length":9,"replacement":"MyButton"},{"offset":1525,"length":9,"replacement":"MyButton"},{"offset":814,"length":9,"replacement":"MyButton"},{"offset":463,"length":9,"replacement":"MyButton"},{"offset":439,"length":9,"replacement":"MyButton"}]},{"file":"C:\\git\\my-project\\lib\\screens\\listen_and_find\\listen_and_find.dart","fileStamp":0,"edits":[{"offset":14016,"length":9,"replacemen…
It shows around 7 seconds for the rename, but there are lots of completion.availableSuggestions messages in between. This makes me think the server was still doing things in the background when this happened.
If you leave it longer (maybe a couple of minutes?) before doing the first rename, do you still see it? (I'm not sure if it's just startup work, or if the rename is somehow triggering that work on the server).
I've been examining this for the last couple of weeks and it seems like it's some kind of "startup" work (just as you've stated above). After the first rename, the following renames are more or less instant. However, this startup does not trigger for me until the first rename. I can open my project, work for 30 minutes, build, debug, open/close files, create classes, hot reloads etc - then I rename a symbol and it takes a long time (7 seconds in the above case). So this "startup" work isn't triggered until the first rename.
Our project is currently 95 dart files (300k in total size). An interesting observation is that even if I've been running the project for say 30 or 60 minutes and then I rename a class or a field - it will take at least the above 7 seconds. But sometimes it takes more (e.g. 20 secs) and sometimes (quite often) it does not complete at all. I guess it's a timeout after 30 seconds or so? If a rename times out the loading spinner in VS Code stops moving and no error message or other info is displayed (and the symbol isn't renamed). If I try to rename the same thing (or something else) after this, it renames immediately.
We are currently three people working on this project, we all have the same issue. Currently we're using the beta branch (1.14.6) but we've had this problem for quite some time. I would say around version 1 and including current master (1.15).
Another observation is that "References: Find all references" (Shift + Alt + F12) has the same issue. Finding references for a symbol can take really long time and it often times out. I guess this triggers the same kind of "indexing" job that rename uses.
A workaround that is working for me is to trigger "Find all references" with my morning cup of coffee and keep VS Code open during the day.
I'd like to repro this with a open source project so I can provide easy steps to reproduce and no problems sharing the logs (considering that the logs may contain info about our project). I don't have time to do that right now but hopefully in a couple of weeks or so.
Sorry for late responses in for this issue!
@mikeesouth thanks for the extra details!
An interesting observation is that even if I've been running the project for say 30 or 60 minutes and then I rename a class or a field - it will take at least the above 7 seconds.
I thought I saw that too - but since I wasn't waiting very long, I thought I might have just been too fast while it was still working. Since this seems to confirm it is happening, I'll capture a log with a longer wait and move this over to the SDK repo.
I tried to repro this again recently, and I came across a performance issue - but it was only triggered in very specific circumstances (where you open VS Code with files already open, and then don't open/close any additional files). I've fixed that in the SDK, but I'm not sure it's the cause of this.
For those that can reliably reproduce this, some things that may help:
dart.autoImportCompletions changes this behaviour (if it still happens with this disabled, a server instrumentation log taken while reproducing may be useful - though note that it may include parts of your source code)Same issue :( Very frustrating to wait 15 seconds for renaming a variable.
Please see the request in the comment above. If someone can share a project this happens with, along with an instrumentation log (and confirm whether dart.autoImportCompletions affects it), I'd like to dig into what's going on.
This issue has been marked stale because it is tagged awaiting-info for 30 days with no activity. Remove the stale label or comment to prevent the issue being closed in 10 days.
Not sure if related or not, but I noticed that other extensions can interfere with the refactor feature in Flutter/Dart extensions. Refactoring prompts were not showing-up for me at first. When I disabled several other (unrelated to Flutter/Dart) extensions, the refactoring prompts started showing-up and working.
@mmcc007 if you're able to track down which extension triggers this, I'd be interested in trying to understand why to see if it can be fixed (either here, or in their extension). Thanks!
I just had this when trying to make a field private. Took multiple seconds. But subsequent renames worked fine (after I reverted the change), even after restarting the analysis server.
Perhaps analysis server must run for a while for this to happen.
Also, it's separate bug, but trying to make field private that is used somewhere else returns unhelpful message Renamed field will be invisible in ''., would be good to have button that forces the rename here, and fix missing text.
@szotp I think I've seen it fairly early on, but I also haven't been able to reproduce it much. @bwilkerson @scheglov - do you have any ideas why the first refactor in a session could sometimes be really slow?
Also, it's separate bug
Please file a separate issue with exact code/repro steps and I'll take a look. I thought we already had a button to allow you to proceed with refactors that generate errors, though I don't know if it covers all cases (or if we do the same in LSP yet).
I don't know whether this is actually the cause of what you're seeing, but the refactoring support depends on an index that gets built. My guess is that the first refactoring sometimes has to wait for the index to finish being built, but future refactoring operations don't have that additional wait time.
@bwilkerson ah, interesting! Is that done separately to initial analysis (or rather - can it continue after initial analysis completes)? If so, any pointers to where I might find it - is AnalysisDriverUnitIndexBuilder part of it? It seems like that may be serialised to disk, which might explain why comments above suggest it didn't reoccur after restarting the server (and might also make it easier to reproduce by wiping out that cache?).
I'm not sure where it lives, but that seems likely based on the name. @scheglov would know.
But yes, I believe that the information is cached and that deleting the cache might well aid in reproducing the problem.
In my case, it seemed like the problem was with cache, because restarting the server and then renaming would take less than the rename attempt which caused me to search for this issue. I'll keep a look on this.
I was looking for any open issue on the Dart analyzer frequently terminating with Flutter+Dart in Windows (is there one? I'll keep searching for that or post a new one) and happen to came across this issue with a very familiar sounding topic.
I can just say, yes I agree on all the issues I have read about in this thread and have observed them as well. I will see later if I can maybe make some kind of repeatable case with a public repo.
That said, I think it has gotten better, it was much worse before, if I go back about 1 year it was bad enough that I would often switch to IntelliJ for more extensive name refactoring in Dart/Flutter (on Windows), now I don't do that so often anymore.
(OK, now the frequently stopping Dart Analyzer might force me back to IntelliJ). Another reason I did refactoring in IntelliJ, was that before VSCode was not as capable when it came to moving files without breaking references to them, it does that OK now for single files. However, renaming folder names or moving a folder with a tree of folders and files, is an area where both still struggle. IntelliJ still imo has slight upper hand there, so I sometimes also switch for these kind of tasks, but that is another topic.
In my case, it seemed like the problem was with cache, because restarting the server and then renaming would take less
@DanTup I run into this issue all the time as well. Freshly opened VSCode, everything works fine, but after 30-60 minutes of coding and hot reload work, the analysis server will come to a screeching halt. All intellisense becomes unresponsive or very delayed. It is weird because the problem gets resolved simply by closing VSCode and reopening. Same exact code will work just fine and analyzer will run through quick once I reopen. As I keep working, it will happen again and I need to close and reopen (just that, no other actions besides close/reopen).
So... I am wondering if it is related to something that the analysis server is caching? Does this sound familiar? Is there anything that the end user can change in the extension settings?
One more thing I will mention is that in the process of trying to see what the analyzer was doing, I enabled dart.analyzerInstrumentationLogFile. Nothing stood out (not to me at least), but I did notice that this file would grow VERY quickly. By the time I am done with one of my sessions and noticing that the analyzer was slowing down, the log file would reach multiple GBs in size. Yes... that is GBs. I have since disabled that setting because eventually that file is impossible to open in any text editor. Just wondering if the analysis server is doing similar caching to what is in the log file and trying to parse through some ever growing cache which is why it slows down as you work?
I have been trying to chase this issue for weeks. I saw something about the possibility that imports may be causing an issue for the analysis server. For example if the code base imports lots of libraries as opposed to single widgets from those libraries? I tend to break out my widgets into many file as part of a single library and import that entire library when it is needed. For context, this specific repo has a lib/ folder with 136 files. I suppose that is not "small" but it certainly is not unreasonable amount of files to house the source code of an entire app.
Even if that was an issue, why does that only happen after some time in the analysis server, it does not manifest right away so there seems to be some link to amount of time the analysis sever is running (which is why I mentioned cache).
@DanTup any information or insight you can provide would be incredibly helpful! This has been driving me up a wall for quite some time and has really hampered productivity.
@rydmike I don't think the termination issue is related to this - I believe that's a Dart watcher issue (discussion about this is in https://github.com/Dart-Code/Dart-Code/issues/2805).
Renaming multiple folders/multiple files is something on my radar. I have a working prototype, but it's too slow (it enumerates all of the files and does the move refactor individually which scales quite badly). There's an issue about this at https://github.com/Dart-Code/Dart-Code/issues/2483 though we also need some LSP spec changes (I have an open PR at https://github.com/microsoft/language-server-protocol/pull/1074).
I believe the issue here may be related to the file(s) being indexed, though I haven't been able to reliably repro it with logging. In a future LSP release, refactors will show a progress notification so it will be clear that something is happening and it won't just look like it silently failed (that doesn't solve the issue, but is at least an improvement).
@walsha2
I run into this issue all the time as well. Freshly opened VSCode, everything works fine, but after 30-60 minutes of coding and hot reload work, the analysis server will come to a screeching halt. All intellisense becomes unresponsive or very delayed.
This sounds like a different issue to what's being discussed here (which is just refactors being slow the first time - which I think may be related to files being indexed). Please file a new issue about this and we can figure out how best to debug (in the meantime, enabling the analyzer log file may be worthwhile, so when it next happens you can grab a copy and we can see if the time is being spent in the server or not). You should also grab the output of running code --status in a terminal which will capture the CPU + memory usage of all processes from the extension host to the analysis server which might be useful.
If you haven't already, I'd also recommend switching to LSP ("dart.previewLsp") setting. This has several improvements in code completion that should improve performance.
One more thing I will mention is that in the process of trying to see what the analyzer was doing, I enabled
dart.analyzerInstrumentationLogFile. Nothing stood out (not to me at least), but I did notice that this file would grow VERY quickly.
Yep, this logs all of the communication with the language server in full and can be very verbose. The log file I mentioned above should be smaller (it truncates long lines, and overwrites on each new session) and would is a better option if you're leaving it enable over a longer period (ofc it's not quite as insightful as the instrumentation log).
I saw something about the possibility that imports may be causing an issue for the analysis server. For example if the code base imports lots of libraries as opposed to single widgets from those libraries?
I'm not aware of any performance implications of this (though I'm less familiar all of the internals of the analysis server), though 130 files doesn't seem very large in my opinion so I'd be surprised if that was a source of performance issues.
We should continue this discussion in another issue though - it gets tricky tracking issues when there are many things in the same (if things turn out to be the same, it's easier to close an issue as a duplicate than separate the info in a single issue to multiple). Thanks!
@DanTup
I don't think the termination issue is related to this - I believe that's a Dart watcher issue (discussion about this is in #2805).
Oh I did not think so either, did not mean to imply that. This just happened to be another issue that I had noticed before as well and I wanted to mention that I had observed it too. I just happened to see this issue report while searching for any pre-existing reports on the analyzer termination issue. Like I mentioned, I used to notice this issue more before, but I don't think it is present anymore, at least not to the extent that I would have noticed it lately, but I will check again and comment if I can still observe it and get some logs from it.
Glad to hear you have are working on renaming/moving multiple files/folder. I can totally appreciate and understand that it must be a challenging feature to implement and that it is ready whenever it is. 👍
@DanTup thank you for the thorough response. I have been testing with dart.previewLsp enabled per your request and it has been night and day! I have not run into the same analyzer stalling issues I had in the past. I have worked in multiple hour long sessions and the analyzer was just as sporty at then end of the session as initial it was at initial VS Code launch. So that seems to have solved the issue I was seeing.
I will refrain from opening a new issue at the moment, but I will keep an eye on it and open an issue with more details if needed. Thank you again!
@walsha2 great, glad to hear! I suspect the issues were in the extension code that handles the auto-import completions (it has a lot of data to stitch together in each completion request) - it was definitely much slower in JS/node than the Dart server version is (though I hadn't experienced it getting worse over time).
The goal is to move over to LSP by default gradually in the coming months (and ultimately have this be the only option) so hopefully it'll become a non-issue in time. Thanks!
I get this about 4 or 5 times a day, a lot of the times it will be something where there are literally like 3 instances to rename in the same file, and it just fires off the loading indicator, and nothing happens. Other times it's super robust.
Will try and find any rhyme or reason to it.
I'm on previewLsp and I still have the same issue.
Logs
SLOW
!! PLEASE REVIEW THIS LOG FOR SENSITIVE INFORMATION BEFORE SHARING !!
Dart Code extension: 3.19.2
Flutter extension: 3.19.0 (activated)
App: Visual Studio Code
Version: 1.53.0
Platform: win
Workspace type: Flutter
Analyzer type: LSP
Multi-root?: false
Dart SDK:
Loc: C:\Users\thesl\fvm\versions\stable\bin\cache\dart-sdk
Ver: 2.10.5
Flutter SDK:
Loc: C:\Users\thesl\fvm\versions\stable
Ver: 1.22.6
HTTP_PROXY: undefined
NO_PROXY: 127.0.0.1
Logging Categories:
General, Analyzer, CommandProcesses
Mon Feb 08 2021 [09:04:32 GMT-0500 (Eastern Standard Time)] Log file started
[9:04:34 AM] [Analyzer] [Info] ==> Content-Length: 236
[9:04:34 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":548,"method":"textDocument/hover","params":{"textDocument":{"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"},"position":{"line":3,"character":18}}}
[9:04:34 AM] [Analyzer] [Info] <== Content-Length: 313
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:04:34 AM] [Analyzer] [Info] <== {"id":548,"jsonrpc":"2.0","result":{"contents":{"kind":"markdown","value":"```dart\nclass SpecialsViewModle extends StreamViewModel<QuerySnapshot>\n```\n*package:townofmadawaska/ui/views/chamber_module/widgets/specials_viewmodel.dart*"},"range":{"start":{"line":3,"character":6},"end":{"line":3,"character":23}}}}
[9:04:34 AM] [Analyzer] [Info] ==> Content-Length: 248
[9:04:34 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":549,"method":"textDocument/documentHighlight","params":{"textDocument":{"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"},"position":{"line":3,"character":19}}}
[9:04:34 AM] [Analyzer] [Info] <== Content-Length: 114
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:04:34 AM] [Analyzer] [Info] <== {"id":549,"jsonrpc":"2.0","result":[{"range":{"start":{"line":3,"character":6},"end":{"line":3,"character":23}}}]}
[9:04:34 AM] [Analyzer] [Info] ==> Content-Length: 309
[9:04:34 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":550,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"},"range":{"start":{"line":3,"character":19},"end":{"line":3,"character":19}},"context":{"diagnostics":[]}}}
[9:04:34 AM] [Analyzer] [Info] <== Content-Length: 967
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:04:34 AM] [Analyzer] [Info] <== {"id":550,"jsonrpc":"2.0","result":[{"title":"Sort Members","kind":"source.sortMembers","command":{"title":"Sort Members","command":"edit.sortMembers","arguments":["c:\\dev\\town-of-madawaska\\flutter_app\\lib\\ui\\views\\chamber_module\\widgets\\specials_viewmodel.dart"]}},{"title":"Organize Imports","kind":"source.organizeImports","command":{"title":"Organize Imports","command":"edit.organizeImports","arguments":["c:\\dev\\town-of-madawaska\\flutter_app\\lib\\ui\\views\\chamber_module\\widgets\\specials_viewmodel.dart"]}},{"title":"Convert class to a mixin","kind":"refactor.convert.classToMixin","diagnostics":[],"edit":{"documentChanges":[{"textDocument":{"version":137,"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"},"edits":[{"range":{"start":{"line":3,"character":0},"end":{"line":3,"character":63}},"newText":"mixin SpecialsViewModle implements StreamViewModel<QuerySnapshot> "}]}]}}]}
[9:04:34 AM] [Analyzer] [Info] ==> Content-Length: 244
[9:04:34 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":551,"method":"textDocument/prepareRename","params":{"textDocument":{"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"},"position":{"line":3,"character":19}}}
[9:04:34 AM] [Analyzer] [Info] <== Content-Length: 146
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:04:34 AM] [Analyzer] [Info] <== {"id":551,"jsonrpc":"2.0","result":{"range":{"start":{"line":3,"character":6},"end":{"line":3,"character":23}},"placeholder":"SpecialsViewModle"}}
[9:04:36 AM] [Analyzer] [Info] ==> Content-Length: 267
[9:04:36 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":552,"method":"textDocument/rename","params":{"textDocument":{"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"},"position":{"line":3,"character":19},"newName":"SpecialsViewModel"}}
[9:04:53 AM] [Analyzer] [Info] <== Content-Length: 695
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:04:53 AM] [Analyzer] [Info] <== {"id":552,"jsonrpc":"2.0","result":{"documentChanges":[{"textDocument":{"version":137,"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"},"edits":[{"range":{"start":{"line":3,"character":6},"end":{"line":3,"character":23}},"newText":"SpecialsViewModel"}]},{"textDocument":{"version":215,"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_view.dart"},"edits":[{"range":{"start":{"line":15,"character":32},"end":{"line":15,"character":49}},"newText":"SpecialsViewModel"},{"range":{"start":{"line":14,"character":28},"end":{"line":14,"character":45}},"newText":"SpecialsViewModel"}]}]}}
[9:04:53 AM] [Analyzer] [Info] ==> Content-Length: 470
[9:04:53 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_view.dart","version":216},"contentChanges":[{"range":{"start":{"line":15,"character":32},"end":{"line":15,"character":49}},"rangeLength":17,"text":"SpecialsViewModel"},{"range":{"start":{"line":14,"character":28},"end":{"line":14,"character":45}},"rangeLength":17,"text":"SpecialsViewModel"}]}}
[9:04:53 AM] [Analyzer] [Info] ==> Content-Length: 436
[9:04:53 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart","version":138},"contentChanges":[{"range":{"start":{"line":3,"character":22},"end":{"line":3,"character":23}},"rangeLength":1,"text":""},{"range":{"start":{"line":3,"character":21},"end":{"line":3,"character":21}},"rangeLength":0,"text":"e"}]}}
[9:04:53 AM] [Analyzer] [Info] <== Content-Length: 75
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:04:53 AM] [Analyzer] [Info] <== {"method":"$/analyzerStatus","params":{"isAnalyzing":true},"jsonrpc":"2.0"}
[9:04:53 AM] [Analyzer] [Info] <== Content-Length: 196
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_view.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 1024
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"dart/textDocument/publishClosingLabels","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_view.dart","labels":[{"range":{"start":{"line":14,"character":11},"end":{"line":63,"character":10}},"label":"ViewModelBuilder.reactive"},{"range":{"start":{"line":17,"character":17},"end":{"line":62,"character":11}},"label":"Scaffold"},{"range":{"start":{"line":18,"character":34},"end":{"line":27,"character":13}},"label":"SpeedDial"},{"range":{"start":{"line":21,"character":16},"end":{"line":25,"character":17}},"label":"SpeedDialChild"},{"range":{"start":{"line":28,"character":18},"end":{"line":61,"character":13}},"label":"StreamBuilder"},{"range":{"start":{"line":37,"character":25},"end":{"line":39,"character":19}},"label":"Center"},{"range":{"start":{"line":42,"character":25},"end":{"line":44,"character":19}},"label":"Center"},{"range":{"start":{"line":51,"character":23},"end":{"line":59,"character":17}},"label":"ListView.separated"}]},"jsonrpc":"2.0"}Content-Length: 5530
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"dart/textDocument/publishOutline","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_view.dart","outline":{"element":{"range":{"start":{"line":0,"character":0},"end":{"line":66,"character":0}},"name":"<unit>","kind":"COMPILATION_UNIT"},"range":{"start":{"line":0,"character":0},"end":{"line":66,"character":0}},"codeRange":{"start":{"line":0,"character":0},"end":{"line":66,"character":0}},"children":[{"element":{"range":{"start":{"line":9,"character":6},"end":{"lin…
[9:04:53 AM] [Analyzer] [Info] <== Content-Length: 196
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:04:53 AM] [Analyzer] [Info] <== {"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_card.dart","diagnostics":[]},"jsonrpc":"2.0"}
[9:04:53 AM] [Analyzer] [Info] <== Content-Length: 2160
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"dart/textDocument/publishClosingLabels","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_card.dart","labels":[{"range":{"start":{"line":17,"character":11},"end":{"line":100,"character":5}},"label":"Container"},{"range":{"start":{"line":20,"character":13},"end":{"line":99,"character":7}},"label":"Column"},{"range":{"start":{"line":22,"character":10},"end":{"line":38,"character":11}},"label":"Row"},{"range":{"start":{"line":25,"character":14},"end":{"line":30,"character":15}},"label":"Text"},{"range":{"start":{"line":27,"character":23},"end":{"line":29,"character":17}},"label":"TextStyle"},{"range":{"start":{"line":31,"character":14},"end":{"line":36,"character":15}},"label":"Text"},{"range":{"start":{"line":33,"character":23},"end":{"line":35,"character":17}},"label":"TextStyle"},{"range":{"start":{"line":39,"character":10},"end":{"line":47,"character":11}},"label":"Container"},{"range":{"start":{"line":40,"character":19},"end":{"line":46,"character":13}},"label":"Text"},{"range":{"start":{"line":42,"character":21},"end":{"line":45,"character":15}},"label":"TextStyle"},{"range":{"start":{"line":48,"character":10},"end":{"line":75,"character":11}},"label":"RichText"},{"range":{"start":{"line":49,"character":18},"end":{"line":74,"character":13}},"label":"TextSpan"},{"range":{"start":{"line":51,"character":16},"end":{"line":61,"character":17}},"label":"TextSpan"},{"range":{"start":{"line":55,"character":25},"end":{"line":60,"character":19}},"label":"TextStyle"},{"range":{"start":{"line":63,"character":16},"end":{"line":72,"character":17}},"label":"TextSpan"},{"range":{"start":{"line":67,"character":25},"end":{"line":71,"character":19}},"label":"TextStyle"},{"range":{"start":{"line":76,"character":10},"end":{"line":82,"character":11}},"label":"Row"},{"range":{"start":{"line":83,"character":10},"end":{"line":92,"characte…
[9:04:53 AM] [Analyzer] [Info] <== {"method":"dart/textDocument/publishOutline","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_card.dart","outline":{"element":{"range":{"start":{"line":0,"character":0},"end":{"line":103,"character":0}},"name":"<unit>","kind":"COMPILATION_UNIT"},"range":{"start":{"line":0,"character":0},"end":{"line":103,"character":0}},"codeRange":{"start":{"line":0,"character":0},"end":{"line":103,"character":0}},"children":[{"element":{"range":{"start":{"line":8,"character":6},"end":{"line":8,"character":18}},"name":"SpecialsCard","kind":"CLASS"},"range":{"start":{"line":8,"character":0},"end":{"line":102,"character":1}},"codeRange":{"start":{"line":8,"character":0},"end":{"line":102,"character":1}},"children":[{"element":{"range":{"start":{"line":9,"character":16},"end":{"line":9,"character":23}},"name":"special","kind":"FIELD","returnType":"Special"},"range":{"start":{"line":9,"character":2},"end":{"line":9,"character":24}},"codeRange":{"start":{"line":9,"character":16},"end":{"line":9,"character":23}}},{"element":{"range":{"start":{"line":11,"character":8},"end":{"line":11,"character":14}},"name":"format","kind":"FIELD","returnType":""},"range":{"start":{"line":11,"character":2},"end":{"line":11,"character":44}},"codeRange":{"start":{"line":11,"character":8},"end":{"line":11,"character":43}}},{"element":{"range":{"start":{"line":13,"character":2},"end":{"line":13,"character":14}},"name":"SpecialsCard","kind":"CONSTRUCTOR","parameters":"({Key key, @required this.special})"},"range":{"start":{"line":13,"character":2},"end":{"line":13,"character":68}},"codeRange":{"start":{"line":13,"character":2},"end":{"line":13,"character":68}}},{"element":{"range":{"start":{"line":16,"character":9},"end":{"line":16,"character":14}},"name":"build","kind":"METHOD","parameters":"(BuildContext context)","returnType":"Widget"},"range":{"start":{"line":15,"character":2},"end":{"line":101,"character":3}},"codeRange":{"start":{"line":16,"c…
[9:04:53 AM] [Analyzer] [Info] <== Content-Length: 201
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:04:53 AM] [Analyzer] [Info] <== {"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart","diagnostics":[]},"jsonrpc":"2.0"}
[9:04:53 AM] [Analyzer] [Info] <== Content-Length: 203
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"dart/textDocument/publishClosingLabels","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart","labels":[]},"jsonrpc":"2.0"}Content-Length: 1102
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"dart/textDocument/publishOutline","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart","outline":{"element":{"range":{"start":{"line":0,"character":0},"end":{"line":10,"character":0}},"name":"<unit>","kind":"COMPILATION_UNIT"},"range":{"start":{"line":0,"character":0},"end":{"line":10,"character":0}},"codeRange":{"start":{"line":0,"character":0},"end":{"line":10,"character":0}},"children":[{"element":{"range":{"start":{"line":3,"character":6},"end":{"line":3,"character":23}},"name":"SpecialsViewModel","kind":"CLASS"},"range":{"start":{"line":3,"character":0},"end":{"line":9,"character":1}},"codeRange":{"start":{"line":3,"character":0},"end":{"line":9,"character":1}},"children":[{"element":{"range":{"start":{"line":5,"character":28},"end":{"line":5,"character":34}},"name":"stream","kind":"GETTER","returnType":"Stream<QuerySnapshot>"},"range":{"start":{"line":4,"character":2},"end":{"line":8,"character":19}},"codeRange":{"start":{"line":5,"character":2},"end":{"line":8,"character":19}}}]}]}},"jsonrpc":"2.0"}Content-Length: 1187
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"dart/textDocument/publishFlutterOutline","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart","outline":{"kind":"DART_ELEMENT","dartElement":{"range":{"start":{"line":0,"character":0},"end":{"line":10,"character":0}},"name":"<unit>","kind":"COMPILATION_UNIT"},"range":{"start":{"line":0,"character":0},"end":{"line":10,"character":0}},"codeRange":{"start":{"line":0,"c…
[9:04:53 AM] [Analyzer] [Info] ==> Content-Length: 206
[9:04:53 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":553,"method":"textDocument/foldingRange","params":{"textDocument":{"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"}}}
[9:04:53 AM] [Analyzer] [Info] <== Content-Length: 184
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"id":553,"jsonrpc":"2.0","result":[{"startLine":3,"startCharacter":64,"endLine":9,"endCharacter":0},{"startLine":0,"startCharacter":6,"endLine":1,"endCharacter":38,"kind":"imports"}]}
[9:04:53 AM] [Analyzer] [Info] ==> Content-Length: 208
[9:04:53 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":554,"method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"}}}
[9:04:53 AM] [Analyzer] [Info] <== Content-Length: 471
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:04:53 AM] [Analyzer] [Info] <== {"id":554,"jsonrpc":"2.0","result":[{"name":"SpecialsViewModel","kind":5,"deprecated":false,"range":{"start":{"line":3,"character":0},"end":{"line":9,"character":1}},"selectionRange":{"start":{"line":3,"character":6},"end":{"line":3,"character":23}},"children":[{"name":"stream","kind":7,"deprecated":false,"range":{"start":{"line":5,"character":2},"end":{"line":8,"character":19}},"selectionRange":{"start":{"line":5,"character":28},"end":{"line":5,"character":34}}}]}]}
Mon Feb 08 2021 [09:04:57 GMT-0500 (Eastern Standard Time)] Log file ended
FAST
!! PLEASE REVIEW THIS LOG FOR SENSITIVE INFORMATION BEFORE SHARING !!
Dart Code extension: 3.19.2
Flutter extension: 3.19.0 (activated)
App: Visual Studio Code
Version: 1.53.0
Platform: win
Workspace type: Flutter
Analyzer type: LSP
Multi-root?: false
Dart SDK:
Loc: C:\Users\thesl\fvm\versions\stable\bin\cache\dart-sdk
Ver: 2.10.5
Flutter SDK:
Loc: C:\Users\thesl\fvm\versions\stable
Ver: 1.22.6
HTTP_PROXY: undefined
NO_PROXY: 127.0.0.1
Logging Categories:
General, Analyzer, CommandProcesses
Mon Feb 08 2021 [09:10:36 GMT-0500 (Eastern Standard Time)] Log file started
[9:10:37 AM] [Analyzer] [Info] ==> Content-Length: 236
[9:10:37 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":619,"method":"textDocument/hover","params":{"textDocument":{"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"},"position":{"line":3,"character":20}}}
[9:10:37 AM] [Analyzer] [Info] <== Content-Length: 313
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:10:37 AM] [Analyzer] [Info] <== {"id":619,"jsonrpc":"2.0","result":{"contents":{"kind":"markdown","value":"```dart\nclass SpecialsViewModle extends StreamViewModel<QuerySnapshot>\n```\n*package:townofmadawaska/ui/views/chamber_module/widgets/specials_viewmodel.dart*"},"range":{"start":{"line":3,"character":6},"end":{"line":3,"character":23}}}}
[9:10:37 AM] [Analyzer] [Info] ==> Content-Length: 248
[9:10:37 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":620,"method":"textDocument/documentHighlight","params":{"textDocument":{"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"},"position":{"line":3,"character":21}}}
[9:10:37 AM] [Analyzer] [Info] <== Content-Length: 114
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:10:37 AM] [Analyzer] [Info] <== {"id":620,"jsonrpc":"2.0","result":[{"range":{"start":{"line":3,"character":6},"end":{"line":3,"character":23}}}]}
[9:10:38 AM] [Analyzer] [Info] ==> Content-Length: 309
[9:10:38 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":621,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"},"range":{"start":{"line":3,"character":21},"end":{"line":3,"character":21}},"context":{"diagnostics":[]}}}
[9:10:38 AM] [Analyzer] [Info] <== Content-Length: 967
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:10:38 AM] [Analyzer] [Info] <== {"id":621,"jsonrpc":"2.0","result":[{"title":"Sort Members","kind":"source.sortMembers","command":{"title":"Sort Members","command":"edit.sortMembers","arguments":["c:\\dev\\town-of-madawaska\\flutter_app\\lib\\ui\\views\\chamber_module\\widgets\\specials_viewmodel.dart"]}},{"title":"Organize Imports","kind":"source.organizeImports","command":{"title":"Organize Imports","command":"edit.organizeImports","arguments":["c:\\dev\\town-of-madawaska\\flutter_app\\lib\\ui\\views\\chamber_module\\widgets\\specials_viewmodel.dart"]}},{"title":"Convert class to a mixin","kind":"refactor.convert.classToMixin","diagnostics":[],"edit":{"documentChanges":[{"textDocument":{"version":146,"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"},"edits":[{"range":{"start":{"line":3,"character":0},"end":{"line":3,"character":63}},"newText":"mixin SpecialsViewModle implements StreamViewModel<QuerySnapshot> "}]}]}}]}
[9:10:38 AM] [Analyzer] [Info] ==> Content-Length: 244
[9:10:38 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":622,"method":"textDocument/prepareRename","params":{"textDocument":{"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"},"position":{"line":3,"character":21}}}
[9:10:38 AM] [Analyzer] [Info] <== Content-Length: 146
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:10:38 AM] [Analyzer] [Info] <== {"id":622,"jsonrpc":"2.0","result":{"range":{"start":{"line":3,"character":6},"end":{"line":3,"character":23}},"placeholder":"SpecialsViewModle"}}
[9:10:40 AM] [Analyzer] [Info] ==> Content-Length: 267
[9:10:40 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":623,"method":"textDocument/rename","params":{"textDocument":{"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"},"position":{"line":3,"character":21},"newName":"SpecialsViewModel"}}
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 695
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:10:40 AM] [Analyzer] [Info] <== {"id":623,"jsonrpc":"2.0","result":{"documentChanges":[{"textDocument":{"version":146,"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"},"edits":[{"range":{"start":{"line":3,"character":6},"end":{"line":3,"character":23}},"newText":"SpecialsViewModel"}]},{"textDocument":{"version":228,"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_view.dart"},"edits":[{"range":{"start":{"line":15,"character":32},"end":{"line":15,"character":49}},"newText":"SpecialsViewModel"},{"range":{"start":{"line":14,"character":28},"end":{"line":14,"character":45}},"newText":"SpecialsViewModel"}]}]}}
[9:10:40 AM] [Analyzer] [Info] ==> Content-Length: 470
[9:10:40 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_view.dart","version":229},"contentChanges":[{"range":{"start":{"line":15,"character":32},"end":{"line":15,"character":49}},"rangeLength":17,"text":"SpecialsViewModel"},{"range":{"start":{"line":14,"character":28},"end":{"line":14,"character":45}},"rangeLength":17,"text":"SpecialsViewModel"}]}}
[9:10:40 AM] [Analyzer] [Info] ==> Content-Length: 436
[9:10:40 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart","version":147},"contentChanges":[{"range":{"start":{"line":3,"character":22},"end":{"line":3,"character":23}},"rangeLength":1,"text":""},{"range":{"start":{"line":3,"character":21},"end":{"line":3,"character":21}},"rangeLength":0,"text":"e"}]}}
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 75
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:10:40 AM] [Analyzer] [Info] <== {"method":"$/analyzerStatus","params":{"isAnalyzing":true},"jsonrpc":"2.0"}
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 196
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:10:40 AM] [Analyzer] [Info] <== {"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_view.dart","diagnostics":[]},"jsonrpc":"2.0"}
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 1024
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"dart/textDocument/publishClosingLabels","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_view.dart","labels":[{"range":{"start":{"line":14,"character":11},"end":{"line":63,"character":10}},"label":"ViewModelBuilder.reactive"},{"range":{"start":{"line":17,"character":17},"end":{"line":62,"character":11}},"label":"Scaffold"},{"range":{"start":{"line":18,"character":34},"end":{"line":27,"character":13}},"label":"SpeedDial"},{"range":{"start":{"line":21,"character":16},"end":{"line":25,"character":17}},"label":"SpeedDialChild"},{"range":{"start":{"line":28,"character":18},"end":{"line":61,"character":13}},"label":"StreamBuilder"},{"range":{"start":{"line":37,"character":25},"end":{"line":39,"character":19}},"label":"Center"},{"range":{"start":{"line":42,"character":25},"end":{"line":44,"character":19}},"label":"Center"},{"range":{"start":{"line":51,"character":23},"end":{"line":59,"character":17}},"label":"ListView.separated"}]},"jsonrpc":"2.0"}Content-Length: 5530
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"dart/textDocument/publishOutline","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_view.dart","outline":{"element":{"range":{"start":{"line":0,"character":0},"end":{"line":66,"character":0}},"name":"<unit>","kind":"COMPILATION_UNIT"},"range":{"start":{"line":0,"character":0},"end":{"line":66,"character":0}},"codeRange":{"start":{"line":0,"character":0},"end":{"line":66,"character":0}},"children":[{"element":{"range":{"start":{"line":9,"character":6},"end":{"line":9,"character":18}},"name":"SpecialsView","kind":"CLASS"},"range":{"start":{"line":9,"character":0},"end":{"line":65,"character":1}},"codeRange":{"start":{"line":9,"character":0},"end":{"line":65,"character":1}},"children":[{"element":{"range":{"start":{"line":10,"character…
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 196
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:10:40 AM] [Analyzer] [Info] <== {"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_card.dart","diagnostics":[]},"jsonrpc":"2.0"}
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 2160
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"dart/textDocument/publishClosingLabels","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_card.dart","labels":[{"range":{"start":{"line":17,"character":11},"end":{"line":100,"character":5}},"label":"Container"},{"range":{"start":{"line":20,"character":13},"end":{"line":99,"character":7}},"label":"Column"},{"range":{"start":{"line":22,"character":10},"end":{"line":38,"character":11}},"label":"Row"},{"range":{"start":{"line":25,"character":14},"end":{"line":30,"character":15}},"label":"Text"},{"range":{"start":{"line":27,"character":23},"end":{"line":29,"character":17}},"label":"TextStyle"},{"range":{"start":{"line":31,"character":14},"end":{"line":36,"character":15}},"label":"Text"},{"range":{"start":{"line":33,"character":23},"end":{"line":35,"character":17}},"label":"TextStyle"},{"range":{"start":{"line":39,"character":10},"end":{"line":47,"character":11}},"label":"Container"},{"range":{"start":{"line":40,"character":19},"end":{"line":46,"character":13}},"label":"Text"},{"range":{"start":{"line":42,"character":21},"end":{"line":45,"character":15}},"label":"TextStyle"},{"range":{"start":{"line":48,"character":10},"end":{"line":75,"character":11}},"label":"RichText"},{"range":{"start":{"line":49,"character":18},"end":{"line":74,"character":13}},"label":"TextSpan"},{"range":{"start":{"line":51,"character":16},"end":{"line":61,"character":17}},"label":"TextSpan"},{"range":{"start":{"line":55,"character":25},"end":{"line":60,"character":19}},"label":"TextStyle"},{"range":{"start":{"line":63,"character":16},"end":{"line":72,"character":17}},"label":"TextSpan"},{"range":{"start":{"line":67,"character":25},"end":{"line":71,"character":19}},"label":"TextStyle"},{"range":{"start":{"line":76,"character":10},"end":{"line":82,"character":11}},"label":"Row"},{"range":{"start":{"line":83,"character":10},"end":{"line":92,"characte…
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 201
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 203
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"dart/textDocument/publishClosingLabels","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart","labels":[]},"jsonrpc":"2.0"}Content-Length: 1102
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"dart/textDocument/publishOutline","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart","outline":{"element":{"range":{"start":{"line":0,"character":0},"end":{"line":10,"character":0}},"name":"<unit>","kind":"COMPILATION_UNIT"},"range":{"start":{"line":0,"character":0},"end":{"line":10,"character":0}},"codeRange":{"start":{"line":0,"character":0},"end":{"line":10,"character":0}},"children":[{"element":{"range":{"start":{"line":3,"character":6},"end":{"line":3,"character":23}},"name":"SpecialsViewModel","kind":"CLASS"},"range":{"start":{"line":3,"character":0},"end":{"line":9,"character":1}},"codeRange":{"start":{"line":3,"character":0},"end":{"line":9,"character":1}},"children":[{"element":{"range":{"start":{"line":5,"character":28},"end":{"line":5,"character":34}},"name":"stream","kind":"GETTER","returnType":"Stream<QuerySnapshot>"},"range":{"start":{"line":4,"character":2},"end":{"line":8,"character":19}},"codeRange":{"start":{"line":5,"character":2},"end":{"line":8,"character":19}}}]}]}},"jsonrpc":"2.0"}Content-Length: 1187
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"dart/textDocument/publishFlutterOutline","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel…
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 174
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:10:40 AM] [Analyzer] [Info] <== {"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/core/config/kid_program.dart","diagnostics":[]},"jsonrpc":"2.0"}
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 169
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/core/router/router.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 172
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/core/router/router.gr.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 175
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:10:40 AM] [Analyzer] [Info] <== {"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/core/utils/notifications.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 182
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/core/viewmodels/posts_viewmodel.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 212
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/features/recreation_module/presenter/page/confirmation_screen.dart","diagnostics":[]},"jsonrpc":"2.0"}
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 214
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/features/recreation_module/presenter/page/create_edit_kids_page.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 212
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/features/recreation_module/presenter/page/create_edit_program.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 388
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/features/recreation_module/presenter/page/kid_detail_screen.dart","diagnostics":[{"range":{"start":{"line":50,"character":7},"end":{"line":50,"character":25}},"severity":3,"code":"prefer_final_fields","source":"dart","message":"Private field could be final."}]},"jsonrpc":"2.0"}
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 386
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/features/recreation_module/presenter/page/program_details.dart","diagnostics":[{"range":{"start":{"line":43,"character":7},"end":{"line":43,"character":25}},"severity":3,"code":"prefer_final_fields","source":"dart","message":"Private field could be final."}]},"jsonrpc":"2.0"}Content-Length: 210
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/features/recreation_module/presenter/page/program_kids_page.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 214
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/features/recreation_module/presenter/page/program_kid_list_page.dart","diagnostics":[]},"jsonrpc":"2.0"}
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 208
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/features/recreation_module/presenter/page/recreation_page.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 205
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/features/recreation_module/presenter/widgets/news_view.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 177
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/injection_container.config.dart","diagnostics":[]},"jsonrpc":"2.0"}
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 170
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/injection_container.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 155
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/main.dart","diagnostics":[]},"jsonrpc":"2.0"}
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 172
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/services/auth_service.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 174
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/setup_dialog_service.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 176
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/setup_snackbar_service.dart","diagnostics":[]},"jsonrpc":"2.0"}
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 189
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:10:40 AM] [Analyzer] [Info] <== {"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/business_apply.dart","diagnostics":[]},"jsonrpc":"2.0"}
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 199
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/business_apply_viewmodel.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 188
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/business_edit.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 198
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/business_edit_viewmodel.dart","diagnostics":[]},"jsonrpc":"2.0"}
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 194
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:10:40 AM] [Analyzer] [Info] <== {"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/chamber_module_view.dart","diagnostics":[]},"jsonrpc":"2.0"}
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 198
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/businesses_view.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 203
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:10:40 AM] [Analyzer] [Info] <== {"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/businesses_viewmodel.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 193
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/posts_view.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 198
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/create_edit_post/create_edit_post_view.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 203
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/create_edit_post/create_edit_post_viewmodel.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 174
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/home/home_view.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 179
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/home/home_viewmodel.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 179
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/home/widgets/drawer.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 174
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/l…
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 175
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/welcome/welcome.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 171
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/widgets/post_card.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 76
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"$/analyzerStatus","params":{"isAnalyzing":false},"jsonrpc":"2.0"}
[9:10:40 AM] [Analyzer] [Info] ==> Content-Length: 206
[9:10:40 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":624,"method":"textDocument/foldingRange","params":{"textDocument":{"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"}}}
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 184
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:10:40 AM] [Analyzer] [Info] <== {"id":624,"jsonrpc":"2.0","result":[{"startLine":3,"startCharacter":64,"endLine":9,"endCharacter":0},{"startLine":0,"startCharacter":6,"endLine":1,"endCharacter":38,"kind":"imports"}]}
[9:10:40 AM] [Analyzer] [Info] ==> Content-Length: 309
[9:10:40 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":625,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"},"range":{"start":{"line":3,"character":22},"end":{"line":3,"character":22}},"context":{"diagnostics":[]}}}
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 967
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:10:40 AM] [Analyzer] [Info] <== {"id":625,"jsonrpc":"2.0","result":[{"title":"Sort Members","kind":"source.sortMembers","command":{"title":"Sort Members","command":"edit.sortMembers","arguments":["c:\\dev\\town-of-madawaska\\flutter_app\\lib\\ui\\views\\chamber_module\\widgets\\specials_viewmodel.dart"]}},{"title":"Organize Imports","kind":"source.organizeImports","command":{"title":"Organize Imports","command":"edit.organizeImports","arguments":["c:\\dev\\town-of-madawaska\\flutter_app\\lib\\ui\\views\\chamber_module\\widgets\\specials_viewmodel.dart"]}},{"title":"Convert class to a mixin","kind":"refactor.convert.classToMixin","diagnostics":[],"edit":{"documentChanges":[{"textDocument":{"version":147,"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"},"edits":[{"range":{"start":{"line":3,"character":0},"end":{"line":3,"character":63}},"newText":"mixin SpecialsViewModel implements StreamViewModel<QuerySnapshot> "}]}]}}]}
[9:10:40 AM] [Analyzer] [Info] ==> Content-Length: 208
[9:10:40 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":626,"method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"}}}
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 471
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:10:40 AM] [Analyzer] [Info] <== {"id":626,"jsonrpc":"2.0","result":[{"name":"SpecialsViewModel","kind":5,"deprecated":false,"range":{"start":{"line":3,"character":0},"end":{"line":9,"character":1}},"selectionRange":{"start":{"line":3,"character":6},"end":{"line":3,"character":23}},"children":[{"name":"stream","kind":7,"deprecated":false,"range":{"start":{"line":5,"character":2},"end":{"line":8,"character":19}},"selectionRange":{"start":{"line":5,"character":28},"end":{"line":5,"character":34}}}]}]}
Mon Feb 08 2021 [09:10:42 GMT-0500 (Eastern Standard Time)] Log file ended
This week I found a performance bug in the LSP server that may be related. The issue was a combination of a few things:
These things together can result in the server doing unnecessary work right when you'd want it to be doing other things (such as servicing a Ctrl+Click, or handling a file you've just opened).
The fix for that has landed in Flutter's master branch. I wonder if anyone seeing these issues on is able to test whether temporarily switching to master seems to resolve this? (note: the first analysis of a project after changing branch _will_ be slower, as the Flutter SDKs are seen for the first time). This appears to have helped for at least one user.
Do you know which version of dart and dart-code might contain improvements around this issue? I'm seeing some pretty rough slowness on flutter 2.0.4, dart 2.12.2. renaming a symbol in a small file but a large codebase (80K+ lines of dart w/o codegen'd files, with codegen'd files 290K+ lines).
Here's the analyzer logs, hopefully this helps:
I performed a Rename Symbol action, typed the name in and waited ~27 seconds for it to complete. This was on a somewhat fresh launch of the project in VS Code. I hadn't done any real editing of the project files since opening the project 5-10 minutes before running this experiment.
Note: renaming the symbol back to the original name took maybe 1 second.
[3:23:12 PM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":19,"method":"textDocument/rename","params":{"textDocument":{"uri":"file:///Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"},"position":{"line":14,"character":54},"newName":"fooo"}}
[3:23:39 PM] [Analyzer] [Info] <== Content-Length: 764
Content-Type: application/vscode-jsonrpc; charset=utf-8
Logs
!! PLEASE REVIEW THIS LOG FOR SENSITIVE INFORMATION BEFORE SHARING !!
Dart Code extension: 3.22.0
Flutter extension: 3.22.0 (activated)
App: Visual Studio Code
Version: 1.56.0
Platform: mac
Workspace type: Dart, Flutter
Analyzer type: LSP
Multi-root?: false
Dart SDK:
Loc: /Users/sammoore/fvm/versions/2.0.4/bin/cache/dart-sdk
Ver: 2.12.2
Flutter SDK:
Loc: /Users/sammoore/fvm/versions/2.0.4
Ver: 2.0.4
HTTP_PROXY: undefined
NO_PROXY: undefined
Logging Categories:
General, Analyzer
Thu May 06 2021 [15:23:01 GMT-0400 (Eastern Daylight Time)] Log file started
[3:23:05 PM] [Analyzer] [Info] ==> Content-Length: 315
[3:23:05 PM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":13,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"},"range":{"start":{"line":14,"character":57},"end":{"line":14,"character":57}},"context":{"diagnostics":[]}}}
[3:23:05 PM] [Analyzer] [Info] <== Content-Length: 528
Content-Type: application/vscode-jsonrpc; charset=utf-8
[3:23:05 PM] [Analyzer] [Info] <== {"id":13,"jsonrpc":"2.0","result":[{"title":"Sort Members","kind":"source.sortMembers","command":{"title":"Sort Members","command":"edit.sortMembers","arguments":["/Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"]}},{"title":"Organize Imports","kind":"source.organizeImports","command":{"title":"Organize Imports","command":"edit.organizeImports","arguments":["/Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"]}}]}
[3:23:06 PM] [Analyzer] [Info] ==> Content-Length: 315
[3:23:06 PM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":14,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"},"range":{"start":{"line":10,"character":46},"end":{"line":10,"character":46}},"context":{"diagnostics":[]}}}
[3:23:06 PM] [Analyzer] [Info] <== Content-Length: 528
Content-Type: application/vscode-jsonrpc; charset=utf-8
[3:23:06 PM] [Analyzer] [Info] <== {"id":14,"jsonrpc":"2.0","result":[{"title":"Sort Members","kind":"source.sortMembers","command":{"title":"Sort Members","command":"edit.sortMembers","arguments":["/Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"]}},{"title":"Organize Imports","kind":"source.organizeImports","command":{"title":"Organize Imports","command":"edit.organizeImports","arguments":["/Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"]}}]}
[3:23:07 PM] [Analyzer] [Info] ==> Content-Length: 241
[3:23:07 PM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":15,"method":"textDocument/hover","params":{"textDocument":{"uri":"file:///Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"},"position":{"line":14,"character":48}}}
[3:23:07 PM] [Analyzer] [Info] <== Content-Length: 3845
Content-Type: application/vscode-jsonrpc; charset=utf-8
[3:23:07 PM] [Analyzer] [Info] <== {"id":15,"jsonrpc":"2.0","result":{"contents":{"kind":"markdown","value":"```dart\nabstract class BuildContext\n```\n*package:flutter/src/widgets/framework.dart*\n\n---\nA handle to the location of a widget in the widget tree.\n\nThis class presents a set of methods that can be used from\n[StatelessWidget.build] methods and from methods on [State] objects.\n\n[BuildContext] objects are passed to [WidgetBuilder] functions (such as\n[StatelessWidget.build]), and are available from the [State.context] member.\nSome static functions (e.g. [showDialog], [Theme.of], and so forth) also\ntake build contexts so that they can act on behalf of the calling widget, or\nobtain data specifically for the given context.\n\nEach widget has its own [BuildContext], which becomes the parent of the\nwidget returned by the [StatelessWidget.build] or [State.build] function.\n(And similarly, the parent of any children for [RenderObjectWidget]s.)\n\nIn particular, this means that within a build method, the build context of\nthe widget of the build method is not the same as the build context of the\nwidgets returned by that build method. This can lead to some tricky cases.\nFor example, [Theme.of(context)] looks for the nearest enclosing [Theme] of\nthe given build context. If a build method for a widget Q includes a [Theme]\nwithin its returned widget tree, and attempts to use [Theme.of] passing its\nown context, the build method for Q will not find that [Theme] object. It\nwill instead find whatever [Theme] was an ancestor to the widget Q. If the\nbuild context for a subpart of the returned tree is needed, a [Builder]\nwidget can be used: the build context passed to the [Builder.builder]\ncallback will be that of the [Builder] itself.\n\nFor example, in the following snippet, the [ScaffoldState.showBottomSheet]\nmethod is called on the [Scaffold] widget that the build method itself\ncreates. If a [Builder] had not been used, and instead the `context`\nargument of the build method itself…
[3:23:08 PM] [Analyzer] [Info] ==> Content-Length: 253
[3:23:08 PM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":16,"method":"textDocument/documentHighlight","params":{"textDocument":{"uri":"file:///Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"},"position":{"line":14,"character":54}}}
[3:23:08 PM] [Analyzer] [Info] <== Content-Length: 276
Content-Type: application/vscode-jsonrpc; charset=utf-8
[3:23:08 PM] [Analyzer] [Info] <== {"id":16,"jsonrpc":"2.0","result":[{"range":{"start":{"line":14,"character":52},"end":{"line":14,"character":56}}},{"range":{"start":{"line":15,"character":15},"end":{"line":15,"character":19}}},{"range":{"start":{"line":16,"character":69},"end":{"line":16,"character":73}}}]}
[3:23:08 PM] [Analyzer] [Info] ==> Content-Length: 315
[3:23:08 PM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":17,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"},"range":{"start":{"line":14,"character":54},"end":{"line":14,"character":54}},"context":{"diagnostics":[]}}}
[3:23:08 PM] [Analyzer] [Info] <== Content-Length: 903
Content-Type: application/vscode-jsonrpc; charset=utf-8
[3:23:08 PM] [Analyzer] [Info] <== {"id":17,"jsonrpc":"2.0","result":[{"title":"Sort Members","kind":"source.sortMembers","command":{"title":"Sort Members","command":"edit.sortMembers","arguments":["/Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"]}},{"title":"Organize Imports","kind":"source.organizeImports","command":{"title":"Organize Imports","command":"edit.organizeImports","arguments":["/Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"]}},{"title":"Remove type annotation","kind":"refactor.remove.typeAnnotation","diagnostics":[],"edit":{"documentChanges":[{"textDocument":{"version":1,"uri":"file:///Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"},"edits":[{"range":{"start":{"line":14,"character":39},"end":{"line":14,"character":52}},"newText":""}]}]}}]}
[3:23:09 PM] [Analyzer] [Info] ==> Content-Length: 249
[3:23:09 PM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":18,"method":"textDocument/prepareRename","params":{"textDocument":{"uri":"file:///Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"},"position":{"line":14,"character":54}}}
[3:23:09 PM] [Analyzer] [Info] <== Content-Length: 135
Content-Type: application/vscode-jsonrpc; charset=utf-8
[3:23:09 PM] [Analyzer] [Info] <== {"id":18,"jsonrpc":"2.0","result":{"range":{"start":{"line":14,"character":52},"end":{"line":14,"character":56}},"placeholder":"from"}}
[3:23:12 PM] [Analyzer] [Info] ==> Content-Length: 259
[3:23:12 PM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":19,"method":"textDocument/rename","params":{"textDocument":{"uri":"file:///Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"},"position":{"line":14,"character":54},"newName":"fooo"}}
[3:23:39 PM] [Analyzer] [Info] <== Content-Length: 764
Content-Type: application/vscode-jsonrpc; charset=utf-8
[3:23:39 PM] [Analyzer] [Info] <== {"id":19,"jsonrpc":"2.0","result":{"documentChanges":[{"textDocument":{"version":1,"uri":"file:///Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"},"edits":[{"range":{"start":{"line":16,"character":69},"end":{"line":16,"character":73}},"newText":"fooo"},{"range":{"start":{"line":15,"character":15},"end":{"line":15,"character":19}},"newText":"fooo"},{"range":{"start":{"line":14,"character":52},"end":{"line":14,"character":56}},"newText":"fooo"}]},{"textDocument":{"version":null,"uri":"file:///Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile.dart"},"edits":[{"range":{"start":{"line":16,"character":53},"end":{"line":16,"character":57}},"newText":"fooo"}]}]}}
[3:23:39 PM] [Analyzer] [Info] ==> Content-Length: 1126
[3:23:39 PM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"file:///Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile.dart","languageId":"dart","version":1,"text":"import 'package:betterment_flutter/core/core.dart';\nimport 'package:betterment_flutter/features/settings/personal_profile/coordinator/personal_profile_coordinator.dart';\nimport 'package:betterment_flutter/features/settings/personal_profile/personal_profile_bloc.dart';\nimport 'package:betterment_flutter/utils/utils.dart';\nimport 'package:flutter/material.dart';\nimport 'package:flutter_bloc/flutter_bloc.dart';\n\nclass PersonalProfile extends Feature {\n const PersonalProfile({Key key}) : super(key: key);\n\n @override\n Squad get owner => Squad.experience;\n\n @override\n Widget buildFeature(BuildContext context) {\n return BlocProvider(\n create: (context) => PersonalProfileBloc.build(from: context),\n child: CoordinatorNavigator(\n builder: (navigatorGetter) => PersonalProfileCoordinator(navigatorGetter: navigatorGetter),\n ),\n );\n }\n}\n"}}}
[3:23:39 PM] [Analyzer] [Info] ==> Content-Length: 872
[3:23:39 PM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart","version":2},"contentChanges":[{"range":{"start":{"line":16,"character":72},"end":{"line":16,"character":73}},"rangeLength":1,"text":""},{"range":{"start":{"line":16,"character":70},"end":{"line":16,"character":71}},"rangeLength":1,"text":"oo"},{"range":{"start":{"line":15,"character":18},"end":{"line":15,"character":19}},"rangeLength":1,"text":""},{"range":{"start":{"line":15,"character":16},"end":{"line":15,"character":17}},"rangeLength":1,"text":"oo"},{"range":{"start":{"line":14,"character":55},"end":{"line":14,"character":56}},"rangeLength":1,"text":""},{"range":{"start":{"line":14,"character":53},"end":{"line":14,"character":54}},"rangeLength":1,"text":"oo"}]}}
[3:23:39 PM] [Analyzer] [Info] ==> Content-Length: 335
[3:23:39 PM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile.dart","version":2},"contentChanges":[{"range":{"start":{"line":16,"character":53},"end":{"line":16,"character":57}},"rangeLength":4,"text":"fooo"}]}}
[3:23:39 PM] [Analyzer] [Info] ==> Content-Length: 212
[3:23:39 PM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":20,"method":"textDocument/semanticTokens/full","params":{"textDocument":{"uri":"file:///Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile.dart"}}}
[3:23:39 PM] [Analyzer] [Info] ==> Content-Length: 253
[3:23:39 PM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":21,"method":"textDocument/documentHighlight","params":{"textDocument":{"uri":"file:///Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"},"position":{"line":14,"character":55}}}
[3:23:39 PM] [Analyzer] [Info] ==> Content-Length: 210
[3:23:39 PM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":22,"method":"textDocument/foldingRange","params":{"textDocument":{"uri":"file:///Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"}}}
[3:23:39 PM] [Analyzer] [Info] ==> Content-Length: 315
[3:23:39 PM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":23,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"},"range":{"start":{"line":14,"character":55},"end":{"line":14,"character":55}},"context":{"diagnostics":[]}}}
[3:23:39 PM] [Analyzer] [Info] ==> Content-Length: 217
[3:23:39 PM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":24,"method":"textDocument/semanticTokens/full","params":{"textDocument":{"uri":"file:///Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"}}}
Thu May 06 2021 [15:23:42 GMT-0400 (Eastern Daylight Time)] Log file ended
@samandmoore are you able to reliably reproduce this? How big is your project?
I'm still struggling to repro this. I've been trying on flutter_gallery and I've tried wiping out ~/.dartServer to ensure there are no caches when testing. It only seems to take a few seconds renaming in there though.
@DanTup I work on the same codebase as @samandmoore and am able to reliably reproduce extremely slow (sometimes infinite) interactions. Unfortunately it's made VSCode nearly impossible to use in some fashions (for instance, I can't CMD+click into definitions, I need to manually navigate by searching for them because the CMD+click just hangs). @samandmoore mentioned that for size, we're at about 80K lines of dart.
Here are my logs from attempting a simple local variable rename. I hit the refactor hotkey (shift+f6 for me because I use Intellij key bindings) and things hung infinitely (was never able to rename). Gave up after like 30 seconds of waiting, and here are the logs:
Logs
Dart Code extension: 3.22.0
Flutter extension: 3.22.0 (activated)
App: Visual Studio Code
Version: 1.56.2
Platform: mac
Workspace type: Dart, Flutter
Analyzer type: LSP
Multi-root?: false
Dart SDK:
Loc: /Users/brandontrautmann/fvm/versions/2.2.0-10.2.pre/bin/cache/dart-sdk
Ver: 2.13.0-211.13.beta
Flutter SDK:
Loc: /Users/brandontrautmann/fvm/versions/2.2.0-10.2.pre
Ver: 2.2.0-10.2.pre
HTTP_PROXY: undefined
NO_PROXY: undefined
Logging Categories:
General, Analyzer
Tue May 18 2021 [09:52:52 GMT-0400 (Eastern Daylight Time)] Log file started
[9:52:53 AM] [Analyzer] [Info] ==> Content-Length: 222
[9:52:53 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":491,"method":"textDocument/hover","params":{"textDocument":{"uri":"file:///Users/brandontrautmann/src/mobile/flutter/app/test/features/signup/signup_test.dart"},"position":{"line":70,"character":16}}}
[9:52:53 AM] [Analyzer] [Info] ==> Content-Length: 64
[9:52:53 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":491}}
[9:52:53 AM] [Analyzer] [Info] ==> Content-Length: 234
[9:52:53 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":492,"method":"textDocument/documentHighlight","params":{"textDocument":{"uri":"file:///Users/brandontrautmann/src/mobile/flutter/app/test/features/signup/signup_test.dart"},"position":{"line":70,"character":17}}}
[9:52:53 AM] [Analyzer] [Info] ==> Content-Length: 296
[9:52:53 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":493,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///Users/brandontrautmann/src/mobile/flutter/app/test/features/signup/signup_test.dart"},"range":{"start":{"line":70,"character":12},"end":{"line":70,"character":22}},"context":{"diagnostics":[]}}}
[9:52:53 AM] [Analyzer] [Info] ==> Content-Length: 64
[9:52:53 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":476}}
[9:52:54 AM] [Analyzer] [Info] ==> Content-Length: 230
[9:52:54 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":494,"method":"textDocument/prepareRename","params":{"textDocument":{"uri":"file:///Users/brandontrautmann/src/mobile/flutter/app/test/features/signup/signup_test.dart"},"position":{"line":70,"character":22}}}
Tue May 18 2021 [09:53:26 GMT-0400 (Eastern Daylight Time)] Log file ended
Ya if you use VSCode in daily use with Flutter, you will see this constantly. I very often would see it in new files that didn't even have any references, renaming a simple variable would just hang, sometimes not completing at all.
It actually got so bad I ended up fearing renaming, and started opting for manual find and replaces if I new it was all in a single file. Eventually I just switched back to Android Studio, because it's just not a quality work environment when you are constantly sitting there waiting for these actions to complete.
@btrautmann
Unfortunately it's made VSCode nearly impossible to use in some fashions (for instance, I can't CMD+click into definitions,
This sounds like this issue mentioned above, although it should be fixed in Flutter's beta (and newer) channels. Your logs suggest you're on 2.2.0-10.2, but I can't find exactly what hash that version that is - is it a recent build? Have you seen it recently?
Your log only shows traffic _to_ the server, nothing from it - which certainly makes it seem like the server is busy. Are you able to provide a more complete log, that includes the last things _from_ the server (they will contain <== instead of ==>) as it may be useful to understand what the last requests to the server were when it seemed to stop responding.
@esDotDev
Eventually I just switched back to Android Studio, because it's just not a quality work environment when you are constantly sitting there waiting for these actions to complete.
It's interesting to hear the issue might not occur in Android Studio. Both VS Code and Android Studio are using the same underlying Dart language server. This suggests it may be specific to the LSP layer - I wonder whether anyone here that sees this is _not_ using LSP (to verify, you can hover over the Dart/Flutter version number in the status bar and see whether it says "DAS" or "LSP").
If anyone is able to repro this on a project that's public, I might have more success reproducing it with a specific project and specific rename.
Oh interesting, yes I can confirm that after 2000+ hrs in Android Studio, I've never seen this once. When in VSCode I would see it multiple times per day.
For context though I am a very heavy user of refactoring, I constantly am making new classes, renaming classes, renaming fields. Coming from C# world I learned to be very aggressive with it, because Visual Studio was so rock solid, and have brought a similar workflow to dart. So I probably rename things 20+ times a day, when I'm actively building things out.
The repro case is hard because I found it to be intermittent, like it wouldn't happen twice on the same var... or at least not regularly. I remember a common flow where I would create a new class (Widget), give it like 2 or 3 fields, try and rename one of the fields, and it just spins forever... this would happen a lot. Other times, on much more complex examples, it would be lightning quick. Drives ya crazy!
This sounds like this issue mentioned above, although it should be fixed in Flutter's beta (and newer) channels. Your logs suggest you're on 2.2.0-10.2, but I can't find exactly what hash that version that is - is it a recent build? Have you seen it recently?
@DanTup That's right, we switched to the latest beta release last week because folks were having such a hard time on 2.0.4 and there was speculation that performance fixes were in the beta releases. The revision we're running is https://github.com/flutter/flutter/tree/b5017bf8de877083978bfeb1874d236c3fc83029 (based on a git rev-parse HEAD).
I had actually noticed a massive improvement after switching to this beta release last week (and so did many other folks), but then this week folks are having serious issues again, and no one can identify anything that's changed between then and now.
Also, the codebase is actually about ~288K lines if we include codegen'd lines. It's about 9 packages (some flutter plugins, some pure dart packages, and one big old app package that binds it all together).
Oh! I think i have an idea as to what's happening, abstractly. I've noticed this a few times: I will be happily coding away taking advantage of the performance fixes in the flutter beta release (as you mentioned) and then upon opening some new file I will find that all my tooltips just say "Loading..." and never load and then cmd+click just never goes anywhere. It's as if the analysis server is either completely frozen or has silently died.
I _think_ that when I do cmd+shift+p and then Dart: Restart Analysis Server it recovers, slowly, and then I'm good to go again. The reason I say "think" that fixes it is that I've also seen that not fix it and the only way to recover was to quit VS Code and reopen the project.
So, I think that you're right and we need to get some logging of what was sent to the server before it became unresponsive.
Also, is there a way to retrieve logs from the server itself? For instance, if the server crashed, where would we find those logs?
Your log only shows traffic to the server, nothing from it - which certainly makes it seem like the server is busy. Are you able to provide a more complete log, that includes the last things from the server (they will contain <== instead of ==>) as it may be useful to understand what the last requests to the server were when it seemed to stop responding.
Hoping this helps. In this case, I restarted the server like @samandmoore mentioned, hit refactor (rename), and it seemed to hang for 8-10 seconds, so I did another refactor (rename) and it worked almost instantly. Not sure if there are any useful logs here, but there is traffic from the server. Perhaps something in the initial traffic to the server is indicative of the problem with the initial hang?
Logs
Dart Code extension: 3.22.0
Flutter extension: 3.22.0 (activated)
App: Visual Studio Code
Version: 1.56.2
Platform: mac
Workspace type: Dart, Flutter
Analyzer type: LSP
Multi-root?: false
Dart SDK:
Loc: /Users/brandontrautmann/fvm/versions/2.2.0-10.2.pre/bin/cache/dart-sdk
Ver: 2.13.0-211.13.beta
Flutter SDK:
Loc: /Users/brandontrautmann/fvm/versions/2.2.0-10.2.pre
Ver: 2.2.0-10.2.pre
HTTP_PROXY: undefined
NO_PROXY: undefined
Logging Categories:
General, Analyzer
Tue May 18 2021 [11:45:32 GMT-0400 (Eastern Daylight Time)] Log file started
[11:45:34 AM] [Analyzer] [Info] ==> Content-Length: 217
[11:45:34 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":5,"method":"textDocument/hover","params":{"textDocument":{"uri":"file:///Users/brandontrautmann/src/mobile/flutter/app/lib/widgets/home/embedded_home.dart"},"position":{"line":43,"character":9}}}
[11:45:35 AM] [Analyzer] [Info] ==> Content-Length: 62
[11:45:35 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":5}}
[11:45:35 AM] [Analyzer] [Info] ==> Content-Length: 292
[11:45:35 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":6,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///Users/brandontrautmann/src/mobile/flutter/app/lib/widgets/home/embedded_home.dart"},"range":{"start":{"line":44,"character":14},"end":{"line":44,"character":14}},"context":{"diagnostics":[]}}}
[11:45:35 AM] [Analyzer] [Info] ==> Content-Length: 62
[11:45:35 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":2}}
[11:45:35 AM] [Analyzer] [Info] ==> Content-Length: 226
[11:45:35 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":7,"method":"textDocument/prepareRename","params":{"textDocument":{"uri":"file:///Users/brandontrautmann/src/mobile/flutter/app/lib/widgets/home/embedded_home.dart"},"position":{"line":44,"character":14}}}
[11:45:39 AM] [Analyzer] [Info] ==> Content-Length: 62
[11:45:39 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":7}}
[11:45:40 AM] [Analyzer] [Info] ==> Content-Length: 292
[11:45:40 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":8,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///Users/brandontrautmann/src/mobile/flutter/app/lib/widgets/home/embedded_home.dart"},"range":{"start":{"line":44,"character":13},"end":{"line":44,"character":13}},"context":{"diagnostics":[]}}}
[11:45:40 AM] [Analyzer] [Info] ==> Content-Length: 62
[11:45:40 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":6}}
[11:45:40 AM] [Analyzer] [Info] ==> Content-Length: 226
[11:45:40 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":9,"method":"textDocument/prepareRename","params":{"textDocument":{"uri":"file:///Users/brandontrautmann/src/mobile/flutter/app/lib/widgets/home/embedded_home.dart"},"position":{"line":44,"character":10}}}
[11:45:40 AM] [Analyzer] [Info] ==> Content-Length: 293
[11:45:40 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":10,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///Users/brandontrautmann/src/mobile/flutter/app/lib/widgets/home/embedded_home.dart"},"range":{"start":{"line":44,"character":10},"end":{"line":44,"character":10}},"context":{"diagnostics":[]}}}
[11:45:40 AM] [Analyzer] [Info] ==> Content-Length: 62
[11:45:40 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":8}}
[11:45:41 AM] [Analyzer] [Info] <== Content-Length: 1057
Content-Type: application/vscode-jsonrpc; charset=utf-8
[11:45:41 AM] [Analyzer] [Info] <== {"id":4,"jsonrpc":"2.0","result":[{"startLine":5,"startCharacter":43,"endLine":16,"endCharacter":0},{"startLine":18,"startCharacter":54,"endLine":54,"endCharacter":0},{"startLine":20,"startCharacter":20,"endLine":25,"endCharacter":2},{"startLine":22,"startCharacter":51,"endLine":24,"endCharacter":5},{"startLine":22,"startCharacter":56,"endLine":24,"endCharacter":4},{"startLine":28,"startCharacter":38,"endLine":41,"endCharacter":2},{"startLine":29,"startCharacter":24,"endLine":40,"endCharacter":4},{"startLine":31,"startCharacter":25,"endLine":39,"endCharacter":6},{"startLine":32,"startCharacter":22,"endLine":38,"endCharacter":8},{"startLine":33,"startCharacter":21,"endLine":36,"endCharacter":10},{"startLine":43,"startCharacter":88,"endLine":53,"endCharacter":2},{"startLine":45,"startCharacter":35,"endLine":51,"endCharacter":4},{"startLine":46,"startCharacter":50,"endLine":47,"endCharacter":89},{"startLine":48,"startCharacter":14,"endLine":49,"endCharacter":49},{"startLine":0,"startCharacter":6,"endLine":3,"endCharacter":48,"kind":"imports"}]}
[11:45:41 AM] [Analyzer] [Info] <== Content-Length: 186
Content-Type: application/vscode-jsonrpc; charset=utf-8
[11:45:41 AM] [Analyzer] [Info] <== {"method":"textDocument/publishDiagnostics","params":{"uri":"file:///Users/brandontrautmann/src/mobile/flutter/app/lib/widgets/home/embedded_home.dart","diagnostics":[]},"jsonrpc":"2.0"}
[11:45:41 AM] [Analyzer] [Info] <== Content-Length: 487
Content-Type: application/vscode-jsonrpc; charset=utf-8
[11:45:41 AM] [Analyzer] [Info] <== {"method":"dart/textDocument/publishClosingLabels","params":{"uri":"file:///Users/brandontrautmann/src/mobile/flutter/app/lib/widgets/home/embedded_home.dart","labels":[{"range":{"start":{"line":29,"character":11},"end":{"line":40,"character":5}},"label":"WillPopScope"},{"range":{"start":{"line":31,"character":13},"end":{"line":39,"character":7}},"label":"AppScaffold"},{"range":{"start":{"line":32,"character":14},"end":{"line":38,"character":9}},"label":"InkWell"}]},"jsonrpc":"2.0"}
[11:45:41 AM] [Analyzer] [Info] <== Content-Length: 4404
Content-Type: application/vscode-jsonrpc; charset=utf-8
[11:45:41 AM] [Analyzer] [Info] <== {"method":"dart/textDocument/publishOutline","params":{"uri":"file:///Users/brandontrautmann/src/mobile/flutter/app/lib/widgets/home/embedded_home.dart","outline":{"element":{"range":{"start":{"line":0,"character":0},"end":{"line":55,"character":0}},"name":"<unit>","kind":"COMPILATION_UNIT"},"range":{"start":{"line":0,"character":0},"end":{"line":55,"character":0}},"codeRange":{"start":{"line":0,"character":0},"end":{"line":55,"character":0}},"children":[{"element":{"range":{"start":{"line":5,"character":6},"end":{"line":5,"character":18}},"name":"EmbeddedHome","kind":"CLASS"},"range":{"start":{"line":5,"character":0},"end":{"line":16,"character":1}},"codeRange":{"start":{"line":5,"character":0},"end":{"line":16,"character":1}},"children":[{"element":{"range":{"start":{"line":6,"character":8},"end":{"line":6,"character":20}},"name":"EmbeddedHome","kind":"CONSTRUCTOR","parameters":"({Key key, @required this.embeddedFeatureManager})"},"range":{"start":{"line":6,"character":2},"end":{"line":10,"character":24}},"codeRange":{"start":{"line":6,"character":2},"end":{"line":10,"character":24}}},{"element":{"range":{"start":{"line":12,"character":31},"end":{"line":12,"character":53}},"name":"embeddedFeatureManager","kind":"FIELD","returnType":"EmbeddedFeatureManager"},"range":{"start":{"line":12,"character":2},"end":{"line":12,"character":54}},"codeRange":{"start":{"line":12,"character":31},"end":{"line":12,"character":53}}},{"element":{"range":{"start":{"line":15,"character":21},"end":{"line":15,"character":32}},"name":"createState","kind":"METHOD","parameters":"()","returnType":"_EmbeddedHomeState"},"range":{"start":{"line":14,"character":2},"end":{"line":15,"character":59}},"codeRange":{"start":{"line":15,"character":2},"end":{"line":15,"character":59}}}]},{"element":{"range":{"start":{"line":18,"character":6},"end":{"line":18,"character":24}},"name":"_EmbeddedHomeState","kind":"CLASS"},"range":{"start":{"line":18,"character":0},"end":{"line":54,"character":1}},"codeR…
[11:45:41 AM] [Analyzer] [Info] <== Content-Length: 4586
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"dart/textDocument/publishFlutterOutline","params":{"uri":"file:///Users/brandontrautmann/src/mobile/flutter/app/lib/widgets/home/embedded_home.dart","outline":{"kind":"DART_ELEMENT","dartElement":{"range":{"start":{"line":0,"character":0},"end":{"line":55,"character":0}},"name":"<unit>","kind":"COMPILATION_UNIT"},"range":{"start":{"line":0,"character":0},"end":{"line":55,"character":0}},"codeRange":{"start":{"line":0,"character":0},"end":{"line":55,"character":0}},"children":[{"kind":"DART_ELEMENT","dartElement":{"range":{"start":{"line":5,"character":6},"end":{"line":5,"character":18}},"name":"EmbeddedHome","kind":"CLASS"},"range":{"start":{"line":5,"character":0},"end":{"line":16,"character":1}},"codeRange":{"start":{"line":5,"character":0},"end":{"line":16,"character":1}},"children":[{"kind":"DART_ELEMENT","dartElement":{"range":{"start":{"line":6,"character":8},"end":{"line":6,"character":20}},"name":"EmbeddedHome","kind":"CONSTRUCTOR","parameters":"({Key key, @required this.embeddedFeatureManager})"},"range":{"start":{"line":6,"character":2},"end":{"line":10,"character":24}},"codeRange":{"start":{"line":6,"character":2},"end":{"line":10,"character":24}}},{"kind":"DART_ELEMENT","dartElement":{"range":{"start":{"line":12,"character":31},"end":{"line":12,"character":53}},"name":"embeddedFeatureManager","kind":"FIELD","returnType":"EmbeddedFeatureManager"},"range":{"start":{"line":12,"character":2},"end":{"line":12,"character":54}},"codeRange":{"start":{"line":12,"character":31},"end":{"line":12,"character":53}}},{"kind":"DART_ELEMENT","dartElement":{"range":{"start":{"line":15,"character":21},"end":{"line":15,"character":32}},"name":"createState","kind":"METHOD","parameters":"()","returnType":"_EmbeddedHomeState"},"range":{"start":{"line":14,"character":2},"end":{"line":15,"character":59}},"codeRange":{"start":{"line":15,"character":2},"end":{"line":15,"character":59}}}…
[11:45:41 AM] [Analyzer] [Info] <== Content-Length: 118
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"method":"$/progress","params":{"token":"ANALYZING","value":{"kind":"begin","title":"Analyzing…"}},"jsonrpc":"2.0"}Content-Length: 1968
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"id":1,"jsonrpc":"2.0","result":[{"name":"EmbeddedHome","kind":5,"deprecated":false,"range":{"start":{"line":5,"character":0},"end":{"line":16,"character":1}},"selectionRange":{"start":{"line":5,"character":6},"end":{"line":5,"character":18}},"children":[{"name":"EmbeddedHome","detail":"({Key key, @required this.embeddedFeatureManager})","kind":9,"deprecated":false,"range":{"start":{"line":6,"character":2},"end":{"line":10,"character":24}},"selectionRange":{"start":{"line":6,"character":8},"end":{"line":6,"character":20}}},{"name":"embeddedFeatureManager","kind":8,"deprecated":false,"range":{"start":{"line":12,"character":31},"end":{"line":12,"character":53}},"selectionRange":{"start":{"line":12,"character":31},"end":{"line":12,"character":53}}},{"name":"createState","detail":"()","kind":6,"deprecated":false,"range":{"start":{"line":15,"character":2},"end":{"line":15,"character":59}},"selectionRange":{"start":{"line":15,"character":21},"end":{"line":15,"character":32}}}]},{"name":"_EmbeddedHomeState","kind":5,"deprecated":false,"range":{"start":{"line":18,"character":0},"end":{"line":54,"character":1}},"selectionRange":{"start":{"line":18,"character":6},"end":{"line":18,"character":24}},"children":[{"name":"initState","detail":"()","kind":6,"deprecated":false,"range":{"start":{"line":20,"character":2},"end":{"line":25,"character":3}},"selectionRange":{"start":{"line":20,"character":7},"end":{"line":20,"character":16}}},{"name":"build","detail":"(BuildContext context)","kind":6,"deprecated":false,"range":{"start":{"line":28,"character":2},"end":{"line":41,"character":3}},"selectionRange":{"start":{"line":28,"character":9},"end":{"line":28,"character":14}}},{"name":"_onFeatureStarted","detai…
[11:45:41 AM] [Analyzer] [Info] <== Content-Length: 1278
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"id":3,"jsonrpc":"2.0","result":{"data":[0,0,6,1,0,0,7,43,14,0,1,0,6,1,0,0,7,31,14,0,1,0,6,1,0,0,7,32,14,0,1,0,6,1,0,0,7,40,14,0,2,0,5,1,0,0,6,12,2,0,0,13,7,1,0,0,8,14,2,0,1,8,12,2,0,1,4,3,2,0,0,4,3,5,2,1,4,1,0,0,0,1,8,9,0,0,14,22,4,0,1,15,22,5,0,0,26,4,1,0,1,8,5,1,0,0,6,3,5,16,0,5,3,5,0,2,2,5,1,0,0,6,22,2,0,0,23,22,4,2,2,2,1,0,0,0,1,8,9,0,1,2,18,2,0,0,19,11,10,2,0,17,18,2,0,3,0,5,1,0,0,6,18,2,0,0,19,7,1,0,0,8,5,2,0,0,6,12,2,0,1,2,1,0,0,0,1,8,9,0,1,2,4,1,0,0,5,9,10,2,1,10,9,10,0,1,4,16,2,0,0,17,8,9,4,0,9,20,10,0,0,22,1,5,2,1,6,6,9,0,0,7,22,9,0,0,23,4,10,0,0,5,17,10,0,4,2,1,0,0,0,1,8,9,0,1,2,6,2,0,0,7,5,10,2,0,6,12,2,0,0,13,7,5,2,1,4,6,1,8,0,7,12,2,0,1,6,9,5,16,0,14,5,1,8,0,9,5,12,0,1,6,5,5,16,0,7,11,2,0,1,8,4,5,16,0,6,7,2,0,1,10,5,5,16,1,12,5,15,0,0,6,45,14,0,1,12,6,9,0,0,7,22,9,0,0,23,9,10,0,2,10,5,5,16,0,7,5,1,0,0,6,8,2,0,0,9,6,2,0,6,2,6,2,0,0,7,4,1,0,0,6,17,10,2,0,18,26,2,0,0,27,19,5,2,0,21,5,1,8,1,4,5,1,0,0,6,5,4,2,0,8,19,5,0,0,20,7,9,0,0,8,7,10,0,1,4,5,1,0,0,6,6,4,2,0,9,5,1,8,0,9,5,1,8,1,6,2,1,8,0,4,19,5,0,0,20,17,9,0,1,8,6,1,8,0,7,9,2,0,0,10,2,10,4,0,3,7,9,0,0,9,18,10,0,0,19,5,4,0,0,8,5,5,2,0,10,5,5,0,0,6,7,9,0,1,8,4,1,8,1,8,6,1,8,0,7,9,2,0,0,10,2,10,4,0,3,7,9,0,0,9,4,10,0,0,5,5,4,0,3,4,6,9,0,0,7,22,9,0,0,23,11,10,0,0,12,19,5,0,0,20,7,9,0,0,9,6,4,0]}}Content-Length: 82
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"id":2,"jsonrpc":"2.0","error":{"code":-32800,"message":"Request was cancelled"}}Content-Length: 82
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"id":5,"jsonrpc":"2.0","error":{"code":-32800,"message":"Request was cancelled"}}Content-Length: 82
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"id":7,"jsonrpc":"2.0","error":{"code":-32800,"message":"Request was cancelled"}}Content-Length: 135
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"id":9,"jsonrpc":"2.0","result":{"range":{"start":{"line":44,"character":…
[11:45:41 AM] [Analyzer] [Info] <== {"id":6,"jsonrpc":"2.0","error":{"code":-32800,"message":"Request was cancelled"}}Content-Length: 82
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"id":8,"jsonrpc":"2.0","error":{"code":-32800,"message":"Request was cancelled"}}Content-Length: 1023
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"id":10,"jsonrpc":"2.0","result":[{"title":"Sort Members","kind":"source.sortMembers","command":{"title":"Sort Members","command":"edit.sortMembers","arguments":["/Users/brandontrautmann/src/mobile/flutter/app/lib/widgets/home/embedded_home.dart"]}},{"title":"Organize Imports","kind":"source.organizeImports","command":{"title":"Organize Imports","command":"edit.organizeImports","arguments":["/Users/brandontrautmann/src/mobile/flutter/app/lib/widgets/home/embedded_home.dart"]}},{"title":"Add type annotation","kind":"refactor.add.typeAnnotation","diagnostics":[],"edit":{"documentChanges":[{"textDocument":{"version":3,"uri":"file:///Users/brandontrautmann/src/mobile/flutter/app/lib/widgets/home/embedded_home.dart"},"edits":[{"range":{"start":{"line":44,"character":10},"end":{"line":44,"character":10}},"newText":"Route<FeatureResult> "},{"range":{"start":{"line":0,"character":51},"end":{"line":0,"character":51}},"newText":"\nimport 'package:betterment_flutter/shared/feature_result/feature_result.dart';"}]}]}}]}
Tue May 18 2021 [11:45:44 GMT-0400 (Eastern Daylight Time)] Log file ended
Most helpful comment
This week I found a performance bug in the LSP server that may be related. The issue was a combination of a few things:
These things together can result in the server doing unnecessary work right when you'd want it to be doing other things (such as servicing a Ctrl+Click, or handling a file you've just opened).
The fix for that has landed in Flutter's master branch. I wonder if anyone seeing these issues on is able to test whether temporarily switching to master seems to resolve this? (note: the first analysis of a project after changing branch _will_ be slower, as the Flutter SDKs are seen for the first time). This appears to have helped for at least one user.